{"version":3,"file":"js/exercise-718134bd.js","mappings":"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EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,KAAM,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,KAAM,GAAI,MAAO,GAAI,KAAM,GAAI,GAAI,EAAG,IAAK,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,MAAO,GAAI,GAAI,EAAG,GAAI,KAAM,IAAK,EAAG,GAAI,EAAG,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,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","sources":["webpack://sql_habit/./node_modules/ace-builds/src-noconflict/ace.js","webpack://sql_habit/./node_modules/ace-builds/src-noconflict/ext-language_tools.js","webpack://sql_habit/./node_modules/ace-builds/src-noconflict/mode-pgsql.js","webpack://sql_habit/./node_modules/ace-builds/src-noconflict/theme-sqlserver.js","webpack://sql_habit/./node_modules/axios/index.js","webpack://sql_habit/./node_modules/axios/lib/adapters/xhr.js","webpack://sql_habit/./node_modules/axios/lib/axios.js","webpack://sql_habit/./node_modules/axios/lib/cancel/Cancel.js","webpack://sql_habit/./node_modules/axios/lib/cancel/CancelToken.js","webpack://sql_habit/./node_modules/axios/lib/cancel/isCancel.js","webpack://sql_habit/./node_modules/axios/lib/core/Axios.js","webpack://sql_habit/./node_modules/axios/lib/core/InterceptorManager.js","webpack://sql_habit/./node_modules/axios/lib/core/buildFullPath.js","webpack://sql_habit/./node_modules/axios/lib/core/createError.js","webpack://sql_habit/./node_modules/axios/lib/core/dispatchRequest.js","webpack://sql_habit/./node_modules/axios/lib/core/enhanceError.js","webpack://sql_habit/./node_modules/axios/lib/core/mergeConfig.js","webpack://sql_habit/./node_modules/axios/lib/core/settle.js","webpack://sql_habit/./node_modules/axios/lib/core/transformData.js","webpack://sql_habit/./node_modules/axios/lib/defaults.js","webpack://sql_habit/./node_modules/axios/lib/env/data.js","webpack://sql_habit/./node_modules/axios/lib/helpers/bind.js","webpack://sql_habit/./node_modules/axios/lib/helpers/buildURL.js","webpack://sql_habit/./node_modules/axios/lib/helpers/combineURLs.js","webpack://sql_habit/./node_modules/axios/lib/helpers/cookies.js","webpack://sql_habit/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://sql_habit/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://sql_habit/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://sql_habit/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://sql_habit/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://sql_habit/./node_modules/axios/lib/helpers/spread.js","webpack://sql_habit/./node_modules/axios/lib/helpers/validator.js","webpack://sql_habit/./node_modules/axios/lib/utils.js","webpack://sql_habit/./app/assets/images/font_awesome/bookmark-light.svg","webpack://sql_habit/./app/assets/images/font_awesome/bookmark-solid.svg","webpack://sql_habit/./app/assets/images/font_awesome/chart-bar-light.svg","webpack://sql_habit/./app/assets/images/font_awesome/chart-line-light.svg","webpack://sql_habit/./app/assets/images/font_awesome/chart-pie-light.svg","webpack://sql_habit/./app/assets/images/font_awesome/chevron-down-light.svg","webpack://sql_habit/./app/assets/images/font_awesome/code-light.svg","webpack://sql_habit/./app/assets/images/font_awesome/database-light.svg","webpack://sql_habit/./app/assets/images/font_awesome/lock-alt-light.svg","webpack://sql_habit/./app/assets/images/font_awesome/long-arrow-left-light.svg","webpack://sql_habit/./app/assets/images/font_awesome/redo-light.svg","webpack://sql_habit/./app/assets/images/font_awesome/star-light.svg","webpack://sql_habit/./app/assets/images/font_awesome/star-solid.svg","webpack://sql_habit/./app/assets/images/font_awesome/table-light.svg","webpack://sql_habit/./app/assets/images/font_awesome/x-light.svg","webpack://sql_habit/./app/assets/images/svgs/header_logo.svg","webpack://sql_habit/./app/assets/images/svgs/mobile_header_logo.svg","webpack://sql_habit/./node_modules/html2canvas/dist/html2canvas.js","webpack://sql_habit/./node_modules/linkify-it/index.js","webpack://sql_habit/./node_modules/linkify-it/lib/re.js","webpack://sql_habit/./node_modules/lodash.debounce/index.js","webpack://sql_habit/./node_modules/markdown-it-attrs/index.js","webpack://sql_habit/./node_modules/markdown-it-attrs/patterns.js","webpack://sql_habit/./node_modules/markdown-it-attrs/utils.js","webpack://sql_habit/./node_modules/markdown-it-emoji/bare.js","webpack://sql_habit/./node_modules/markdown-it-emoji/index.js","webpack://sql_habit/./node_modules/markdown-it-emoji/lib/data/shortcuts.js","webpack://sql_habit/./node_modules/markdown-it-emoji/lib/normalize_opts.js","webpack://sql_habit/./node_modules/markdown-it-emoji/lib/render.js","webpack://sql_habit/./node_modules/markdown-it-emoji/lib/replace.js","webpack://sql_habit/./node_modules/markdown-it/index.js","webpack://sql_habit/./node_modules/markdown-it/lib/common/entities.js","webpack://sql_habit/./node_modules/markdown-it/lib/common/html_blocks.js","webpack://sql_habit/./node_modules/markdown-it/lib/common/html_re.js","webpack://sql_habit/./node_modules/markdown-it/lib/common/utils.js","webpack://sql_habit/./node_modules/markdown-it/lib/helpers/index.js","webpack://sql_habit/./node_modules/markdown-it/lib/helpers/parse_link_destination.js","webpack://sql_habit/./node_modules/markdown-it/lib/helpers/parse_link_label.js","webpack://sql_habit/./node_modules/markdown-it/lib/helpers/parse_link_title.js","webpack://sql_habit/./node_modules/markdown-it/lib/index.js","webpack://sql_habit/./node_modules/markdown-it/lib/parser_block.js","webpack://sql_habit/./node_modules/markdown-it/lib/parser_core.js","webpack://sql_habit/./node_modules/markdown-it/lib/parser_inline.js","webpack://sql_habit/./node_modules/markdown-it/lib/presets/commonmark.js","webpack://sql_habit/./node_modules/markdown-it/lib/presets/default.js","webpack://sql_habit/./node_modules/markdown-it/lib/presets/zero.js","webpack://sql_habit/./node_modules/markdown-it/lib/renderer.js","webpack://sql_habit/./node_modules/markdown-it/lib/ruler.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_block/blockquote.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_block/code.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_block/fence.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_block/heading.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_block/hr.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_block/html_block.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_block/lheading.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_block/list.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_block/paragraph.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_block/reference.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_block/state_block.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_block/table.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_core/block.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_core/inline.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_core/linkify.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_core/normalize.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_core/replacements.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_core/smartquotes.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_core/state_core.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_inline/autolink.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_inline/backticks.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_inline/balance_pairs.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_inline/emphasis.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_inline/entity.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_inline/escape.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_inline/html_inline.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_inline/image.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_inline/link.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_inline/newline.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_inline/state_inline.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_inline/strikethrough.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_inline/text.js","webpack://sql_habit/./node_modules/markdown-it/lib/rules_inline/text_collapse.js","webpack://sql_habit/./node_modules/markdown-it/lib/token.js","webpack://sql_habit/./node_modules/mdurl/decode.js","webpack://sql_habit/./node_modules/mdurl/encode.js","webpack://sql_habit/./node_modules/mdurl/format.js","webpack://sql_habit/./node_modules/mdurl/index.js","webpack://sql_habit/./node_modules/mdurl/parse.js","webpack://sql_habit/./node_modules/punycode/punycode.es6.js","webpack://sql_habit/./node_modules/uc.micro/categories/Cc/regex.js","webpack://sql_habit/./node_modules/uc.micro/categories/Cf/regex.js","webpack://sql_habit/./node_modules/uc.micro/categories/P/regex.js","webpack://sql_habit/./node_modules/uc.micro/categories/Z/regex.js","webpack://sql_habit/./node_modules/uc.micro/index.js","webpack://sql_habit/./node_modules/uc.micro/properties/Any/regex.js","webpack://sql_habit/./node_modules/vue-toast-notification/dist/index.js","webpack://sql_habit/./node_modules/highlight.js/lib/core.js","webpack://sql_habit/webpack/bootstrap","webpack://sql_habit/webpack/runtime/amd define","webpack://sql_habit/webpack/runtime/compat get default export","webpack://sql_habit/webpack/runtime/define property getters","webpack://sql_habit/webpack/runtime/global","webpack://sql_habit/webpack/runtime/hasOwnProperty shorthand","webpack://sql_habit/webpack/runtime/make namespace object","webpack://sql_habit/webpack/runtime/node module decorator","webpack://sql_habit/webpack/runtime/publicPath","webpack://sql_habit/./node_modules/vue/dist/vue.esm.js","webpack://sql_habit/./node_modules/vue-i18n/dist/vue-i18n.esm.js","webpack://sql_habit/./node_modules/twemoji/dist/twemoji.esm.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/version.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/debug-build.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/worldwide.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/logger.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/is.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/browser.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/string.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/object.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/misc.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/debug-build.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/carrier.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/propagationContext.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/time.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/session.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/utils/spanOnScope.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/scope.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/asyncContext/stackStrategy.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/defaultScopes.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/asyncContext/index.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/currentScopes.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/integration.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/integrations/inboundfilters.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/integrations/functiontostring.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/stacktrace.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/integrations/dedupe.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/sdk.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/constants.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/normalize.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/memo.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/syncpromise.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/eventProcessors.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/baggage.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/semanticAttributes.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/utils/hasTracingEnabled.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/tracing.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/metrics/metric-summary.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/tracing/spanstatus.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/utils/spanUtils.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/tracing/dynamicSamplingContext.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/utils/applyScopeDataToEvent.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/utils/prepareEvent.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/exports.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/dsn.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/api.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/supports.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/instrument/handlers.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/vendor/supportsHistory.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/types.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/instrument/history.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/envelope.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/error.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/utils/parseSampleRate.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/baseclient.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/envelope.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/clientreport.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/debug-build.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/eventbuilder.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/helpers.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/userfeedback.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/client.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/utils/sdkMetadata.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/env.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/instrument/dom.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/instrument/xhr.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/breadcrumbs.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/instrument/console.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/instrument/fetch.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/severity.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/breadcrumb-log-level.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/url.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/integrations/breadcrumbs.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/integrations/browserapierrors.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/instrument/globalError.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/instrument/globalUnhandledRejection.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/integrations/globalhandlers.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/integrations/httpcontext.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/aggregate-errors.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/integrations/linkederrors.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/stack-parsers.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/debug-build.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/getNativeImplementation.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/promisebuffer.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/ratelimit.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/transports/base.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/transports/fetch.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/sdk.js","webpack://sql_habit/./node_modules/@sentry/vue/build/esm/constants.js","webpack://sql_habit/./node_modules/@sentry/vue/build/esm/debug-build.js","webpack://sql_habit/./node_modules/@sentry/vue/build/esm/vendor/components.js","webpack://sql_habit/./node_modules/@sentry/vue/build/esm/errorhandler.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/utils/handleCallbackErrors.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/tracing/sentryNonRecordingSpan.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/tracing/measurement.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/tracing/utils.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/tracing/sentrySpan.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/tracing/logSpans.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/tracing/trace.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/tracing/sampling.js","webpack://sql_habit/./node_modules/@sentry/vue/build/esm/tracing.js","webpack://sql_habit/./node_modules/@sentry/vue/build/esm/integration.js","webpack://sql_habit/./app/javascript/modules/vue_twemoji.js","webpack://sql_habit/./node_modules/@sentry/vue/build/esm/sdk.js","webpack://sql_habit/./node_modules/vuex/dist/vuex.esm.js","webpack://sql_habit/./app/javascript/store/user/state.js","webpack://sql_habit/./app/javascript/store/user/getters.js","webpack://sql_habit/./app/javascript/store/user/mutations.js","webpack://sql_habit/./app/javascript/store/user/actions.js","webpack://sql_habit/./app/javascript/store/user.js","webpack://sql_habit/./app/javascript/store/chart/state.js","webpack://sql_habit/./app/javascript/store/chart/tooltip.js","webpack://sql_habit/./app/javascript/store/chart/helpers.js","webpack://sql_habit/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://sql_habit/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://sql_habit/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://sql_habit/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://sql_habit/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://sql_habit/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://sql_habit/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://sql_habit/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://sql_habit/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://sql_habit/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://sql_habit/./app/javascript/store/chart/getters.js","webpack://sql_habit/./app/javascript/store/chart/mutations.js","webpack://sql_habit/./app/javascript/store/chart/actions.js","webpack://sql_habit/./app/javascript/store/chart.js","webpack://sql_habit/./app/javascript/store/lesson/state.js","webpack://sql_habit/./app/javascript/store/lesson/getters.js","webpack://sql_habit/./app/javascript/store/lesson/mutations.js","webpack://sql_habit/./app/javascript/store/lesson/actions.js","webpack://sql_habit/./app/javascript/store/lesson.js","webpack://sql_habit/./app/javascript/store/exercise/state.js","webpack://sql_habit/./app/javascript/store/exercise/getters.js","webpack://sql_habit/./app/javascript/store/exercise/mutations.js","webpack://sql_habit/./app/javascript/store/exercise/actions.js","webpack://sql_habit/./app/javascript/store/exercise.js","webpack://sql_habit/./app/javascript/store/index.js","webpack://sql_habit/./node_modules/highlight.js/es/core.js","webpack://sql_habit/./app/javascript/modules/code-highlight.js","webpack://sql_habit/./node_modules/highlight.js/es/languages/pgsql.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/tracing/errors.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/tracing/hubextensions.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/integrations/captureconsole.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/feedback.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/integrations/debug.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/integrations/extraerrordata.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/getCurrentHubShim.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/transports/multiplexed.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/metadata.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/integrations/metadata.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/utils/parameterize.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/path.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/integrations/rewriteframes.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/integrations/sessiontiming.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/integrations/third-party-errors-filter.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/integrations/zoderrors.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/utils/lazyLoadIntegration.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/integrations/reportingobserver.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/utils/isSentryRequestUrl.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/integrations/httpclient.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/integrations/contextlines.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/buildPolyfills/_optionalChain.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/node.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/isBrowser.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/bindReporter.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/getNavigationEntry.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/getActivationStart.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/initMetric.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/generateUniqueID.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/observe.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/onHidden.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/runOnce.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/getVisibilityWatcher.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/whenActivated.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/onFCP.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/getCLS.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/getFID.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/polyfills/interactionCountPolyfill.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/getINP.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/getLCP.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/onTTFB.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/instrument.js","webpack://sql_habit/./node_modules/@sentry-internal/replay/build/npm/esm/index.js","webpack://sql_habit/./node_modules/@sentry/utils/build/esm/buildPolyfills/_nullishCoalesce.js","webpack://sql_habit/./node_modules/@sentry-internal/replay-canvas/build/npm/esm/index.js","webpack://sql_habit/./node_modules/@sentry-internal/feedback/build/npm/esm/index.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/feedbackAsync.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/feedbackSync.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/metrics/constants.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/metrics/exports.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/metrics/utils.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/metrics/envelope.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/metrics/instance.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/metrics/browser-aggregator.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/metrics.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/fetch.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/tracing/request.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/utils.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/cls.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/browserMetrics.js","webpack://sql_habit/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/inp.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/tracing/idleSpan.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/tracing/browserTracingIntegration.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/tracing/backgroundtab.js","webpack://sql_habit/./node_modules/@sentry/core/build/esm/transports/offline.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/transports/offline.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/profiling/utils.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/profiling/startProfileForSpan.js","webpack://sql_habit/./node_modules/@sentry/browser/build/npm/esm/profiling/integration.js","webpack://sql_habit/./app/javascript/modules/sentry.js","webpack://sql_habit/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://sql_habit/./app/javascript/components/query-result.vue?f9af","webpack://sql_habit/app/javascript/components/query-result.vue","webpack://sql_habit/./app/javascript/components/query-result.vue","webpack://sql_habit/./app/javascript/modules/log.js","webpack://sql_habit/./app/javascript/modules/notify.js","webpack://sql_habit/app/javascript/components/star-query-icon.vue","webpack://sql_habit/./app/javascript/components/star-query-icon.vue?720f","webpack://sql_habit/./app/javascript/components/star-query-icon.vue?0c75","webpack://sql_habit/./app/javascript/components/star-query-icon.vue","webpack://sql_habit/./app/javascript/controllers/star-query-icon.js","webpack://sql_habit/./app/javascript/modules/ace-pgsql-keywords.js","webpack://sql_habit/./app/javascript/components/query-editor.js","webpack://sql_habit/./app/javascript/components/chart/sql-editor.vue","webpack://sql_habit/./app/javascript/components/shared/query-result.vue?685f","webpack://sql_habit/app/javascript/components/shared/query-result.vue","webpack://sql_habit/./app/javascript/components/shared/query-result.vue","webpack://sql_habit/./app/javascript/components/shared/query-error.vue?11b0","webpack://sql_habit/app/javascript/components/shared/query-error.vue","webpack://sql_habit/./app/javascript/components/shared/query-error.vue","webpack://sql_habit/./app/javascript/components/shared/query-result-wrapper.vue?2419","webpack://sql_habit/app/javascript/components/shared/query-result-wrapper.vue","webpack://sql_habit/./app/javascript/components/shared/query-result-wrapper.vue","webpack://sql_habit/./node_modules/chart.js/dist/chunks/helpers.segment.mjs","webpack://sql_habit/./node_modules/chart.js/dist/chart.mjs","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://sql_habit/./node_modules/date-fns/esm/toDate/index.js","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://sql_habit/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://sql_habit/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/assign/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://sql_habit/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/Setter.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/Parser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","webpack://sql_habit/./node_modules/date-fns/esm/constants/index.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/constants.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/utils.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack://sql_habit/./node_modules/date-fns/esm/parse/index.js","webpack://sql_habit/./node_modules/date-fns/esm/parseISO/index.js","webpack://sql_habit/./node_modules/date-fns/esm/isValid/index.js","webpack://sql_habit/./node_modules/date-fns/esm/isDate/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://sql_habit/./node_modules/date-fns/esm/format/index.js","webpack://sql_habit/./node_modules/date-fns/esm/addDays/index.js","webpack://sql_habit/./node_modules/date-fns/esm/addMonths/index.js","webpack://sql_habit/./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack://sql_habit/./node_modules/date-fns/esm/_lib/roundingMethods/index.js","webpack://sql_habit/./node_modules/date-fns/esm/startOfDay/index.js","webpack://sql_habit/./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack://sql_habit/./node_modules/date-fns/esm/differenceInDays/index.js","webpack://sql_habit/./node_modules/date-fns/esm/compareAsc/index.js","webpack://sql_habit/./node_modules/date-fns/esm/endOfDay/index.js","webpack://sql_habit/./node_modules/date-fns/esm/endOfMonth/index.js","webpack://sql_habit/./node_modules/date-fns/esm/differenceInMonths/index.js","webpack://sql_habit/./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack://sql_habit/./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack://sql_habit/./node_modules/date-fns/esm/differenceInYears/index.js","webpack://sql_habit/./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack://sql_habit/./node_modules/date-fns/esm/startOfWeek/index.js","webpack://sql_habit/./node_modules/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js","webpack://sql_habit/./node_modules/date-fns/esm/addSeconds/index.js","webpack://sql_habit/./node_modules/date-fns/esm/addMinutes/index.js","webpack://sql_habit/./node_modules/date-fns/esm/addHours/index.js","webpack://sql_habit/./node_modules/date-fns/esm/addWeeks/index.js","webpack://sql_habit/./node_modules/date-fns/esm/addQuarters/index.js","webpack://sql_habit/./node_modules/date-fns/esm/addYears/index.js","webpack://sql_habit/./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack://sql_habit/./node_modules/date-fns/esm/differenceInMinutes/index.js","webpack://sql_habit/./node_modules/date-fns/esm/differenceInHours/index.js","webpack://sql_habit/./node_modules/date-fns/esm/differenceInWeeks/index.js","webpack://sql_habit/./node_modules/date-fns/esm/differenceInQuarters/index.js","webpack://sql_habit/./node_modules/date-fns/esm/startOfSecond/index.js","webpack://sql_habit/./node_modules/date-fns/esm/startOfMinute/index.js","webpack://sql_habit/./node_modules/date-fns/esm/startOfHour/index.js","webpack://sql_habit/./node_modules/date-fns/esm/startOfMonth/index.js","webpack://sql_habit/./node_modules/date-fns/esm/startOfQuarter/index.js","webpack://sql_habit/./node_modules/date-fns/esm/startOfYear/index.js","webpack://sql_habit/./node_modules/date-fns/esm/endOfSecond/index.js","webpack://sql_habit/./node_modules/date-fns/esm/endOfMinute/index.js","webpack://sql_habit/./node_modules/date-fns/esm/endOfHour/index.js","webpack://sql_habit/./node_modules/date-fns/esm/endOfWeek/index.js","webpack://sql_habit/./node_modules/date-fns/esm/endOfQuarter/index.js","webpack://sql_habit/./node_modules/date-fns/esm/endOfYear/index.js","webpack://sql_habit/./app/javascript/components/chart/charts/download-image.js","webpack://sql_habit/app/javascript/components/chart/charts/bar-chart.vue","webpack://sql_habit/./app/javascript/components/chart/charts/bar-chart.vue?611b","webpack://sql_habit/./app/javascript/components/chart/charts/bar-chart.vue","webpack://sql_habit/app/javascript/components/chart/charts/line-chart.vue","webpack://sql_habit/./app/javascript/components/chart/charts/line-chart.vue?2cc2","webpack://sql_habit/./app/javascript/components/chart/charts/line-chart.vue","webpack://sql_habit/app/javascript/components/chart/charts/pie-chart.vue","webpack://sql_habit/./app/javascript/components/chart/charts/pie-chart.vue?5e01","webpack://sql_habit/./app/javascript/components/chart/charts/pie-chart.vue?e247","webpack://sql_habit/./app/javascript/components/chart/charts/pie-chart.vue","webpack://sql_habit/app/javascript/components/chart/charts/table-chart.vue","webpack://sql_habit/./app/javascript/components/chart/charts/table-chart.vue?cc19","webpack://sql_habit/./app/javascript/components/chart/charts/table-chart.vue?8ef0","webpack://sql_habit/./app/javascript/components/chart/charts/table-chart.vue","webpack://sql_habit/./app/javascript/components/chart/charts/chart-errors.vue?8bbd","webpack://sql_habit/app/javascript/components/chart/charts/chart-errors.vue","webpack://sql_habit/./app/javascript/components/chart/charts/chart-errors.vue","webpack://sql_habit/./app/javascript/components/chart/chart-editor.vue?449c","webpack://sql_habit/app/javascript/components/chart/chart-editor.vue","webpack://sql_habit/./app/javascript/components/chart/chart-editor.vue","webpack://sql_habit/app/javascript/components/select-dropdown.vue","webpack://sql_habit/./app/javascript/helpers/bem-class.js","webpack://sql_habit/./app/javascript/components/select-dropdown.vue?e933","webpack://sql_habit/./app/javascript/components/select-dropdown.vue?11c9","webpack://sql_habit/./app/javascript/components/select-dropdown.vue","webpack://sql_habit/./app/javascript/components/shared/text-input.vue?86d2","webpack://sql_habit/app/javascript/components/shared/text-input.vue","webpack://sql_habit/./app/javascript/components/shared/text-input.vue","webpack://sql_habit/./app/javascript/components/shared/checkbox.vue?50fb","webpack://sql_habit/app/javascript/components/shared/checkbox.vue","webpack://sql_habit/./app/javascript/components/shared/checkbox.vue","webpack://sql_habit/./app/javascript/components/shared/radio-button.vue?55e5","webpack://sql_habit/app/javascript/components/shared/radio-button.vue","webpack://sql_habit/./app/javascript/components/shared/radio-button.vue","webpack://sql_habit/app/javascript/components/chart/chart-config.vue","webpack://sql_habit/./app/javascript/components/chart/chart-config.vue?0a3f","webpack://sql_habit/./app/javascript/components/chart/chart-config.vue?5fd0","webpack://sql_habit/./app/javascript/components/chart/chart-config.vue","webpack://sql_habit/./app/javascript/components/chart/header.vue?c933","webpack://sql_habit/app/javascript/components/chart/header.vue","webpack://sql_habit/./app/javascript/components/chart/header.vue","webpack://sql_habit/./app/javascript/components/schema-visualizer-button.vue?9e47","webpack://sql_habit/app/javascript/components/schema-visualizer-button.vue","webpack://sql_habit/./app/javascript/components/schema-visualizer-button.vue","webpack://sql_habit/app/javascript/components/chart/dataset-documentation.vue","webpack://sql_habit/./app/javascript/components/chart/dataset-documentation.vue?5549","webpack://sql_habit/./app/javascript/components/chart/dataset-documentation.vue?f3e2","webpack://sql_habit/./app/javascript/components/chart/dataset-documentation.vue","webpack://sql_habit/app/javascript/components/chart/sql-reference.vue","webpack://sql_habit/./app/javascript/components/chart/sql-reference.vue?fa7c","webpack://sql_habit/./app/javascript/components/chart/sql-reference.vue?14b1","webpack://sql_habit/./app/javascript/components/chart/sql-reference.vue","webpack://sql_habit/./app/javascript/components/chart/sidebar-menu.vue?5fd8","webpack://sql_habit/app/javascript/components/chart/sidebar-menu.vue","webpack://sql_habit/./app/javascript/components/chart/sidebar-menu.vue","webpack://sql_habit/app/javascript/components/chart/sql-editor.vue","webpack://sql_habit/./app/javascript/components/chart/sql-editor.vue?ce99","webpack://sql_habit/./app/javascript/components/chart/sql-editor.vue?84ae","webpack://sql_habit/./app/javascript/components/tabs-menu-erb.js","webpack://sql_habit/./app/javascript/components/sql-reference.vue","webpack://sql_habit/app/javascript/components/sql-reference.vue","webpack://sql_habit/./app/javascript/components/sql-reference.vue?0a34","webpack://sql_habit/./app/javascript/components/sql-reference.vue?bd56","webpack://sql_habit/./app/javascript/controllers/sql-reference.js","webpack://sql_habit/./app/javascript/controllers/select-dropdown.js","webpack://sql_habit/./app/javascript/components/database-documentation.vue","webpack://sql_habit/app/javascript/components/database-documentation.vue","webpack://sql_habit/./app/javascript/components/database-documentation.vue?cf86","webpack://sql_habit/./app/javascript/components/database-documentation.vue?eb68","webpack://sql_habit/./app/javascript/controllers/db-doc.js","webpack://sql_habit/./app/javascript/modules/track-event.js","webpack://sql_habit/app/javascript/components/nps-survey.vue","webpack://sql_habit/./app/javascript/components/nps-survey.vue?8029","webpack://sql_habit/./app/javascript/components/nps-survey.vue?da5b","webpack://sql_habit/./app/javascript/components/nps-survey.vue","webpack://sql_habit/./app/javascript/modules/get-window-dimensions.js","webpack://sql_habit/./app/javascript/modules/cookie.js","webpack://sql_habit/./app/javascript/controllers/nps-survey.js","webpack://sql_habit/./app/javascript/components/bookmark.vue","webpack://sql_habit/app/javascript/components/bookmark.vue","webpack://sql_habit/./app/javascript/components/bookmark.vue?bfb0","webpack://sql_habit/./app/javascript/components/bookmark.vue?8305"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && require.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar require = function(module, callback) {\n var packagedModule = _require(\"\", module, callback);\n if (packagedModule == undefined && require.original)\n return require.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _require(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.require || !root.require.packaged) {\n require.original = root.require;\n root.require = require;\n root.require.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/es6-shim\",[\"require\",\"exports\",\"module\"], function(require, exports, module){function defineProp(obj, name, val) {\n Object.defineProperty(obj, name, {\n value: val,\n enumerable: false,\n writable: true,\n configurable: true\n });\n}\nif (!String.prototype.startsWith) {\n defineProp(String.prototype, \"startsWith\", function (searchString, position) {\n position = position || 0;\n return this.lastIndexOf(searchString, position) === position;\n });\n}\nif (!String.prototype.endsWith) {\n defineProp(String.prototype, \"endsWith\", function (searchString, position) {\n var subjectString = this;\n if (position === undefined || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n });\n}\nif (!String.prototype.repeat) {\n defineProp(String.prototype, \"repeat\", function (count) {\n var result = \"\";\n var string = this;\n while (count > 0) {\n if (count & 1)\n result += string;\n if ((count >>= 1))\n string += string;\n }\n return result;\n });\n}\nif (!String.prototype.includes) {\n defineProp(String.prototype, \"includes\", function (str, position) {\n return this.indexOf(str, position) != -1;\n });\n}\nif (!Object.assign) {\n Object.assign = function (target) {\n if (target === undefined || target === null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n Object.keys(source).forEach(function (key) {\n output[key] = source[key];\n });\n }\n }\n return output;\n };\n}\nif (!Object.values) {\n Object.values = function (o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n };\n}\nif (!Array.prototype.find) {\n defineProp(Array.prototype, \"find\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return kValue;\n }\n }\n });\n}\nif (!Array.prototype.findIndex) {\n defineProp(Array.prototype, \"findIndex\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return k;\n }\n }\n });\n}\nif (!Array.prototype.includes) {\n defineProp(Array.prototype, \"includes\", function (item, position) {\n return this.indexOf(item, position) != -1;\n });\n}\nif (!Array.prototype.fill) {\n defineProp(Array.prototype, \"fill\", function (value) {\n var O = this;\n var len = O.length >>> 0;\n var start = arguments[1];\n var relativeStart = start >> 0;\n var k = relativeStart < 0\n ? Math.max(len + relativeStart, 0)\n : Math.min(relativeStart, len);\n var end = arguments[2];\n var relativeEnd = end === undefined ? len : end >> 0;\n var final = relativeEnd < 0\n ? Math.max(len + relativeEnd, 0)\n : Math.min(relativeEnd, len);\n while (k < final) {\n O[k] = value;\n k++;\n }\n return O;\n });\n}\nif (!Array.of) {\n defineProp(Array, \"of\", function () {\n return Array.prototype.slice.call(arguments);\n });\n}\n\n});\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/es6-shim\"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st:\n\"use strict\";\nrequire(\"./es6-shim\");\n\n});\n\nace.define(\"ace/lib/deep_copy\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) {\n if (typeof obj !== \"object\" || !obj)\n return obj;\n var copy;\n if (Array.isArray(obj)) {\n copy = [];\n for (var key = 0; key < obj.length; key++) {\n copy[key] = deepCopy(obj[key]);\n }\n return copy;\n }\n if (Object.prototype.toString.call(obj) !== \"[object Object]\")\n return obj;\n copy = {};\n for (var key in obj)\n copy[key] = deepCopy(obj[key]);\n return copy;\n};\n\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nexports.last = function (a) {\n return a[a.length - 1];\n};\nexports.stringReverse = function (string) {\n return string.split(\"\").reverse().join(\"\");\n};\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n if (count >>= 1)\n string += string;\n }\n return result;\n};\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\nexports.copyObject = function (obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\nexports.copyArray = function (array) {\n var copy = [];\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] && typeof array[i] == \"object\")\n copy[i] = this.copyObject(array[i]);\n else\n copy[i] = array[i];\n }\n return copy;\n};\nexports.deepCopy = require(\"./deep_copy\").deepCopy;\nexports.arrayToMap = function (arr) {\n var map = {};\n for (var i = 0; i < arr.length; i++) {\n map[arr[i]] = 1;\n }\n return map;\n};\nexports.createMap = function (props) {\n var map = Object.create(null);\n for (var i in props) {\n map[i] = props[i];\n }\n return map;\n};\nexports.arrayRemove = function (array, value) {\n for (var i = 0; i <= array.length; i++) {\n if (value === array[i]) {\n array.splice(i, 1);\n }\n }\n};\nexports.escapeRegExp = function (str) {\n return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1');\n};\nexports.escapeHTML = function (str) {\n return (\"\" + str).replace(/&/g, \"&\").replace(/\"/g, \""\").replace(/'/g, \"'\").replace(/ 0xffff ? 2 : 1;\n};\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.OS = {\n LINUX: \"LINUX\",\n MAC: \"MAC\",\n WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function () {\n if (exports.isMac) {\n return exports.OS.MAC;\n }\n else if (exports.isLinux) {\n return exports.OS.LINUX;\n }\n else {\n return exports.OS.WINDOWS;\n }\n};\nvar _navigator = typeof navigator == \"object\" ? navigator : {};\nvar os = (/mac|win|linux/i.exec(_navigator.platform) || [\"other\"])[0].toLowerCase();\nvar ua = _navigator.userAgent || \"\";\nvar appName = _navigator.appName || \"\";\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE =\n (appName == \"Microsoft Internet Explorer\" || appName.indexOf(\"MSAppHost\") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1]); // for ie\nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = ua.match(/ Gecko\\/\\d+/);\nexports.isOpera = typeof opera == \"object\" && Object.prototype.toString.call(window[\"opera\"]) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\nexports.isSafari = parseFloat(ua.split(\" Safari/\")[1]) && !exports.isChrome || undefined;\nexports.isEdge = parseFloat(ua.split(\" Edge/\")[1]) || undefined;\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\nexports.isAndroid = ua.indexOf(\"Android\") >= 0;\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window[\"MSStream\"];\nif (exports.isIOS)\n exports.isMac = true;\nexports.isMobile = exports.isIOS || exports.isAndroid;\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"./useragent\");\nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\nexports.buildDom = function buildDom(arr, parent, refs) {\n if (typeof arr == \"string\" && arr) {\n var txt = document.createTextNode(arr);\n if (parent)\n parent.appendChild(txt);\n return txt;\n }\n if (!Array.isArray(arr)) {\n if (arr && arr.appendChild && parent)\n parent.appendChild(arr);\n return arr;\n }\n if (typeof arr[0] != \"string\" || !arr[0]) {\n var els = [];\n for (var i = 0; i < arr.length; i++) {\n var ch = buildDom(arr[i], parent, refs);\n ch && els.push(ch);\n }\n return els;\n }\n var el = document.createElement(arr[0]);\n var options = arr[1];\n var childIndex = 1;\n if (options && typeof options == \"object\" && !Array.isArray(options))\n childIndex = 2;\n for (var i = childIndex; i < arr.length; i++)\n buildDom(arr[i], el, refs);\n if (childIndex == 2) {\n Object.keys(options).forEach(function (n) {\n var val = options[n];\n if (n === \"class\") {\n el.className = Array.isArray(val) ? val.join(\" \") : val;\n }\n else if (typeof val == \"function\" || n == \"value\" || n[0] == \"$\") {\n el[n] = val;\n }\n else if (n === \"ref\") {\n if (refs)\n refs[val] = el;\n }\n else if (n === \"style\") {\n if (typeof val == \"string\")\n el.style.cssText = val;\n }\n else if (val != null) {\n el.setAttribute(n, val);\n }\n });\n }\n if (parent)\n parent.appendChild(el);\n return el;\n};\nexports.getDocumentHead = function (doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\nexports.createElement = function (tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\nexports.removeChildren = function (element) {\n element.innerHTML = \"\";\n};\nexports.createTextNode = function (textContent, element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createTextNode(textContent);\n};\nexports.createFragment = function (element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createDocumentFragment();\n};\nexports.hasCssClass = function (el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function (el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\nexports.toggleCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function (node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n }\n else {\n exports.removeCssClass(node, className);\n }\n};\nexports.hasCssString = function (id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n if ((sheets = doc.querySelectorAll(\"style\"))) {\n while (index < sheets.length) {\n if (sheets[index++].id === id) {\n return true;\n }\n }\n }\n};\nexports.removeElementById = function (id, doc) {\n doc = doc || document;\n if (doc.getElementById(id)) {\n doc.getElementById(id).remove();\n }\n};\nvar strictCSP;\nvar cssCache = [];\nexports.useStrictCSP = function (value) {\n strictCSP = value;\n if (value == false)\n insertPendingStyles();\n else if (!cssCache)\n cssCache = [];\n};\nfunction insertPendingStyles() {\n var cache = cssCache;\n cssCache = null;\n cache && cache.forEach(function (item) {\n importCssString(item[0], item[1]);\n });\n}\nfunction importCssString(cssText, id, target) {\n if (typeof document == \"undefined\")\n return;\n if (cssCache) {\n if (target) {\n insertPendingStyles();\n }\n else if (target === false) {\n return cssCache.push([cssText, id]);\n }\n }\n if (strictCSP)\n return;\n var container = target;\n if (!target || !target.getRootNode) {\n container = document;\n }\n else {\n container = target.getRootNode();\n if (!container || container == target)\n container = document;\n }\n var doc = container.ownerDocument || container;\n if (id && exports.hasCssString(id, container))\n return null;\n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n var style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n if (container == doc)\n container = exports.getDocumentHead(doc);\n container.insertBefore(style, container.firstChild);\n}\nexports.importCssString = importCssString;\nexports.importCssStylsheet = function (uri, doc) {\n exports.buildDom([\"link\", { rel: \"stylesheet\", href: uri }], exports.getDocumentHead(doc));\n};\nexports.scrollbarWidth = function (doc) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n outer.appendChild(inner);\n var body = (doc && doc.documentElement) || (document && document.documentElement);\n if (!body)\n return 0;\n body.appendChild(outer);\n var noScrollbar = inner.offsetWidth;\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n if (noScrollbar === withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n body.removeChild(outer);\n return noScrollbar - withScrollbar;\n};\nexports.computedStyle = function (element, style) {\n return window.getComputedStyle(element, \"\") || {};\n};\nexports.setStyle = function (styles, property, value) {\n if (styles[property] !== value) {\n styles[property] = value;\n }\n};\nexports.HAS_CSS_ANIMATION = false;\nexports.HAS_CSS_TRANSFORMS = false;\nexports.HI_DPI = useragent.isWin\n ? typeof window !== \"undefined\" && window.devicePixelRatio >= 1.5\n : true;\nif (useragent.isChromeOS)\n exports.HI_DPI = false;\nif (typeof document !== \"undefined\") {\n var div = document.createElement(\"div\");\n if (exports.HI_DPI && div.style.transform !== undefined)\n exports.HAS_CSS_TRANSFORMS = true;\n if (!useragent.isEdge && typeof div.style.animationName !== \"undefined\")\n exports.HAS_CSS_ANIMATION = true;\n div = null;\n}\nif (exports.HAS_CSS_TRANSFORMS) {\n exports.translate = function (element, tx, ty) {\n element.style.transform = \"translate(\" + Math.round(tx) + \"px, \" + Math.round(ty) + \"px)\";\n };\n}\nelse {\n exports.translate = function (element, tx, ty) {\n element.style.top = Math.round(ty) + \"px\";\n element.style.left = Math.round(tx) + \"px\";\n };\n}\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){/*\n * based on code from:\n *\n * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/requirejs for details\n */\n\"use strict\";\nvar dom = require(\"./dom\");\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\nexports.loadScript = function (path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n s.src = path;\n head.appendChild(s);\n s.onload = s.onreadystatechange = function (_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function (url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.inherits = function (ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\nexports.mixin = function (obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\nexports.implement = function (proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar EventEmitter = {};\nvar stopPropagation = function () { this.propagationStopped = true; };\nvar preventDefault = function () { this.defaultPrevented = true; };\nEventEmitter._emit =\n EventEmitter._dispatchEvent = function (eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n if (typeof e != \"object\" || !e)\n e = {};\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](e, this);\n if (e.propagationStopped)\n break;\n }\n if (defaultHandler && !e.defaultPrevented)\n return defaultHandler(e, this);\n };\nEventEmitter._signal = function (eventName, e) {\n var listeners = (this._eventRegistry || {})[eventName];\n if (!listeners)\n return;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++)\n listeners[i](e, this);\n};\nEventEmitter.once = function (eventName, callback) {\n var _self = this;\n this.on(eventName, function newCallback() {\n _self.off(eventName, newCallback);\n callback.apply(null, arguments);\n });\n if (!callback) {\n return new Promise(function (resolve) {\n callback = resolve;\n });\n }\n};\nEventEmitter.setDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n handlers = this._defaultHandlers = { _disabled_: {} };\n if (handlers[eventName]) {\n var old = handlers[eventName];\n var disabled = handlers._disabled_[eventName];\n if (!disabled)\n handlers._disabled_[eventName] = disabled = [];\n disabled.push(old);\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n handlers[eventName] = callback;\n};\nEventEmitter.removeDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n return;\n var disabled = handlers._disabled_[eventName];\n if (handlers[eventName] == callback) {\n if (disabled)\n this.setDefaultHandler(eventName, disabled.pop());\n }\n else if (disabled) {\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n};\nEventEmitter.on =\n EventEmitter.addEventListener = function (eventName, callback, capturing) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n listeners = this._eventRegistry[eventName] = [];\n if (listeners.indexOf(callback) == -1)\n listeners[capturing ? \"unshift\" : \"push\"](callback);\n return callback;\n };\nEventEmitter.off =\n EventEmitter.removeListener =\n EventEmitter.removeEventListener = function (eventName, callback) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n return;\n var index = listeners.indexOf(callback);\n if (index !== -1)\n listeners.splice(index, 1);\n };\nEventEmitter.removeAllListeners = function (eventName) {\n if (!eventName)\n this._eventRegistry = this._defaultHandlers = undefined;\n if (this._eventRegistry)\n this._eventRegistry[eventName] = undefined;\n if (this._defaultHandlers)\n this._defaultHandlers[eventName] = undefined;\n};\nexports.EventEmitter = EventEmitter;\n\n});\n\nace.define(\"ace/lib/report_error\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.reportError = function reportError(msg, data) {\n var e = new Error(msg);\n e[\"data\"] = data;\n if (typeof console == \"object\" && console.error)\n console.error(e);\n setTimeout(function () { throw e; });\n};\n\n});\n\nace.define(\"ace/lib/default_english_messages\",[\"require\",\"exports\",\"module\"], function(require, exports, module){var defaultEnglishMessages = {\n \"autocomplete.popup.aria-roledescription\": \"Autocomplete suggestions\",\n \"autocomplete.popup.aria-label\": \"Autocomplete suggestions\",\n \"autocomplete.popup.item.aria-roledescription\": \"item\",\n \"autocomplete.loading\": \"Loading...\",\n \"editor.scroller.aria-roledescription\": \"editor\",\n \"editor.scroller.aria-label\": \"Editor content, press Enter to start editing, press Escape to exit\",\n \"editor.gutter.aria-roledescription\": \"editor\",\n \"editor.gutter.aria-label\": \"Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit\",\n \"error-marker.good-state\": \"Looks good!\",\n \"prompt.recently-used\": \"Recently used\",\n \"prompt.other-commands\": \"Other commands\",\n \"prompt.no-matching-commands\": \"No matching commands\",\n \"search-box.find.placeholder\": \"Search for\",\n \"search-box.find-all.text\": \"All\",\n \"search-box.replace.placeholder\": \"Replace with\",\n \"search-box.replace-next.text\": \"Replace\",\n \"search-box.replace-all.text\": \"All\",\n \"search-box.toggle-replace.title\": \"Toggle Replace mode\",\n \"search-box.toggle-regexp.title\": \"RegExp Search\",\n \"search-box.toggle-case.title\": \"CaseSensitive Search\",\n \"search-box.toggle-whole-word.title\": \"Whole Word Search\",\n \"search-box.toggle-in-selection.title\": \"Search In Selection\",\n \"search-box.search-counter\": \"$0 of $1\",\n \"text-input.aria-roledescription\": \"editor\",\n \"text-input.aria-label\": \"Cursor at row $0\",\n \"gutter.code-folding.range.aria-label\": \"Toggle code folding, rows $0 through $1\",\n \"gutter.code-folding.closed.aria-label\": \"Toggle code folding, rows $0 through $1\",\n \"gutter.code-folding.open.aria-label\": \"Toggle code folding, row $0\",\n \"gutter.code-folding.closed.title\": \"Unfold code\",\n \"gutter.code-folding.open.title\": \"Fold code\",\n \"gutter.annotation.aria-label.error\": \"Error, read annotations row $0\",\n \"gutter.annotation.aria-label.warning\": \"Warning, read annotations row $0\",\n \"gutter.annotation.aria-label.info\": \"Info, read annotations row $0\",\n \"inline-fold.closed.title\": \"Unfold code\",\n \"gutter-tooltip.aria-label.error.singular\": \"error\",\n \"gutter-tooltip.aria-label.error.plural\": \"errors\",\n \"gutter-tooltip.aria-label.warning.singular\": \"warning\",\n \"gutter-tooltip.aria-label.warning.plural\": \"warnings\",\n \"gutter-tooltip.aria-label.info.singular\": \"information message\",\n \"gutter-tooltip.aria-label.info.plural\": \"information messages\",\n \"gutter.annotation.aria-label.security\": \"Security finding, read annotations row $0\",\n \"gutter.annotation.aria-label.hint\": \"Suggestion, read annotations row $0\",\n \"gutter-tooltip.aria-label.security.singular\": \"security finding\",\n \"gutter-tooltip.aria-label.security.plural\": \"security findings\",\n \"gutter-tooltip.aria-label.hint.singular\": \"suggestion\",\n \"gutter-tooltip.aria-label.hint.plural\": \"suggestions\"\n};\nexports.defaultEnglishMessages = defaultEnglishMessages;\n\n});\n\nace.define(\"ace/lib/app_config\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/report_error\",\"ace/lib/default_english_messages\"], function(require, exports, module){\"no use strict\";\nvar oop = require(\"./oop\");\nvar EventEmitter = require(\"./event_emitter\").EventEmitter;\nvar reportError = require(\"./report_error\").reportError;\nvar defaultEnglishMessages = require(\"./default_english_messages\").defaultEnglishMessages;\nvar optionsProvider = {\n setOptions: function (optList) {\n Object.keys(optList).forEach(function (key) {\n this.setOption(key, optList[key]);\n }, this);\n },\n getOptions: function (optionNames) {\n var result = {};\n if (!optionNames) {\n var options = this.$options;\n optionNames = Object.keys(options).filter(function (key) {\n return !options[key].hidden;\n });\n }\n else if (!Array.isArray(optionNames)) {\n result = optionNames;\n optionNames = Object.keys(result);\n }\n optionNames.forEach(function (key) {\n result[key] = this.getOption(key);\n }, this);\n return result;\n },\n setOption: function (name, value) {\n if (this[\"$\" + name] === value)\n return;\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value);\n if (!opt.handlesSet)\n this[\"$\" + name] = value;\n if (opt && opt.set)\n opt.set.call(this, value);\n },\n getOption: function (name) {\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].getOption(name);\n return opt && opt.get ? opt.get.call(this) : this[\"$\" + name];\n }\n};\nfunction warn(message) {\n if (typeof console != \"undefined\" && console.warn)\n console.warn.apply(console, arguments);\n}\nvar messages;\nvar nlsPlaceholders;\nvar AppConfig = /** @class */ (function () {\n function AppConfig() {\n this.$defaultOptions = {};\n messages = defaultEnglishMessages;\n nlsPlaceholders = \"dollarSigns\";\n }\n AppConfig.prototype.defineOptions = function (obj, path, options) {\n if (!obj.$options)\n this.$defaultOptions[path] = obj.$options = {};\n Object.keys(options).forEach(function (key) {\n var opt = options[key];\n if (typeof opt == \"string\")\n opt = { forwardTo: opt };\n opt.name || (opt.name = key);\n obj.$options[opt.name] = opt;\n if (\"initialValue\" in opt)\n obj[\"$\" + opt.name] = opt.initialValue;\n });\n oop.implement(obj, optionsProvider);\n return this;\n };\n AppConfig.prototype.resetOptions = function (obj) {\n Object.keys(obj.$options).forEach(function (key) {\n var opt = obj.$options[key];\n if (\"value\" in opt)\n obj.setOption(key, opt.value);\n });\n };\n AppConfig.prototype.setDefaultValue = function (path, name, value) {\n if (!path) {\n for (path in this.$defaultOptions)\n if (this.$defaultOptions[path][name])\n break;\n if (!this.$defaultOptions[path][name])\n return false;\n }\n var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {});\n if (opts[name]) {\n if (opts.forwardTo)\n this.setDefaultValue(opts.forwardTo, name, value);\n else\n opts[name].value = value;\n }\n };\n AppConfig.prototype.setDefaultValues = function (path, optionHash) {\n Object.keys(optionHash).forEach(function (key) {\n this.setDefaultValue(path, key, optionHash[key]);\n }, this);\n };\n AppConfig.prototype.setMessages = function (value, options) {\n messages = value;\n if (options && options.placeholders) {\n nlsPlaceholders = options.placeholders;\n }\n };\n AppConfig.prototype.nls = function (key, defaultString, params) {\n if (!messages[key]) {\n warn(\"No message found for the key '\" + key + \"' in messages with id \" + messages.$id + \", trying to find a translation for the default string '\" + defaultString + \"'.\");\n if (!messages[defaultString]) {\n warn(\"No message found for the default string '\" + defaultString + \"' in the provided messages. Falling back to the default English message.\");\n }\n }\n var translated = messages[key] || messages[defaultString] || defaultString;\n if (params) {\n if (nlsPlaceholders === \"dollarSigns\") {\n translated = translated.replace(/\\$(\\$|[\\d]+)/g, function (_, dollarMatch) {\n if (dollarMatch == \"$\")\n return \"$\";\n return params[dollarMatch];\n });\n }\n if (nlsPlaceholders === \"curlyBrackets\") {\n translated = translated.replace(/\\{([^\\}]+)\\}/g, function (_, curlyBracketMatch) {\n return params[curlyBracketMatch];\n });\n }\n }\n return translated;\n };\n return AppConfig;\n}());\nAppConfig.prototype.warn = warn;\nAppConfig.prototype.reportError = reportError;\noop.implement(AppConfig.prototype, EventEmitter);\nexports.AppConfig = AppConfig;\n\n});\n\nace.define(\"ace/theme/textmate-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \".ace-tm .ace_gutter {\\n background: #f0f0f0;\\n color: #333;\\n}\\n\\n.ace-tm .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-tm .ace_fold {\\n background-color: #6B72E6;\\n}\\n\\n.ace-tm {\\n background-color: #FFFFFF;\\n color: black;\\n}\\n\\n.ace-tm .ace_cursor {\\n color: black;\\n}\\n \\n.ace-tm .ace_invisible {\\n color: rgb(191, 191, 191);\\n}\\n\\n.ace-tm .ace_storage,\\n.ace-tm .ace_keyword {\\n color: blue;\\n}\\n\\n.ace-tm .ace_constant {\\n color: rgb(197, 6, 11);\\n}\\n\\n.ace-tm .ace_constant.ace_buildin {\\n color: rgb(88, 72, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_language {\\n color: rgb(88, 92, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_library {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_invalid {\\n background-color: rgba(255, 0, 0, 0.1);\\n color: red;\\n}\\n\\n.ace-tm .ace_support.ace_function {\\n color: rgb(60, 76, 114);\\n}\\n\\n.ace-tm .ace_support.ace_constant {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_support.ace_type,\\n.ace-tm .ace_support.ace_class {\\n color: rgb(109, 121, 222);\\n}\\n\\n.ace-tm .ace_keyword.ace_operator {\\n color: rgb(104, 118, 135);\\n}\\n\\n.ace-tm .ace_string {\\n color: rgb(3, 106, 7);\\n}\\n\\n.ace-tm .ace_comment {\\n color: rgb(76, 136, 107);\\n}\\n\\n.ace-tm .ace_comment.ace_doc {\\n color: rgb(0, 102, 255);\\n}\\n\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\n color: rgb(128, 159, 191);\\n}\\n\\n.ace-tm .ace_constant.ace_numeric {\\n color: rgb(0, 0, 205);\\n}\\n\\n.ace-tm .ace_variable {\\n color: rgb(49, 132, 149);\\n}\\n\\n.ace-tm .ace_xml-pe {\\n color: rgb(104, 104, 91);\\n}\\n\\n.ace-tm .ace_entity.ace_name.ace_function {\\n color: #0000A2;\\n}\\n\\n\\n.ace-tm .ace_heading {\\n color: rgb(12, 7, 255);\\n}\\n\\n.ace-tm .ace_list {\\n color:rgb(185, 6, 144);\\n}\\n\\n.ace-tm .ace_meta.ace_tag {\\n color:rgb(0, 22, 142);\\n}\\n\\n.ace-tm .ace_string.ace_regex {\\n color: rgb(255, 0, 0)\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n.ace-tm .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_active-line {\\n background: rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-tm .ace_gutter-active-line {\\n background-color : #dcdcdc;\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-tm .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-tm .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/theme/textmate-css\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = require(\"./textmate-css\");\nexports.$id = \"ace/theme/textmate\";\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n});\n\nace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/net\",\"ace/lib/dom\",\"ace/lib/app_config\",\"ace/theme/textmate\"], function(require, exports, module){\"no use strict\";\nvar lang = require(\"./lib/lang\");\nvar net = require(\"./lib/net\");\nvar dom = require(\"./lib/dom\");\nvar AppConfig = require(\"./lib/app_config\").AppConfig;\nmodule.exports = exports = new AppConfig();\nvar options = {\n packaged: false,\n workerPath: null,\n modePath: null,\n themePath: null,\n basePath: \"\",\n suffix: \".js\",\n $moduleUrls: {},\n loadWorkerFromBlob: true,\n sharedPopups: false,\n useStrictCSP: null\n};\nexports.get = function (key) {\n if (!options.hasOwnProperty(key))\n throw new Error(\"Unknown config key: \" + key);\n return options[key];\n};\nexports.set = function (key, value) {\n if (options.hasOwnProperty(key))\n options[key] = value;\n else if (this.setDefaultValue(\"\", key, value) == false)\n throw new Error(\"Unknown config key: \" + key);\n if (key == \"useStrictCSP\")\n dom.useStrictCSP(value);\n};\nexports.all = function () {\n return lang.copyObject(options);\n};\nexports.$modes = {};\nexports.moduleUrl = function (name, component) {\n if (options.$moduleUrls[name])\n return options.$moduleUrls[name];\n var parts = name.split(\"/\");\n component = component || parts[parts.length - 2] || \"\";\n var sep = component == \"snippets\" ? \"/\" : \"-\";\n var base = parts[parts.length - 1];\n if (component == \"worker\" && sep == \"-\") {\n var re = new RegExp(\"^\" + component + \"[\\\\-_]|[\\\\-_]\" + component + \"$\", \"g\");\n base = base.replace(re, \"\");\n }\n if ((!base || base == component) && parts.length > 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n }\n else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\nexports.setModuleUrl = function (name, subst) {\n return options.$moduleUrls[name] = subst;\n};\nvar loader = function (moduleName, cb) {\n if (moduleName === \"ace/theme/textmate\" || moduleName === \"./theme/textmate\")\n return cb(null, require(\"./theme/textmate\"));\n if (customLoader)\n return customLoader(moduleName, cb);\n console.error(\"loader is not configured\");\n};\nvar customLoader;\nexports.setLoader = function (cb) {\n customLoader = cb;\n};\nexports.dynamicModules = Object.create(null);\nexports.$loading = {};\nexports.$loaded = {};\nexports.loadModule = function (moduleId, onLoad) {\n var loadedModule;\n if (Array.isArray(moduleId)) {\n var moduleType = moduleId[0];\n var moduleName = moduleId[1];\n }\n else if (typeof moduleId == \"string\") {\n var moduleName = moduleId;\n }\n var load = function (module) {\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n exports.$loading[moduleName].push(onLoad);\n if (exports.$loading[moduleName].length > 1)\n return;\n var afterLoad = function () {\n loader(moduleName, function (err, module) {\n if (module)\n exports.$loaded[moduleName] = module;\n exports._emit(\"load.module\", { name: moduleName, module: module });\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function (onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n if (!exports.get(\"packaged\"))\n return afterLoad();\n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n reportErrorIfPathIsNotConfigured();\n };\n if (exports.dynamicModules[moduleName]) {\n exports.dynamicModules[moduleName]().then(function (module) {\n if (module.default) {\n load(module.default);\n }\n else {\n load(module);\n }\n });\n }\n else {\n try {\n loadedModule = this.$require(moduleName);\n }\n catch (e) { }\n load(loadedModule || exports.$loaded[moduleName]);\n }\n};\nexports.$require = function (moduleName) {\n if (typeof module[\"require\"] == \"function\") {\n var req = \"require\";\n return module[req](moduleName);\n }\n};\nexports.setModuleLoader = function (moduleName, onLoad) {\n exports.dynamicModules[moduleName] = onLoad;\n};\nvar reportErrorIfPathIsNotConfigured = function () {\n if (!options.basePath && !options.workerPath\n && !options.modePath && !options.themePath\n && !Object.keys(options.$moduleUrls).length) {\n console.error(\"Unable to infer path to ace from script src,\", \"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes\", \"or with webpack use ace/webpack-resolver\");\n reportErrorIfPathIsNotConfigured = function () { };\n }\n};\nexports.version = \"1.37.1\";\n\n});\n\nace.define(\"ace/loader_build\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\nvar config = require(\"./config\");\nconfig.setLoader(function(moduleName, cb) {\n require([moduleName], function(module) {\n cb(null, module);\n });\n});\n\nvar global = (function() {\n return this || typeof window != \"undefined\" && window;\n})();\n\nmodule.exports = function(ace) {\n config.init = init;\n config.$require = require;\n ace.require = require;\n\n if (typeof define === \"function\")\n ace.define = define;\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n config.set(\"packaged\", packaged || require.packaged || module.packaged || (global.define && define.packaged));\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n if (currentScript && currentScript.src) {\n scriptUrl = currentScript.src.split(/[?#]/)[0].split(\"/\").slice(0, -1).join(\"/\") || \"\";\n }\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n Range.prototype.contains = function (row, column) {\n return this.compare(row, column) == 0;\n };\n Range.prototype.compareRange = function (range) {\n var cmp, end = range.end, start = range.start;\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n }\n else if (cmp == 0) {\n return 1;\n }\n else {\n return 0;\n }\n }\n else if (cmp == -1) {\n return -2;\n }\n else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n }\n else if (cmp == 1) {\n return 42;\n }\n else {\n return 0;\n }\n }\n };\n Range.prototype.comparePoint = function (p) {\n return this.compare(p.row, p.column);\n };\n Range.prototype.containsRange = function (range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n Range.prototype.intersects = function (range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n Range.prototype.isEnd = function (row, column) {\n return this.end.row == row && this.end.column == column;\n };\n Range.prototype.isStart = function (row, column) {\n return this.start.row == row && this.start.column == column;\n };\n Range.prototype.setStart = function (row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n }\n else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n Range.prototype.setEnd = function (row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n }\n else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n Range.prototype.inside = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideStart = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideEnd = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.compare = function (row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n if (row < this.start.row)\n return -1;\n if (row > this.end.row)\n return 1;\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n return 0;\n };\n Range.prototype.compareStart = function (row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareEnd = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareInside = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.clipRows = function (firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = { row: lastRow + 1, column: 0 };\n else if (this.end.row < firstRow)\n var end = { row: firstRow, column: 0 };\n if (this.start.row > lastRow)\n var start = { row: lastRow + 1, column: 0 };\n else if (this.start.row < firstRow)\n var start = { row: firstRow, column: 0 };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.extend = function (row, column) {\n var cmp = this.compare(row, column);\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = { row: row, column: column };\n else\n var end = { row: row, column: column };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.isEmpty = function () {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n Range.prototype.isMultiLine = function () {\n return (this.start.row !== this.end.row);\n };\n Range.prototype.clone = function () {\n return Range.fromPoints(this.start, this.end);\n };\n Range.prototype.collapseRows = function () {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n Range.prototype.toScreenRange = function (session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);\n };\n Range.prototype.moveBy = function (row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n return Range;\n}());\nRange.fromPoints = function (start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nexports.Range = Range;\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./oop\");\nvar Keys = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',\n 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'\n },\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\": 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8,\n \"control\": 1\n },\n FUNCTION_KEYS: {\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Return\",\n 19: \"Pause\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"Print\",\n 45: \"Insert\",\n 46: \"Delete\",\n '-13': \"NumpadEnter\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n PRINTABLE_KEYS: {\n 32: ' ', 59: ';', 61: '=', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\', 221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n};\nvar codeToKeyCode = {\n Command: 224,\n Backspace: 8,\n Tab: 9,\n Return: 13,\n Enter: 13,\n Pause: 19,\n Escape: 27,\n PageUp: 33,\n PageDown: 34,\n End: 35,\n Home: 36,\n Insert: 45,\n Delete: 46,\n ArrowLeft: 37,\n ArrowUp: 38,\n ArrowRight: 39,\n ArrowDown: 40,\n Backquote: 192,\n Minus: 189,\n Equal: 187,\n BracketLeft: 219,\n Backslash: 220,\n BracketRight: 221,\n Semicolon: 186,\n Quote: 222,\n Comma: 188,\n Period: 190,\n Slash: 191,\n Space: 32,\n NumpadAdd: 107,\n NumpadDecimal: 110,\n NumpadSubtract: 109,\n NumpadDivide: 111,\n NumpadMultiply: 106\n};\nfor (var i = 0; i < 10; i++) {\n codeToKeyCode[\"Digit\" + i] = 48 + i;\n codeToKeyCode[\"Numpad\" + i] = 96 + i;\n Keys.PRINTABLE_KEYS[48 + i] = \"\" + i;\n Keys.FUNCTION_KEYS[96 + i] = \"Numpad\" + i;\n}\nfor (var i = 65; i < 91; i++) {\n var chr = String.fromCharCode(i + 32);\n codeToKeyCode[\"Key\" + chr.toUpperCase()] = i;\n Keys.PRINTABLE_KEYS[i] = chr;\n}\nfor (var i = 1; i < 13; i++) {\n codeToKeyCode[\"F\" + i] = 111 + i;\n Keys.FUNCTION_KEYS[111 + i] = \"F\" + i;\n}\nvar modifiers = {\n Shift: 16,\n Control: 17,\n Alt: 18,\n Meta: 224\n};\nfor (var mod in modifiers) {\n codeToKeyCode[mod] = codeToKeyCode[mod + \"Left\"]\n = codeToKeyCode[mod + \"Right\"] = modifiers[mod];\n}\nexports.$codeToKeyCode = codeToKeyCode;\nKeys.PRINTABLE_KEYS[173] = '-';\nfor (var j in Keys.FUNCTION_KEYS) {\n var name = Keys.FUNCTION_KEYS[j].toLowerCase();\n Keys[name] = parseInt(j, 10);\n}\nfor (var j in Keys.PRINTABLE_KEYS) {\n var name = Keys.PRINTABLE_KEYS[j].toLowerCase();\n Keys[name] = parseInt(j, 10);\n}\noop.mixin(Keys, Keys.MODIFIER_KEYS);\noop.mixin(Keys, Keys.PRINTABLE_KEYS);\noop.mixin(Keys, Keys.FUNCTION_KEYS);\nKeys.enter = Keys[\"return\"];\nKeys.escape = Keys.esc;\nKeys.del = Keys[\"delete\"];\n(function () {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) {\n Keys.KEY_MODS[i] = mods.filter(function (x) {\n return i & Keys.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n})();\nKeys.KEY_MODS[0] = \"\";\nKeys.KEY_MODS[-1] = \"input-\";\noop.mixin(exports, Keys);\nexports.default = exports;\nexports.keyCodeToString = function (keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\"; var keys = require(\"./keys\");\nvar useragent = require(\"./useragent\");\nvar pressedKeys = null;\nvar ts = 0;\nvar activeListenerOptions;\nfunction detectListenerOptionsSupport() {\n activeListenerOptions = false;\n try {\n document.createComment(\"\").addEventListener(\"test\", function () { }, {\n get passive() {\n activeListenerOptions = { passive: false };\n return true;\n }\n });\n }\n catch (e) { }\n}\nfunction getListenerOptions() {\n if (activeListenerOptions == undefined)\n detectListenerOptionsSupport();\n return activeListenerOptions;\n}\nfunction EventListener(elem, type, callback) {\n this.elem = elem;\n this.type = type;\n this.callback = callback;\n}\nEventListener.prototype.destroy = function () {\n removeListener(this.elem, this.type, this.callback);\n this.elem = this.type = this.callback = undefined;\n};\nvar addListener = exports.addListener = function (elem, type, callback, destroyer) {\n elem.addEventListener(type, callback, getListenerOptions());\n if (destroyer)\n destroyer.$toDestroy.push(new EventListener(elem, type, callback));\n};\nvar removeListener = exports.removeListener = function (elem, type, callback) {\n elem.removeEventListener(type, callback, getListenerOptions());\n};\nexports.stopEvent = function (e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\nexports.stopPropagation = function (e) {\n if (e.stopPropagation)\n e.stopPropagation();\n};\nexports.preventDefault = function (e) {\n if (e.preventDefault)\n e.preventDefault();\n};\nexports.getButton = function (e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n return e.button;\n};\nexports.capture = function (el, eventHandler, releaseCaptureHandler) {\n var ownerDocument = el && el.ownerDocument || document;\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n removeListener(ownerDocument, \"mousemove\", eventHandler);\n removeListener(ownerDocument, \"mouseup\", onMouseUp);\n removeListener(ownerDocument, \"dragstart\", onMouseUp);\n }\n addListener(ownerDocument, \"mousemove\", eventHandler);\n addListener(ownerDocument, \"mouseup\", onMouseUp);\n addListener(ownerDocument, \"dragstart\", onMouseUp);\n return onMouseUp;\n};\nexports.addMouseWheelListener = function (el, callback, destroyer) {\n addListener(el, \"wheel\", function (e) {\n var factor = 0.15;\n var deltaX = e.deltaX || 0;\n var deltaY = e.deltaY || 0;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = deltaX * factor;\n e.wheelY = deltaY * factor;\n break;\n case e.DOM_DELTA_LINE:\n var linePixels = 15;\n e.wheelX = deltaX * linePixels;\n e.wheelY = deltaY * linePixels;\n break;\n case e.DOM_DELTA_PAGE:\n var pagePixels = 150;\n e.wheelX = deltaX * pagePixels;\n e.wheelY = deltaY * pagePixels;\n break;\n }\n callback(e);\n }, destroyer);\n};\nexports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) {\n var clicks = 0;\n var startX, startY, timer;\n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n }\n else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n }\n else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600);\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n e._clicks = clicks;\n eventHandler[callbackName](\"mousedown\", e);\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function (el) {\n addListener(el, \"mousedown\", onMousedown, destroyer);\n });\n};\nfunction getModifierHash(e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n}\nexports.getModifierString = function (e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n if (!keyCode && e.code) {\n keyCode = keys.$codeToKeyCode[e.code] || keyCode;\n }\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = e.location;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n }\n else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n if (!hashId && keyCode === 13) {\n if (e.location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n return callback(e, hashId, keyCode);\n}\nexports.addCommandKeyListener = function (el, callback, destroyer) {\n var lastDefaultPrevented = null;\n addListener(el, \"keydown\", function (e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n }, destroyer);\n addListener(el, \"keyup\", function (e) {\n pressedKeys[e.keyCode] = null;\n }, destroyer);\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function (callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + (postMessageId++);\n var listener = function (e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n removeListener(win, \"message\", listener);\n callback();\n }\n };\n addListener(win, \"message\", listener);\n win.postMessage(messageName, \"*\");\n };\n}\nexports.$idleBlocked = false;\nexports.onIdle = function (cb, timeout) {\n return setTimeout(function handler() {\n if (!exports.$idleBlocked) {\n cb();\n }\n else {\n setTimeout(handler, 100);\n }\n }, timeout);\n};\nexports.$idleBlockId = null;\nexports.blockIdle = function (delay) {\n if (exports.$idleBlockId)\n clearTimeout(exports.$idleBlockId);\n exports.$idleBlocked = true;\n exports.$idleBlockId = setTimeout(function () {\n exports.$idleBlocked = false;\n }, delay || 100);\n};\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window[\"mozRequestAnimationFrame\"]\n || window[\"webkitRequestAnimationFrame\"]\n || window[\"msRequestAnimationFrame\"]\n || window[\"oRequestAnimationFrame\"]);\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function (callback) {\n setTimeout(callback, 17);\n };\n\n});\n\nace.define(\"ace/clipboard\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar $cancelT;\nmodule.exports = {\n lineMode: false,\n pasteCancelled: function () {\n if ($cancelT && $cancelT > Date.now() - 50)\n return true;\n return $cancelT = false;\n },\n cancel: function () {\n $cancelT = Date.now();\n }\n};\n\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/config\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar nls = require(\"../config\").nls;\nvar useragent = require(\"../lib/useragent\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar clipboard = require(\"../clipboard\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\nvar HAS_FOCUS_ARGS = useragent.isChrome > 63;\nvar MAX_LINE_LENGTH = 400;\nvar KEYS = require(\"../lib/keys\");\nvar MODS = KEYS.KEY_MODS;\nvar isIOS = useragent.isIOS;\nvar valueResetRegex = isIOS ? /\\s/ : /\\n/;\nvar isMobile = useragent.isMobile;\nvar TextInput;\nTextInput = function (parentNode, host) {\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", \"false\");\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var sendingText = false;\n var tempStyle = '';\n if (!isMobile)\n text.style.fontSize = \"1px\";\n var commandMode = false;\n var ignoreFocusEvents = false;\n var lastValue = \"\";\n var lastSelectionStart = 0;\n var lastSelectionEnd = 0;\n var lastRestoreEnd = 0;\n var rowStart = Number.MAX_SAFE_INTEGER;\n var rowEnd = Number.MIN_SAFE_INTEGER;\n var numberOfExtraLines = 0;\n try {\n var isFocused = document.activeElement === text;\n }\n catch (e) { }\n this.setNumberOfExtraLines = function (number) {\n rowStart = Number.MAX_SAFE_INTEGER;\n rowEnd = Number.MIN_SAFE_INTEGER;\n if (number < 0) {\n numberOfExtraLines = 0;\n return;\n }\n numberOfExtraLines = number;\n };\n this.setAriaLabel = function () {\n var ariaLabel = \"\";\n if (host.$textInputAriaLabel) {\n ariaLabel += \"\".concat(host.$textInputAriaLabel, \", \");\n }\n if (host.session) {\n var row = host.session.selection.cursor.row;\n ariaLabel += nls(\"text-input.aria-label\", \"Cursor at row $0\", [row + 1]);\n }\n text.setAttribute(\"aria-label\", ariaLabel);\n };\n this.setAriaOptions = function (options) {\n if (options.activeDescendant) {\n text.setAttribute(\"aria-haspopup\", \"true\");\n text.setAttribute(\"aria-autocomplete\", options.inline ? \"both\" : \"list\");\n text.setAttribute(\"aria-activedescendant\", options.activeDescendant);\n }\n else {\n text.setAttribute(\"aria-haspopup\", \"false\");\n text.setAttribute(\"aria-autocomplete\", \"both\");\n text.removeAttribute(\"aria-activedescendant\");\n }\n if (options.role) {\n text.setAttribute(\"role\", options.role);\n }\n if (options.setLabel) {\n text.setAttribute(\"aria-roledescription\", nls(\"text-input.aria-roledescription\", \"editor\"));\n this.setAriaLabel();\n }\n };\n this.setAriaOptions({ role: \"textbox\" });\n event.addListener(text, \"blur\", function (e) {\n if (ignoreFocusEvents)\n return;\n host.onBlur(e);\n isFocused = false;\n }, host);\n event.addListener(text, \"focus\", function (e) {\n if (ignoreFocusEvents)\n return;\n isFocused = true;\n if (useragent.isEdge) {\n try {\n if (!document.hasFocus())\n return;\n }\n catch (e) { }\n }\n host.onFocus(e);\n if (useragent.isEdge)\n setTimeout(resetSelection);\n else\n resetSelection();\n }, host);\n this.$focusScroll = false;\n this.focus = function () {\n this.setAriaOptions({\n setLabel: host.renderer.enableKeyboardAccessibility\n });\n if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n return text.focus({ preventScroll: true });\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n try {\n var isTransformed = text.getBoundingClientRect().top != 0;\n }\n catch (e) {\n return;\n }\n var ancestors = [];\n if (isTransformed) {\n var t = text.parentElement;\n while (t && t.nodeType == 1) {\n ancestors.push(t);\n t.setAttribute(\"ace_nocontext\", \"true\");\n if (!t.parentElement && t.getRootNode)\n t = t.getRootNode()[\"host\"];\n else\n t = t.parentElement;\n }\n }\n text.focus({ preventScroll: true });\n if (isTransformed) {\n ancestors.forEach(function (p) {\n p.removeAttribute(\"ace_nocontext\");\n });\n }\n setTimeout(function () {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function () {\n text.blur();\n };\n this.isFocused = function () {\n return isFocused;\n };\n host.on(\"beforeEndOperation\", function () {\n var curOp = host.curOp;\n var commandName = curOp && curOp.command && curOp.command.name;\n if (commandName == \"insertstring\")\n return;\n var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);\n if (inComposition && isUserAction) {\n lastValue = text.value = \"\";\n onCompositionEnd();\n }\n resetSelection();\n });\n host.on(\"changeSelection\", this.setAriaLabel);\n var positionToSelection = function (row, column) {\n var selection = column;\n for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) {\n selection += host.session.getLine(row - i).length + 1;\n }\n return selection;\n };\n var resetSelection = isIOS\n ? function (value) {\n if (!isFocused || (copied && !value) || sendingText)\n return;\n if (!value)\n value = \"\";\n var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n if (newValue != text.value)\n text.value = lastValue = newValue;\n var selectionStart = 4;\n var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));\n if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {\n text.setSelectionRange(selectionStart, selectionEnd);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n : function () {\n if (inComposition || sendingText)\n return;\n if (!isFocused && !afterContextMenu)\n return;\n inComposition = true;\n var selectionStart = 0;\n var selectionEnd = 0;\n var line = \"\";\n if (host.session) {\n var selection = host.selection;\n var range = selection.getRange();\n var row = selection.cursor.row;\n if (row === rowEnd + 1) {\n rowStart = rowEnd + 1;\n rowEnd = rowStart + 2 * numberOfExtraLines;\n }\n else if (row === rowStart - 1) {\n rowEnd = rowStart - 1;\n rowStart = rowEnd - 2 * numberOfExtraLines;\n }\n else if (row < rowStart - 1 || row > rowEnd + 1) {\n rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0;\n rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines;\n }\n var lines = [];\n for (var i = rowStart; i <= rowEnd; i++) {\n lines.push(host.session.getLine(i));\n }\n line = lines.join('\\n');\n selectionStart = positionToSelection(range.start.row, range.start.column);\n selectionEnd = positionToSelection(range.end.row, range.end.column);\n if (range.start.row < rowStart) {\n var prevLine = host.session.getLine(rowStart - 1);\n selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart;\n selectionEnd += prevLine.length + 1;\n line = prevLine + \"\\n\" + line;\n }\n else if (range.end.row > rowEnd) {\n var nextLine = host.session.getLine(rowEnd + 1);\n selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column;\n selectionEnd += line.length + 1;\n line = line + \"\\n\" + nextLine;\n }\n else if (isMobile && row > 0) {\n line = \"\\n\" + line;\n selectionEnd += 1;\n selectionStart += 1;\n }\n if (line.length > MAX_LINE_LENGTH) {\n if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {\n line = line.slice(0, MAX_LINE_LENGTH);\n }\n else {\n line = \"\\n\";\n if (selectionStart == selectionEnd) {\n selectionStart = selectionEnd = 0;\n }\n else {\n selectionStart = 0;\n selectionEnd = 1;\n }\n }\n }\n var newValue = line + \"\\n\\n\";\n if (newValue != lastValue) {\n text.value = lastValue = newValue;\n lastSelectionStart = lastSelectionEnd = newValue.length;\n }\n }\n if (afterContextMenu) {\n lastSelectionStart = text.selectionStart;\n lastSelectionEnd = text.selectionEnd;\n }\n if (lastSelectionEnd != selectionEnd\n || lastSelectionStart != selectionStart\n || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n ) {\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n catch (e) { }\n }\n inComposition = false;\n };\n this.resetSelection = resetSelection;\n if (isFocused)\n host.onFocus();\n var isAllSelected = function (text) {\n return text.selectionStart === 0 && text.selectionEnd >= lastValue.length\n && text.value === lastValue && lastValue\n && text.selectionEnd !== lastSelectionEnd;\n };\n var onSelect = function (e) {\n if (inComposition)\n return;\n if (copied) {\n copied = false;\n }\n else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n }\n else if (isMobile && text.selectionStart != lastSelectionStart) {\n resetSelection();\n }\n };\n var inputHandler = null;\n this.setInputHandler = function (cb) { inputHandler = cb; };\n this.getInputHandler = function () { return inputHandler; };\n var afterContextMenu = false;\n var sendText = function (value, fromInput) {\n if (afterContextMenu)\n afterContextMenu = false;\n if (pasted) {\n resetSelection();\n if (value)\n host.onPaste(value);\n pasted = false;\n return \"\";\n }\n else {\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var extendLeft = lastSelectionStart;\n var extendRight = lastValue.length - lastSelectionEnd;\n var inserted = value;\n var restoreStart = value.length - selectionStart;\n var restoreEnd = value.length - selectionEnd;\n var i = 0;\n while (extendLeft > 0 && lastValue[i] == value[i]) {\n i++;\n extendLeft--;\n }\n inserted = inserted.slice(i);\n i = 1;\n while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {\n i++;\n extendRight--;\n }\n restoreStart -= i - 1;\n restoreEnd -= i - 1;\n var endIndex = inserted.length - i + 1;\n if (endIndex < 0) {\n extendLeft = -endIndex;\n endIndex = 0;\n }\n inserted = inserted.slice(0, endIndex);\n if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)\n return \"\";\n sendingText = true;\n var shouldReset = false;\n if (useragent.isAndroid && inserted == \". \") {\n inserted = \" \";\n shouldReset = true;\n }\n if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {\n host.onTextInput(inserted);\n }\n else {\n host.onTextInput(inserted, {\n extendLeft: extendLeft,\n extendRight: extendRight,\n restoreStart: restoreStart,\n restoreEnd: restoreEnd\n });\n }\n sendingText = false;\n lastValue = value;\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n lastRestoreEnd = restoreEnd;\n return shouldReset ? \"\\n\" : inserted;\n }\n };\n var onInput = function (e) {\n if (inComposition)\n return onCompositionUpdate();\n if (e && e.inputType) {\n if (e.inputType == \"historyUndo\")\n return host.execCommand(\"undo\");\n if (e.inputType == \"historyRedo\")\n return host.execCommand(\"redo\");\n }\n var data = text.value;\n var inserted = sendText(data, true);\n if (data.length > MAX_LINE_LENGTH + 100\n || valueResetRegex.test(inserted)\n || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) {\n resetSelection();\n }\n };\n var handleClipboardData = function (e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window[\"clipboardData\"];\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n }\n else {\n return clipboardData.getData(mime);\n }\n }\n catch (e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n var doCopy = function (e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n if (handleClipboardData(e, data)) {\n if (isIOS) {\n resetSelection(data);\n copied = data;\n setTimeout(function () {\n copied = false;\n }, 10);\n }\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n }\n else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function () {\n copied = false;\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n var onCut = function (e) {\n doCopy(e, true);\n };\n var onCopy = function (e) {\n doCopy(e, false);\n };\n var onPaste = function (e) {\n var data = handleClipboardData(e);\n if (clipboard.pasteCancelled())\n return;\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n event.addCommandKeyListener(text, function (e, hashId, keyCode) {\n if (inComposition)\n return;\n return host.onCommandKey(e, hashId, keyCode);\n }, host);\n event.addListener(text, \"select\", onSelect, host);\n event.addListener(text, \"input\", onInput, host);\n event.addListener(text, \"cut\", onCut, host);\n event.addListener(text, \"copy\", onCopy, host);\n event.addListener(text, \"paste\", onPaste, host);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function (e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n }, host);\n }\n var onCompositionStart = function (e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly)\n return;\n inComposition = {};\n if (commandMode)\n return;\n if (e.data)\n inComposition.useTextareaForIME = false;\n setTimeout(onCompositionUpdate, 0);\n host._signal(\"compositionStart\");\n host.on(\"mousedown\", cancelComposition);\n var range = host.getSelectionRange();\n range.end.row = range.start.row;\n range.end.column = range.start.column;\n inComposition.markerRange = range;\n inComposition.selectionStart = lastSelectionStart;\n host.onCompositionStart(inComposition);\n if (inComposition.useTextareaForIME) {\n lastValue = text.value = \"\";\n lastSelectionStart = 0;\n lastSelectionEnd = 0;\n }\n else {\n if (text.msGetInputContext)\n inComposition.context = text.msGetInputContext();\n if (text.getInputContext)\n inComposition.context = text.getInputContext();\n }\n };\n var onCompositionUpdate = function () {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n if (commandMode)\n return cancelComposition();\n if (inComposition.useTextareaForIME) {\n host.onCompositionUpdate(text.value);\n }\n else {\n var data = text.value;\n sendText(data);\n if (inComposition.markerRange) {\n if (inComposition.context) {\n inComposition.markerRange.start.column = inComposition.selectionStart\n = inComposition.context.compositionStartOffset;\n }\n inComposition.markerRange.end.column = inComposition.markerRange.start.column\n + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;\n }\n }\n };\n var onCompositionEnd = function (e) {\n if (!host.onCompositionEnd || host.$readOnly)\n return;\n inComposition = false;\n host.onCompositionEnd();\n host.off(\"mousedown\", cancelComposition);\n if (e)\n onInput();\n };\n function cancelComposition() {\n ignoreFocusEvents = true;\n text.blur();\n text.focus();\n ignoreFocusEvents = false;\n }\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);\n function onKeyup(e) {\n if (e.keyCode == 27 && text.value.length < text.selectionStart) {\n if (!inComposition)\n lastValue = text.value;\n lastSelectionStart = lastSelectionEnd = -1;\n resetSelection();\n }\n syncComposition();\n }\n event.addListener(text, \"compositionstart\", onCompositionStart, host);\n event.addListener(text, \"compositionupdate\", onCompositionUpdate, host);\n event.addListener(text, \"keyup\", onKeyup, host);\n event.addListener(text, \"keydown\", syncComposition, host);\n event.addListener(text, \"compositionend\", onCompositionEnd, host);\n this.getElement = function () {\n return text;\n };\n this.setCommandMode = function (value) {\n commandMode = value;\n text.readOnly = false;\n };\n this.setReadOnly = function (readOnly) {\n if (!commandMode)\n text.readOnly = readOnly;\n };\n this.setCopyWithEmptySelection = function (value) {\n };\n this.onContextMenu = function (e) {\n afterContextMenu = true;\n resetSelection();\n host._emit(\"nativecontextmenu\", { target: host, domEvent: e });\n this.moveToMouse(e, true);\n };\n this.moveToMouse = function (e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n + \"text-indent: -\" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + \"px;\";\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight - 2;\n var move = function (e) {\n dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n };\n move(e);\n if (e.type != \"mousedown\")\n return;\n host.renderer.$isMousePressed = true;\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n host.renderer.$isMousePressed = false;\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$moveTextAreaToCursor();\n }, 0);\n }\n var onContextMenu = function (e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu, host);\n event.addListener(text, \"mousedown\", function (e) {\n e.preventDefault();\n onContextMenuClose();\n }, host);\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu, host);\n event.addListener(text, \"contextmenu\", onContextMenu, host);\n if (isIOS)\n addIosSelectionHandler(parentNode, host, text);\n function addIosSelectionHandler(parentNode, host, text) {\n var typingResetTimeout = null;\n var typing = false;\n text.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout)\n clearTimeout(typingResetTimeout);\n typing = true;\n }, true);\n text.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n }, true);\n var detectArrowKeys = function (e) {\n if (document.activeElement !== text)\n return;\n if (typing || inComposition || host.$mouseHandler.isMousePressed)\n return;\n if (copied) {\n return;\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var key = null;\n var modifier = 0;\n if (selectionStart == 0) {\n key = KEYS.up;\n }\n else if (selectionStart == 1) {\n key = KEYS.home;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == \"\\n\") {\n key = KEYS.end;\n }\n else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == \" \") {\n key = KEYS.left;\n modifier = MODS.option;\n }\n else if (selectionStart < lastSelectionStart\n || (selectionStart == lastSelectionStart\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.left;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n key = KEYS.down;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == \" \") {\n key = KEYS.right;\n modifier = MODS.option;\n }\n else if (selectionEnd > lastSelectionEnd\n || (selectionEnd == lastSelectionEnd\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.right;\n }\n if (selectionStart !== selectionEnd)\n modifier |= MODS.shift;\n if (key) {\n var result = host.onCommandKey({}, modifier, key);\n if (!result && host.commands) {\n key = KEYS.keyCodeToString(key);\n var command = host.commands.findKeyCommand(modifier, key);\n if (command)\n host.execCommand(command);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n resetSelection(\"\");\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function () {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n this.destroy = function () {\n if (text.parentElement)\n text.parentElement.removeChild(text);\n };\n};\nexports.TextInput = TextInput;\nexports.$setUserAgentForTests = function (_isMobile, _isIOS) {\n isMobile = _isMobile;\n isIOS = _isIOS;\n};\n\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"../lib/useragent\");\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 550; // milliseconds\nvar DefaultHandlers = /** @class */ (function () {\n function DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n mouseHandler[\"selectByLines\"] = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler[\"selectByWords\"] = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n }\n DefaultHandlers.prototype.onMouseDown = function (ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n if (!this.mousedownEvent)\n return;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n };\n DefaultHandlers.prototype.select = function () {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n }\n else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.extendSelectionBy = function (unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n }\n else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n }\n else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.selectByLinesEnd = function () {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n };\n DefaultHandlers.prototype.focusWait = function () {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n DefaultHandlers.prototype.onDoubleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n }\n else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n DefaultHandlers.prototype.onTripleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n }\n else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n DefaultHandlers.prototype.onQuadClick = function (ev) {\n var editor = this.editor;\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n DefaultHandlers.prototype.onMouseWheel = function (ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n var editor = this.editor;\n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = dt ? ev.wheelX / dt : prevScroll.vx;\n var vy = dt ? ev.wheelY / dt : prevScroll.vy;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n var direction = Math.abs(vx / vy);\n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n if (canScroll) {\n prevScroll.allowed = t;\n }\n else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n return DefaultHandlers;\n}());\nDefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd;\nexports.DefaultHandlers = DefaultHandlers;\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n if (cmp < 0)\n return { cursor: range.start, anchor: range.end };\n else\n return { cursor: range.end, anchor: range.start };\n}\n\n});\n\nace.define(\"ace/lib/scroll\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.preventParentScroll = function preventParentScroll(event) {\n event.stopPropagation();\n var target = event.currentTarget;\n var contentOverflows = target.scrollHeight > target.clientHeight;\n if (!contentOverflows) {\n event.preventDefault();\n }\n};\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/range\",\"ace/lib/scroll\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar Range = require(\"./range\").Range;\nvar preventParentScroll = require(\"./lib/scroll\").preventParentScroll;\nvar CLASSNAME = \"ace_tooltip\";\nvar Tooltip = /** @class */ (function () {\n function Tooltip(parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n }\n Tooltip.prototype.$init = function () {\n this.$element = dom.createElement(\"div\");\n this.$element.className = CLASSNAME;\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n Tooltip.prototype.getElement = function () {\n return this.$element || this.$init();\n };\n Tooltip.prototype.setText = function (text) {\n this.getElement().textContent = text;\n };\n Tooltip.prototype.setHtml = function (html) {\n this.getElement().innerHTML = html;\n };\n Tooltip.prototype.setPosition = function (x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n Tooltip.prototype.setClassName = function (className) {\n dom.addCssClass(this.getElement(), className);\n };\n Tooltip.prototype.setTheme = function (theme) {\n this.$element.className = CLASSNAME + \" \" +\n (theme.isDark ? \"ace_dark \" : \"\") + (theme.cssClass || \"\");\n };\n Tooltip.prototype.show = function (text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n Tooltip.prototype.hide = function (e) {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.getElement().className = CLASSNAME;\n this.isOpen = false;\n }\n };\n Tooltip.prototype.getHeight = function () {\n return this.getElement().offsetHeight;\n };\n Tooltip.prototype.getWidth = function () {\n return this.getElement().offsetWidth;\n };\n Tooltip.prototype.destroy = function () {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n return Tooltip;\n}());\nvar PopupManager = /** @class */ (function () {\n function PopupManager() {\n this.popups = [];\n }\n PopupManager.prototype.addPopup = function (popup) {\n this.popups.push(popup);\n this.updatePopups();\n };\n PopupManager.prototype.removePopup = function (popup) {\n var index = this.popups.indexOf(popup);\n if (index !== -1) {\n this.popups.splice(index, 1);\n this.updatePopups();\n }\n };\n PopupManager.prototype.updatePopups = function () {\n var e_1, _a, e_2, _b;\n this.popups.sort(function (a, b) { return b.priority - a.priority; });\n var visiblepopups = [];\n try {\n for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) {\n var popup = _d.value;\n var shouldDisplay = true;\n try {\n for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) {\n var visiblePopup = visiblepopups_1_1.value;\n if (this.doPopupsOverlap(visiblePopup, popup)) {\n shouldDisplay = false;\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (shouldDisplay) {\n visiblepopups.push(popup);\n }\n else {\n popup.hide();\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) {\n var rectA = popupA.getElement().getBoundingClientRect();\n var rectB = popupB.getElement().getBoundingClientRect();\n return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom\n > rectB.top);\n };\n return PopupManager;\n}());\nvar popupManager = new PopupManager();\nexports.popupManager = popupManager;\nexports.Tooltip = Tooltip;\nvar HoverTooltip = /** @class */ (function (_super) {\n __extends(HoverTooltip, _super);\n function HoverTooltip(parentNode) {\n if (parentNode === void 0) { parentNode = document.body; }\n var _this = _super.call(this, parentNode) || this;\n _this.timeout = undefined;\n _this.lastT = 0;\n _this.idleTime = 350;\n _this.lastEvent = undefined;\n _this.onMouseOut = _this.onMouseOut.bind(_this);\n _this.onMouseMove = _this.onMouseMove.bind(_this);\n _this.waitForHover = _this.waitForHover.bind(_this);\n _this.hide = _this.hide.bind(_this);\n var el = _this.getElement();\n el.style.whiteSpace = \"pre-wrap\";\n el.style.pointerEvents = \"auto\";\n el.addEventListener(\"mouseout\", _this.onMouseOut);\n el.tabIndex = -1;\n el.addEventListener(\"blur\", function () {\n if (!el.contains(document.activeElement))\n this.hide();\n }.bind(_this));\n el.addEventListener(\"wheel\", preventParentScroll);\n return _this;\n }\n HoverTooltip.prototype.addToEditor = function (editor) {\n editor.on(\"mousemove\", this.onMouseMove);\n editor.on(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().addEventListener(\"mouseout\", this.onMouseOut, true);\n };\n HoverTooltip.prototype.removeFromEditor = function (editor) {\n editor.off(\"mousemove\", this.onMouseMove);\n editor.off(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().removeEventListener(\"mouseout\", this.onMouseOut, true);\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n };\n HoverTooltip.prototype.onMouseMove = function (e, editor) {\n this.lastEvent = e;\n this.lastT = Date.now();\n var isMousePressed = editor.$mouseHandler.isMousePressed;\n if (this.isOpen) {\n var pos = this.lastEvent && this.lastEvent.getDocumentPosition();\n if (!this.range\n || !this.range.contains(pos.row, pos.column)\n || isMousePressed\n || this.isOutsideOfText(this.lastEvent)) {\n this.hide();\n }\n }\n if (this.timeout || isMousePressed)\n return;\n this.lastEvent = e;\n this.timeout = setTimeout(this.waitForHover, this.idleTime);\n };\n HoverTooltip.prototype.waitForHover = function () {\n if (this.timeout)\n clearTimeout(this.timeout);\n var dt = Date.now() - this.lastT;\n if (this.idleTime - dt > 10) {\n this.timeout = setTimeout(this.waitForHover, this.idleTime - dt);\n return;\n }\n this.timeout = null;\n if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) {\n this.$gatherData(this.lastEvent, this.lastEvent.editor);\n }\n };\n HoverTooltip.prototype.isOutsideOfText = function (e) {\n var editor = e.editor;\n var docPos = e.getDocumentPosition();\n var line = editor.session.getLine(docPos.row);\n if (docPos.column == line.length) {\n var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY);\n var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column);\n if (clippedPos.column != screenPos.column\n || clippedPos.row != screenPos.row) {\n return true;\n }\n }\n return false;\n };\n HoverTooltip.prototype.setDataProvider = function (value) {\n this.$gatherData = value;\n };\n HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) {\n var MARGIN = 10;\n if (startingEvent && startingEvent != this.lastEvent)\n return;\n if (this.isOpen && document.activeElement == this.getElement())\n return;\n var renderer = editor.renderer;\n if (!this.isOpen) {\n popupManager.addPopup(this);\n this.$registerCloseEvents();\n this.setTheme(renderer.theme);\n }\n this.isOpen = true;\n this.addMarker(range, editor.session);\n this.range = Range.fromPoints(range.start, range.end);\n var position = renderer.textToScreenCoordinates(range.start.row, range.start.column);\n var rect = renderer.scroller.getBoundingClientRect();\n if (position.pageX < rect.left)\n position.pageX = rect.left;\n var element = this.getElement();\n element.innerHTML = \"\";\n element.appendChild(domNode);\n element.style.maxHeight = \"\";\n element.style.display = \"block\";\n var labelHeight = element.clientHeight;\n var labelWidth = element.clientWidth;\n var spaceBelow = window.innerHeight - position.pageY - renderer.lineHeight;\n var isAbove = true;\n if (position.pageY - labelHeight < 0 && position.pageY < spaceBelow) {\n isAbove = false;\n }\n element.style.maxHeight = (isAbove ? position.pageY : spaceBelow) - MARGIN + \"px\";\n element.style.top = isAbove ? \"\" : position.pageY + renderer.lineHeight + \"px\";\n element.style.bottom = isAbove ? window.innerHeight - position.pageY + \"px\" : \"\";\n element.style.left = Math.min(position.pageX, window.innerWidth - labelWidth - MARGIN) + \"px\";\n };\n HoverTooltip.prototype.addMarker = function (range, session) {\n if (this.marker) {\n this.$markerSession.removeMarker(this.marker);\n }\n this.$markerSession = session;\n this.marker = session && session.addMarker(range, \"ace_highlight-marker\", \"text\");\n };\n HoverTooltip.prototype.hide = function (e) {\n if (!e && document.activeElement == this.getElement())\n return;\n if (e && e.target && (e.type != \"keydown\" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target))\n return;\n this.lastEvent = null;\n if (this.timeout)\n clearTimeout(this.timeout);\n this.timeout = null;\n this.addMarker(null);\n if (this.isOpen) {\n this.$removeCloseEvents();\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n popupManager.removePopup(this);\n }\n };\n HoverTooltip.prototype.$registerCloseEvents = function () {\n window.addEventListener(\"keydown\", this.hide, true);\n window.addEventListener(\"wheel\", this.hide, true);\n window.addEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.$removeCloseEvents = function () {\n window.removeEventListener(\"keydown\", this.hide, true);\n window.removeEventListener(\"wheel\", this.hide, true);\n window.removeEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.onMouseOut = function (e) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.lastEvent = null;\n if (!this.isOpen)\n return;\n if (!e.relatedTarget || this.getElement().contains(e.relatedTarget))\n return;\n if (e && e.currentTarget.contains(e.relatedTarget))\n return;\n if (!e.relatedTarget.classList.contains(\"ace_content\"))\n this.hide();\n };\n return HoverTooltip;\n}(Tooltip));\nexports.HoverTooltip = HoverTooltip;\n\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/tooltip\",\"ace/config\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar Tooltip = require(\"../tooltip\").Tooltip;\nvar nls = require(\"../config\").nls;\nvar lang = require(\"../lib/lang\");\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor);\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function (e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n if (gutterRegion == \"foldWidgets\")\n return;\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n var tooltipTimeout, mouseEvent;\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n tooltip.showTooltip(row);\n if (!tooltip.isOpen)\n return;\n editor.on(\"mousewheel\", hideTooltip);\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n }\n else {\n var gutterRow = mouseEvent.getGutterRow();\n var gutterCell = gutter.$lines.get(gutterRow);\n if (gutterCell) {\n var gutterElement = gutterCell.element.querySelector(\".ace_gutter_annotation\");\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n else {\n moveTooltip(mouseEvent);\n }\n }\n }\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltip.isOpen) {\n tooltip.hideTooltip();\n editor.off(\"mousewheel\", hideTooltip);\n }\n }\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function (e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n event.addListener(editor.renderer.$gutter, \"mouseout\", function (e) {\n mouseEvent = null;\n if (!tooltip.isOpen || tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n }, editor);\n editor.on(\"changeSession\", hideTooltip);\n editor.on(\"input\", hideTooltip);\n}\nexports.GutterHandler = GutterHandler;\nvar GutterTooltip = /** @class */ (function (_super) {\n __extends(GutterTooltip, _super);\n function GutterTooltip(editor) {\n var _this = _super.call(this, editor.container) || this;\n _this.editor = editor;\n _this.visibleTooltipRow;\n return _this;\n }\n GutterTooltip.prototype.setPosition = function (x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n Object.defineProperty(GutterTooltip, \"annotationLabels\", {\n get: function () {\n return {\n error: {\n singular: nls(\"gutter-tooltip.aria-label.error.singular\", \"error\"),\n plural: nls(\"gutter-tooltip.aria-label.error.plural\", \"errors\")\n },\n security: {\n singular: nls(\"gutter-tooltip.aria-label.security.singular\", \"security finding\"),\n plural: nls(\"gutter-tooltip.aria-label.security.plural\", \"security findings\")\n },\n warning: {\n singular: nls(\"gutter-tooltip.aria-label.warning.singular\", \"warning\"),\n plural: nls(\"gutter-tooltip.aria-label.warning.plural\", \"warnings\")\n },\n info: {\n singular: nls(\"gutter-tooltip.aria-label.info.singular\", \"information message\"),\n plural: nls(\"gutter-tooltip.aria-label.info.plural\", \"information messages\")\n },\n hint: {\n singular: nls(\"gutter-tooltip.aria-label.hint.singular\", \"suggestion\"),\n plural: nls(\"gutter-tooltip.aria-label.hint.plural\", \"suggestions\")\n }\n };\n },\n enumerable: false,\n configurable: true\n });\n GutterTooltip.prototype.showTooltip = function (row) {\n var _a;\n var gutter = this.editor.renderer.$gutterLayer;\n var annotationsInRow = gutter.$annotations[row];\n var annotation;\n if (annotationsInRow)\n annotation = {\n displayText: Array.from(annotationsInRow.displayText),\n type: Array.from(annotationsInRow.type)\n };\n else\n annotation = { displayText: [], type: [] };\n var fold = gutter.session.getFoldLine(row);\n if (fold && gutter.$showFoldedAnnotations) {\n var annotationsInFold = { error: [], security: [], warning: [], info: [], hint: [] };\n var severityRank = { error: 1, security: 2, warning: 3, info: 4, hint: 5 };\n var mostSevereAnnotationTypeInFold;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!gutter.$annotations[i])\n continue;\n for (var j = 0; j < gutter.$annotations[i].text.length; j++) {\n var annotationType = gutter.$annotations[i].type[j];\n annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]);\n if (!mostSevereAnnotationTypeInFold ||\n severityRank[annotationType] < severityRank[mostSevereAnnotationTypeInFold]) {\n mostSevereAnnotationTypeInFold = annotationType;\n }\n }\n }\n if ([\"error\", \"security\", \"warning\"].includes(mostSevereAnnotationTypeInFold)) {\n var summaryFoldedAnnotations = \"\".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), \" in folded code.\");\n annotation.displayText.push(summaryFoldedAnnotations);\n annotation.type.push(mostSevereAnnotationTypeInFold + \"_fold\");\n }\n }\n if (annotation.displayText.length === 0)\n return this.hideTooltip();\n var annotationMessages = { error: [], security: [], warning: [], info: [], hint: [] };\n var iconClassName = gutter.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n for (var i = 0; i < annotation.displayText.length; i++) {\n var lineElement = dom.createElement(\"span\");\n var iconElement = dom.createElement(\"span\");\n (_a = iconElement.classList).add.apply(_a, [\"ace_\".concat(annotation.type[i]), iconClassName]);\n iconElement.setAttribute(\"aria-label\", \"\".concat(GutterTooltip.annotationLabels[annotation.type[i].replace(\"_fold\", \"\")].singular));\n iconElement.setAttribute(\"role\", \"img\");\n iconElement.appendChild(dom.createTextNode(\" \"));\n lineElement.appendChild(iconElement);\n lineElement.appendChild(dom.createTextNode(annotation.displayText[i]));\n lineElement.appendChild(dom.createElement(\"br\"));\n annotationMessages[annotation.type[i].replace(\"_fold\", \"\")].push(lineElement);\n }\n var tooltipElement = this.getElement();\n dom.removeChildren(tooltipElement);\n annotationMessages.error.forEach(function (el) { return tooltipElement.appendChild(el); });\n annotationMessages.security.forEach(function (el) { return tooltipElement.appendChild(el); });\n annotationMessages.warning.forEach(function (el) { return tooltipElement.appendChild(el); });\n annotationMessages.info.forEach(function (el) { return tooltipElement.appendChild(el); });\n annotationMessages.hint.forEach(function (el) { return tooltipElement.appendChild(el); });\n tooltipElement.setAttribute(\"aria-live\", \"polite\");\n if (!this.isOpen) {\n this.setTheme(this.editor.renderer.theme);\n this.setClassName(\"ace_gutter-tooltip\");\n }\n this.show();\n this.visibleTooltipRow = row;\n this.editor._signal(\"showGutterTooltip\", this);\n };\n GutterTooltip.prototype.hideTooltip = function () {\n if (!this.isOpen) {\n return;\n }\n this.$element.removeAttribute(\"aria-live\");\n this.hide();\n this.visibleTooltipRow = undefined;\n this.editor._signal(\"hideGutterTooltip\", this);\n };\n GutterTooltip.annotationsToSummaryString = function (annotations) {\n var e_1, _a;\n var summary = [];\n var annotationTypes = [\"error\", \"security\", \"warning\", \"info\", \"hint\"];\n try {\n for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) {\n var annotationType = annotationTypes_1_1.value;\n if (!annotations[annotationType].length)\n continue;\n var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural;\n summary.push(\"\".concat(annotations[annotationType].length, \" \").concat(label));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return summary.join(\", \");\n };\n return GutterTooltip;\n}(Tooltip));\nexports.GutterTooltip = GutterTooltip;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar MouseEvent = /** @class */ (function () {\n function MouseEvent(domEvent, editor) { this.speed; this.wheelX; this.wheelY;\n this.domEvent = domEvent;\n this.editor = editor;\n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n this.$pos = null;\n this.$inSelection = null;\n this.propagationStopped = false;\n this.defaultPrevented = false;\n }\n MouseEvent.prototype.stopPropagation = function () {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n MouseEvent.prototype.preventDefault = function () {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n MouseEvent.prototype.stop = function () {\n this.stopPropagation();\n this.preventDefault();\n };\n MouseEvent.prototype.getDocumentPosition = function () {\n if (this.$pos)\n return this.$pos;\n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n MouseEvent.prototype.getGutterRow = function () {\n var documentRow = this.getDocumentPosition().row;\n var screenRow = this.editor.session.documentToScreenRow(documentRow, 0);\n var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0);\n return screenRow - screenTopRow;\n };\n MouseEvent.prototype.inSelection = function () {\n if (this.$inSelection !== null)\n return this.$inSelection;\n var editor = this.editor;\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n return this.$inSelection;\n };\n MouseEvent.prototype.getButton = function () {\n return event.getButton(this.domEvent);\n };\n MouseEvent.prototype.getShiftKey = function () {\n return this.domEvent.shiftKey;\n };\n MouseEvent.prototype.getAccelKey = function () {\n return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey;\n };\n return MouseEvent;\n}());\nexports.MouseEvent = MouseEvent;\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\nfunction DragdropHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var dragImage = dom.createElement(\"div\");\n dragImage.style.cssText = \"top:-100px;position:absolute;z-index:2147483647;opacity:0.5\";\n dragImage.textContent = \"\\xa0\";\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.on(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n this.onDragStart = function (e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function () {\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n editor.container.appendChild(dragImage);\n dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);\n setTimeout(function () {\n editor.container.removeChild(dragImage);\n });\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n isInternal = true;\n this.setState(\"drag\");\n };\n this.onDragEnd = function (e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.$resetCursorStyle();\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n this.onDragEnter = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragOver = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragLeave = function (e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n this.onDrop = function (e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n }\n else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n }\n else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler), editor);\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.moveCursorToPosition(cursor);\n cursorMovedTime = now;\n cursorPointOnCaretMoved = { x: x, y: y };\n }\n else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n }\n else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = { row: cursor.row, column: cursor.column };\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n }\n else {\n autoScrollStartTime = null;\n }\n }\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.selection.fromOrientedRange(range);\n if (editor.isFocused() && !isInternal)\n editor.$resetCursorStyle();\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function () {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function (type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n }\n catch (e) { }\n var dropEffect = \"none\";\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n return dropEffect;\n }\n}\n(function () {\n this.dragWait = function () {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n this.dragWaitEnd = function () {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n this.dragReadyEnd = function (e) {\n this.editor.$resetCursorStyle();\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n this.startDrag = function () {\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n this.onMouseDrag = function (e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n this.onMouseDown = function (e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n }\n else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n}).call(DragdropHandler.prototype);\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/mouse/touch_handler\",[\"require\",\"exports\",\"module\",\"ace/mouse/mouse_event\",\"ace/lib/event\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar event = require(\"../lib/event\");\nvar dom = require(\"../lib/dom\");\nexports.addTouchListeners = function (el, editor) {\n var mode = \"scroll\";\n var startX;\n var startY;\n var touchStartT;\n var lastT;\n var longTouchTimer;\n var animationTimer;\n var animationSteps = 0;\n var pos;\n var clickCount = 0;\n var vX = 0;\n var vY = 0;\n var pressed;\n var contextMenu;\n function createContextMenu() {\n var clipboard = window.navigator && window.navigator.clipboard;\n var isOpen = false;\n var updateMenu = function () {\n var selected = editor.getCopyText();\n var hasUndo = editor.session.getUndoManager().hasUndo();\n contextMenu.replaceChild(dom.buildDom(isOpen ? [\"span\",\n !selected && canExecuteCommand(\"selectall\") && [\"span\", { class: \"ace_mobile-button\", action: \"selectall\" }, \"Select All\"],\n selected && canExecuteCommand(\"copy\") && [\"span\", { class: \"ace_mobile-button\", action: \"copy\" }, \"Copy\"],\n selected && canExecuteCommand(\"cut\") && [\"span\", { class: \"ace_mobile-button\", action: \"cut\" }, \"Cut\"],\n clipboard && canExecuteCommand(\"paste\") && [\"span\", { class: \"ace_mobile-button\", action: \"paste\" }, \"Paste\"],\n hasUndo && canExecuteCommand(\"undo\") && [\"span\", { class: \"ace_mobile-button\", action: \"undo\" }, \"Undo\"],\n canExecuteCommand(\"find\") && [\"span\", { class: \"ace_mobile-button\", action: \"find\" }, \"Find\"],\n canExecuteCommand(\"openCommandPalette\") && [\"span\", { class: \"ace_mobile-button\", action: \"openCommandPalette\" }, \"Palette\"]\n ] : [\"span\"]), contextMenu.firstChild);\n };\n var canExecuteCommand = function (/** @type {string} */ cmd) {\n return editor.commands.canExecute(cmd, editor);\n };\n var handleClick = function (e) {\n var action = e.target.getAttribute(\"action\");\n if (action == \"more\" || !isOpen) {\n isOpen = !isOpen;\n return updateMenu();\n }\n if (action == \"paste\") {\n clipboard.readText().then(function (text) {\n editor.execCommand(action, text);\n });\n }\n else if (action) {\n if (action == \"cut\" || action == \"copy\") {\n if (clipboard)\n clipboard.writeText(editor.getCopyText());\n else\n document.execCommand(\"copy\");\n }\n editor.execCommand(action);\n }\n contextMenu.firstChild.style.display = \"none\";\n isOpen = false;\n if (action != \"openCommandPalette\")\n editor.focus();\n };\n contextMenu = dom.buildDom([\"div\",\n {\n class: \"ace_mobile-menu\",\n ontouchstart: function (e) {\n mode = \"menu\";\n e.stopPropagation();\n e.preventDefault();\n editor.textInput.focus();\n },\n ontouchend: function (e) {\n e.stopPropagation();\n e.preventDefault();\n handleClick(e);\n },\n onclick: handleClick\n },\n [\"span\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"more\" }, \"...\"]\n ], editor.container);\n }\n function showContextMenu() {\n if (!editor.getOption(\"enableMobileMenu\")) {\n if (contextMenu) {\n hideContextMenu();\n }\n return;\n }\n if (!contextMenu)\n createContextMenu();\n var cursor = editor.selection.cursor;\n var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);\n var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;\n var scrollLeft = editor.renderer.scrollLeft;\n var rect = editor.container.getBoundingClientRect();\n contextMenu.style.top = pagePos.pageY - rect.top - 3 + \"px\";\n if (pagePos.pageX - rect.left < rect.width - 70) {\n contextMenu.style.left = \"\";\n contextMenu.style.right = \"10px\";\n }\n else {\n contextMenu.style.right = \"\";\n contextMenu.style.left = leftOffset + scrollLeft - rect.left + \"px\";\n }\n contextMenu.style.display = \"\";\n contextMenu.firstChild.style.display = \"none\";\n editor.on(\"input\", hideContextMenu);\n }\n function hideContextMenu(e) {\n if (contextMenu)\n contextMenu.style.display = \"none\";\n editor.off(\"input\", hideContextMenu);\n }\n function handleLongTap() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n var range = editor.selection.getRange();\n var inSelection = range.contains(pos.row, pos.column);\n if (range.isEmpty() || !inSelection) {\n editor.selection.moveToPosition(pos);\n editor.selection.selectWord();\n }\n mode = \"wait\";\n showContextMenu();\n }\n function switchToSelectionMode() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n editor.selection.moveToPosition(pos);\n var range = clickCount >= 2\n ? editor.selection.getLineRange(pos.row)\n : editor.session.getBracketRange(pos);\n if (range && !range.isEmpty()) {\n editor.selection.setRange(range);\n }\n else {\n editor.selection.selectWord();\n }\n mode = \"wait\";\n }\n event.addListener(el, \"contextmenu\", function (e) {\n if (!pressed)\n return;\n var textarea = editor.textInput.getElement();\n textarea.focus();\n }, editor);\n event.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n if (longTouchTimer || touches.length > 1) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n touchStartT = -1;\n mode = \"zoom\";\n return;\n }\n pressed = editor.$mouseHandler.isMousePressed = true;\n var h = editor.renderer.layerConfig.lineHeight;\n var w = editor.renderer.layerConfig.lineHeight;\n var t = e.timeStamp;\n lastT = t;\n var touchObj = touches[0];\n var x = touchObj.clientX;\n var y = touchObj.clientY;\n if (Math.abs(startX - x) + Math.abs(startY - y) > h)\n touchStartT = -1;\n startX = e.clientX = x;\n startY = e.clientY = y;\n vX = vY = 0;\n var ev = new MouseEvent(e, editor);\n pos = ev.getDocumentPosition();\n if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {\n clickCount++;\n e.preventDefault();\n e.button = 0;\n switchToSelectionMode();\n }\n else {\n clickCount = 0;\n var cursor = editor.selection.cursor;\n var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;\n var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);\n var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);\n var rect = editor.renderer.scroller.getBoundingClientRect();\n var offsetTop = editor.renderer.layerConfig.offset;\n var offsetLeft = editor.renderer.scrollLeft;\n var weightedDistance = function (x, y) {\n x = x / w;\n y = y / h - 0.75;\n return x * x + y * y;\n };\n if (e.clientX < rect.left) {\n mode = \"zoom\";\n return;\n }\n var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop);\n var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop);\n if (diff1 < 3.5 && diff2 < 3.5)\n mode = diff1 > diff2 ? \"cursor\" : \"anchor\";\n if (diff2 < 3.5)\n mode = \"anchor\";\n else if (diff1 < 3.5)\n mode = \"cursor\";\n else\n mode = \"scroll\";\n longTouchTimer = setTimeout(handleLongTap, 450);\n }\n touchStartT = t;\n }, editor);\n event.addListener(el, \"touchend\", function (e) {\n pressed = editor.$mouseHandler.isMousePressed = false;\n if (animationTimer)\n clearInterval(animationTimer);\n if (mode == \"zoom\") {\n mode = \"\";\n animationSteps = 0;\n }\n else if (longTouchTimer) {\n editor.selection.moveToPosition(pos);\n animationSteps = 0;\n showContextMenu();\n }\n else if (mode == \"scroll\") {\n animate();\n hideContextMenu();\n }\n else {\n showContextMenu();\n }\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }, editor);\n event.addListener(el, \"touchmove\", function (e) {\n if (longTouchTimer) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }\n var touches = e.touches;\n if (touches.length > 1 || mode == \"zoom\")\n return;\n var touchObj = touches[0];\n var wheelX = startX - touchObj.clientX;\n var wheelY = startY - touchObj.clientY;\n if (mode == \"wait\") {\n if (wheelX * wheelX + wheelY * wheelY > 4)\n mode = \"cursor\";\n else\n return e.preventDefault();\n }\n startX = touchObj.clientX;\n startY = touchObj.clientY;\n e.clientX = touchObj.clientX;\n e.clientY = touchObj.clientY;\n var t = e.timeStamp;\n var dt = t - lastT;\n lastT = t;\n if (mode == \"scroll\") {\n var mouseEvent = new MouseEvent(e, editor);\n mouseEvent.speed = 1;\n mouseEvent.wheelX = wheelX;\n mouseEvent.wheelY = wheelY;\n if (10 * Math.abs(wheelX) < Math.abs(wheelY))\n wheelX = 0;\n if (10 * Math.abs(wheelY) < Math.abs(wheelX))\n wheelY = 0;\n if (dt != 0) {\n vX = wheelX / dt;\n vY = wheelY / dt;\n }\n editor._emit(\"mousewheel\", mouseEvent);\n if (!mouseEvent.propagationStopped) {\n vX = vY = 0;\n }\n }\n else {\n var ev = new MouseEvent(e, editor);\n var pos = ev.getDocumentPosition();\n if (mode == \"cursor\")\n editor.selection.moveCursorToPosition(pos);\n else if (mode == \"anchor\")\n editor.selection.setSelectionAnchor(pos.row, pos.column);\n editor.renderer.scrollCursorIntoView(pos);\n e.preventDefault();\n }\n }, editor);\n function animate() {\n animationSteps += 60;\n animationTimer = setInterval(function () {\n if (animationSteps-- <= 0) {\n clearInterval(animationTimer);\n animationTimer = null;\n }\n if (Math.abs(vX) < 0.01)\n vX = 0;\n if (Math.abs(vY) < 0.01)\n vY = 0;\n if (animationSteps < 20)\n vX = 0.9 * vX;\n if (animationSteps < 20)\n vY = 0.9 * vY;\n var oldScrollTop = editor.session.getScrollTop();\n editor.renderer.scrollBy(10 * vX, 10 * vY);\n if (oldScrollTop == editor.session.getScrollTop())\n animationSteps = 0;\n }, 10);\n }\n};\n\n});\n\nace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop_handler\",\"ace/mouse/touch_handler\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar DefaultHandlers = require(\"./default_handlers\").DefaultHandlers;\nvar DefaultGutterHandler = require(\"./default_gutter_handler\").GutterHandler;\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar DragdropHandler = require(\"./dragdrop_handler\").DragdropHandler;\nvar addTouchListeners = require(\"./touch_handler\").addTouchListeners;\nvar config = require(\"../config\");\nvar MouseHandler = /** @class */ (function () {\n function MouseHandler(editor) { this.$dragDelay; this.$dragEnabled; this.$mouseMoved; this.mouseEvent; this.$focusTimeout;\n var _self = this;\n this.editor = editor;\n new DefaultHandlers(this);\n new DefaultGutterHandler(this);\n new DragdropHandler(this);\n var focusEditor = function (e) {\n var windowBlurred = !document.hasFocus || !document.hasFocus()\n || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement());\n if (windowBlurred)\n window.focus();\n editor.focus();\n setTimeout(function () {\n if (!editor.isFocused())\n editor.focus();\n });\n };\n var mouseTarget = editor.renderer.getMouseEventTarget();\n event.addListener(mouseTarget, \"click\", this.onMouseEvent.bind(this, \"click\"), editor);\n event.addListener(mouseTarget, \"mousemove\", this.onMouseMove.bind(this, \"mousemove\"), editor);\n event.addMultiMouseDownListener([\n mouseTarget,\n editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner,\n editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner,\n editor.textInput && editor.textInput.getElement()\n ].filter(Boolean), [400, 300, 250], this, \"onMouseEvent\", editor);\n event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, \"mousewheel\"), editor);\n addTouchListeners(editor.container, editor);\n var gutterEl = editor.renderer.$gutter;\n event.addListener(gutterEl, \"mousedown\", this.onMouseEvent.bind(this, \"guttermousedown\"), editor);\n event.addListener(gutterEl, \"click\", this.onMouseEvent.bind(this, \"gutterclick\"), editor);\n event.addListener(gutterEl, \"dblclick\", this.onMouseEvent.bind(this, \"gutterdblclick\"), editor);\n event.addListener(gutterEl, \"mousemove\", this.onMouseEvent.bind(this, \"guttermousemove\"), editor);\n event.addListener(mouseTarget, \"mousedown\", focusEditor, editor);\n event.addListener(gutterEl, \"mousedown\", focusEditor, editor);\n if (useragent.isIE && editor.renderer.scrollBarV) {\n event.addListener(editor.renderer.scrollBarV.element, \"mousedown\", focusEditor, editor);\n event.addListener(editor.renderer.scrollBarH.element, \"mousedown\", focusEditor, editor);\n }\n editor.on(\"mousemove\", function (e) {\n if (_self.state || _self.$dragDelay || !_self.$dragEnabled)\n return;\n var character = editor.renderer.screenToTextCoordinates(e.x, e.y);\n var range = editor.session.selection.getRange();\n var renderer = editor.renderer;\n if (!range.isEmpty() && range.insideStart(character.row, character.column)) {\n renderer.setCursorStyle(\"default\");\n }\n else {\n renderer.setCursorStyle(\"\");\n }\n }, //@ts-expect-error TODO: seems mistyping - should be boolean\n editor);\n }\n MouseHandler.prototype.onMouseEvent = function (name, e) {\n if (!this.editor.session)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseMove = function (name, e) {\n var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;\n if (!listeners || !listeners.length)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseWheel = function (name, e) {\n var mouseEvent = new MouseEvent(e, this.editor);\n mouseEvent.speed = this.$scrollSpeed * 2;\n mouseEvent.wheelX = e.wheelX;\n mouseEvent.wheelY = e.wheelY;\n this.editor._emit(name, mouseEvent);\n };\n MouseHandler.prototype.setState = function (state) {\n this.state = state;\n };\n MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) {\n this.x = ev.x;\n this.y = ev.y;\n this.isMousePressed = true;\n var editor = this.editor;\n var renderer = this.editor.renderer;\n renderer.$isMousePressed = true;\n var self = this;\n var onMouseMove = function (e) {\n if (!e)\n return;\n if (useragent.isWebKit && !e.which && self.releaseMouse)\n return self.releaseMouse();\n self.x = e.clientX;\n self.y = e.clientY;\n mouseMoveHandler && mouseMoveHandler(e);\n self.mouseEvent = new MouseEvent(e, self.editor);\n self.$mouseMoved = true;\n };\n var onCaptureEnd = function (e) {\n editor.off(\"beforeEndOperation\", onOperationEnd);\n clearInterval(timerId);\n if (editor.session)\n onCaptureInterval();\n self[self.state + \"End\"] && self[self.state + \"End\"](e);\n self.state = \"\";\n self.isMousePressed = renderer.$isMousePressed = false;\n if (renderer.$keepTextAreaAtCursor)\n renderer.$moveTextAreaToCursor();\n self.$onCaptureMouseMove = self.releaseMouse = null;\n e && self.onMouseEvent(\"mouseup\", e);\n editor.endOperation();\n };\n var onCaptureInterval = function () {\n self[self.state] && self[self.state]();\n self.$mouseMoved = false;\n };\n if (useragent.isOldIE && ev.domEvent.type == \"dblclick\") {\n return setTimeout(function () { onCaptureEnd(ev); });\n }\n var onOperationEnd = function (e) {\n if (!self.releaseMouse)\n return;\n if (editor.curOp.command.name && editor.curOp.selectionChanged) {\n self[self.state + \"End\"] && self[self.state + \"End\"]();\n self.state = \"\";\n self.releaseMouse();\n }\n };\n editor.on(\"beforeEndOperation\", onOperationEnd);\n editor.startOperation({ command: { name: \"mouse\" } });\n self.$onCaptureMouseMove = onMouseMove;\n self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd);\n var timerId = setInterval(onCaptureInterval, 20);\n };\n MouseHandler.prototype.cancelContextMenu = function () {\n var stop = function (e) {\n if (e && e.domEvent && e.domEvent.type != \"contextmenu\")\n return;\n this.editor.off(\"nativecontextmenu\", stop);\n if (e && e.domEvent)\n event.stopEvent(e.domEvent);\n }.bind(this);\n setTimeout(stop, 10);\n this.editor.on(\"nativecontextmenu\", stop);\n };\n MouseHandler.prototype.destroy = function () {\n if (this.releaseMouse)\n this.releaseMouse();\n };\n return MouseHandler;\n}());\nMouseHandler.prototype.releaseMouse = null;\nconfig.defineOptions(MouseHandler.prototype, \"mouseHandler\", {\n scrollSpeed: { initialValue: 2 },\n dragDelay: { initialValue: (useragent.isMac ? 150 : 0) },\n dragEnabled: { initialValue: true },\n focusTimeout: { initialValue: 0 },\n tooltipFollowsMouse: { initialValue: true }\n});\nexports.MouseHandler = MouseHandler;\n\n});\n\nace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar FoldHandler = /** @class */ (function () {\n function FoldHandler(editor) {\n editor.on(\"click\", function (e) {\n var position = e.getDocumentPosition();\n var session = editor.session;\n var fold = session.getFoldAt(position.row, position.column, 1);\n if (fold) {\n if (e.getAccelKey())\n session.removeFold(fold);\n else\n session.expandFold(fold);\n e.stop();\n }\n var target = e.domEvent && e.domEvent.target;\n if (target && dom.hasCssClass(target, \"ace_inline_button\")) {\n if (dom.hasCssClass(target, \"ace_toggle_wrap\")) {\n session.setOption(\"wrap\", !session.getUseWrapMode());\n editor.renderer.scrollCursorIntoView();\n }\n }\n });\n editor.on(\"gutterclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n if (session.foldWidgets && session.foldWidgets[row])\n editor.session.onFoldWidgetClick(row, e);\n if (!editor.isFocused())\n editor.focus();\n e.stop();\n }\n });\n editor.on(\"gutterdblclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n var data = session.getParentFoldRangeData(row, true);\n var range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = session.getFoldAt(row, session.getLine(row).length, 1);\n if (fold) {\n session.removeFold(fold);\n }\n else {\n session.addFold(\"...\", range);\n editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 });\n }\n }\n e.stop();\n }\n });\n }\n return FoldHandler;\n}());\nexports.FoldHandler = FoldHandler;\n\n});\n\nace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar keyUtil = require(\"../lib/keys\");\nvar event = require(\"../lib/event\");\nvar KeyBinding = /** @class */ (function () {\n function KeyBinding(editor) {\n this.$editor = editor;\n this.$data = { editor: editor };\n this.$handlers = [];\n this.setDefaultHandler(editor.commands);\n }\n KeyBinding.prototype.setDefaultHandler = function (kb) {\n this.removeKeyboardHandler(this.$defaultHandler);\n this.$defaultHandler = kb;\n this.addKeyboardHandler(kb, 0);\n };\n KeyBinding.prototype.setKeyboardHandler = function (kb) {\n var h = this.$handlers;\n if (h[h.length - 1] == kb)\n return;\n while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler)\n this.removeKeyboardHandler(h[h.length - 1]);\n this.addKeyboardHandler(kb, 1);\n };\n KeyBinding.prototype.addKeyboardHandler = function (kb, pos) {\n if (!kb)\n return;\n if (typeof kb == \"function\" && !kb.handleKeyboard)\n kb.handleKeyboard = kb;\n var i = this.$handlers.indexOf(kb);\n if (i != -1)\n this.$handlers.splice(i, 1);\n if (pos == undefined)\n this.$handlers.push(kb);\n else\n this.$handlers.splice(pos, 0, kb);\n if (i == -1 && kb.attach)\n kb.attach(this.$editor);\n };\n KeyBinding.prototype.removeKeyboardHandler = function (kb) {\n var i = this.$handlers.indexOf(kb);\n if (i == -1)\n return false;\n this.$handlers.splice(i, 1);\n kb.detach && kb.detach(this.$editor);\n return true;\n };\n KeyBinding.prototype.getKeyboardHandler = function () {\n return this.$handlers[this.$handlers.length - 1];\n };\n KeyBinding.prototype.getStatusText = function () {\n var data = this.$data;\n var editor = data.editor;\n return this.$handlers.map(function (h) {\n return h.getStatusText && h.getStatusText(editor, data) || \"\";\n }).filter(Boolean).join(\" \");\n };\n KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) {\n var toExecute;\n var success = false;\n var commands = this.$editor.commands;\n for (var i = this.$handlers.length; i--;) {\n toExecute = this.$handlers[i].handleKeyboard(\n this.$data, hashId, keyString, keyCode, e);\n if (!toExecute || !toExecute.command)\n continue;\n if (toExecute.command == \"null\") {\n success = true;\n }\n else {\n success = commands.exec(toExecute.command, this.$editor, toExecute.args, e);\n }\n if (success && e && hashId != -1 &&\n toExecute[\"passEvent\"] != true && toExecute.command[\"passEvent\"] != true) {\n event.stopEvent(e);\n }\n if (success)\n break;\n }\n if (!success && hashId == -1) {\n toExecute = { command: \"insertstring\" };\n success = commands.exec(\"insertstring\", this.$editor, keyString);\n }\n if (success && this.$editor._signal)\n this.$editor._signal(\"keyboardActivity\", toExecute);\n return success;\n };\n KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n return this.$callKeyboardHandlers(hashId, keyString, keyCode, e);\n };\n KeyBinding.prototype.onTextInput = function (text) {\n return this.$callKeyboardHandlers(-1, text);\n };\n return KeyBinding;\n}());\nexports.KeyBinding = KeyBinding;\n\n});\n\nace.define(\"ace/lib/bidiutil\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar ArabicAlefBetIntervalsBegine = ['\\u0621', '\\u0641'];\nvar ArabicAlefBetIntervalsEnd = ['\\u063A', '\\u064a'];\nvar dir = 0, hiLevel = 0;\nvar lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false;\nvar impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]\n];\nvar impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1]\n];\nvar LTR = 0, RTL = 1;\nvar L = 0;\nvar R = 1;\nvar EN = 2;\nvar AN = 3;\nvar ON = 4;\nvar B = 5;\nvar S = 6;\nvar AL = 7;\nvar WS = 8;\nvar CS = 9;\nvar ES = 10;\nvar ET = 11;\nvar NSM = 12;\nvar LRE = 13;\nvar RLE = 14;\nvar PDF = 15;\nvar LRO = 16;\nvar RLO = 17;\nvar BN = 18;\nvar UnicodeTBL00 = [\n BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S,\n WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS,\n EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN,\n BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON,\n ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON\n];\nvar UnicodeTBL20 = [\n WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS,\n ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS\n];\nfunction _computeLevels(chars, levels, len, charTypes) {\n var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = [];\n if (!charTypes) {\n for (i = 0, charTypes = []; i < len; i++) {\n charTypes[i] = _getCharacterType(chars[i]);\n }\n }\n hiLevel = dir;\n lastArabic = false;\n hasUBAT_AL = false;\n hasUBAT_B = false;\n hasUBAT_S = false;\n for (ix = 0; ix < len; ix++) {\n prevState = newState;\n classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix);\n newState = impTab[prevState][newClass];\n action = newState & 0xF0;\n newState &= 0x0F;\n levels[ix] = newLevel = impTab[newState][5];\n if (action > 0) {\n if (action == 0x10) {\n for (i = condPos; i < ix; i++) {\n levels[i] = 1;\n }\n condPos = -1;\n }\n else {\n condPos = -1;\n }\n }\n cond = impTab[newState][6];\n if (cond) {\n if (condPos == -1) {\n condPos = ix;\n }\n }\n else {\n if (condPos > -1) {\n for (i = condPos; i < ix; i++) {\n levels[i] = newLevel;\n }\n condPos = -1;\n }\n }\n if (charTypes[ix] == B) {\n levels[ix] = 0;\n }\n hiLevel |= newLevel;\n }\n if (hasUBAT_S) {\n for (i = 0; i < len; i++) {\n if (charTypes[i] == S) {\n levels[i] = dir;\n for (var j = i - 1; j >= 0; j--) {\n if (charTypes[j] == WS) {\n levels[j] = dir;\n }\n else {\n break;\n }\n }\n }\n }\n }\n}\nfunction _invertLevel(lev, levels, _array) {\n if (hiLevel < lev) {\n return;\n }\n if (lev == 1 && dir == RTL && !hasUBAT_B) {\n _array.reverse();\n return;\n }\n var len = _array.length, start = 0, end, lo, hi, tmp;\n while (start < len) {\n if (levels[start] >= lev) {\n end = start + 1;\n while (end < len && levels[end] >= lev) {\n end++;\n }\n for (lo = start, hi = end - 1; lo < hi; lo++, hi--) {\n tmp = _array[lo];\n _array[lo] = _array[hi];\n _array[hi] = tmp;\n }\n start = end;\n }\n start++;\n }\n}\nfunction _getCharClass(chars, types, classes, ix) {\n var cType = types[ix], wType, nType, len, i;\n switch (cType) {\n case L:\n case R:\n lastArabic = false;\n case ON:\n case AN:\n return cType;\n case EN:\n return lastArabic ? AN : EN;\n case AL:\n lastArabic = true;\n hasUBAT_AL = true;\n return R;\n case WS:\n return ON;\n case CS:\n if (ix < 1 || (ix + 1) >= types.length ||\n ((wType = classes[ix - 1]) != EN && wType != AN) ||\n ((nType = types[ix + 1]) != EN && nType != AN)) {\n return ON;\n }\n if (lastArabic) {\n nType = AN;\n }\n return nType == wType ? nType : ON;\n case ES:\n wType = ix > 0 ? classes[ix - 1] : B;\n if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) {\n return EN;\n }\n return ON;\n case ET:\n if (ix > 0 && classes[ix - 1] == EN) {\n return EN;\n }\n if (lastArabic) {\n return ON;\n }\n i = ix + 1;\n len = types.length;\n while (i < len && types[i] == ET) {\n i++;\n }\n if (i < len && types[i] == EN) {\n return EN;\n }\n return ON;\n case NSM:\n len = types.length;\n i = ix + 1;\n while (i < len && types[i] == NSM) {\n i++;\n }\n if (i < len) {\n var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n wType = types[i];\n if (rtlCandidate && (wType == R || wType == AL)) {\n return R;\n }\n }\n if (ix < 1 || (wType = types[ix - 1]) == B) {\n return ON;\n }\n return classes[ix - 1];\n case B:\n lastArabic = false;\n hasUBAT_B = true;\n return dir;\n case S:\n hasUBAT_S = true;\n return ON;\n case LRE:\n case RLE:\n case LRO:\n case RLO:\n case PDF:\n lastArabic = false;\n case BN:\n return ON;\n }\n}\nfunction _getCharacterType(ch) {\n var uc = ch.charCodeAt(0), hi = uc >> 8;\n if (hi == 0) {\n return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n }\n else if (hi == 5) {\n return (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n }\n else if (hi == 6) {\n if (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n return NSM;\n else if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n return AN;\n else if (uc == 0x066A)\n return ET;\n else if (/[\\u06f0-\\u06f9]/.test(ch))\n return EN;\n else\n return AL;\n }\n else if (hi == 0x20 && uc <= 0x205F) {\n return UnicodeTBL20[uc & 0xFF];\n }\n else if (hi == 0xFE) {\n return (uc >= 0xFE70 ? AL : ON);\n }\n return ON;\n}\nfunction _isArabicDiacritics(ch) {\n return (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\nexports.RLE = 7;\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function (text, textCharTypes, isRtl) {\n if (text.length < 2)\n return {};\n var chars = text.split(\"\"), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = [];\n dir = isRtl ? RTL : LTR;\n _computeLevels(chars, levels, chars.length, textCharTypes);\n for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++)\n ;\n _invertLevel(2, levels, logicalFromVisual);\n _invertLevel(1, levels, logicalFromVisual);\n for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n if (textCharTypes[i] === AN) {\n levels[i] = exports.AN;\n }\n else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)\n || textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n levels[i] = exports.ON_R;\n }\n else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n levels[i - 1] = levels[i] = exports.R_H;\n i++;\n }\n }\n if (chars[chars.length - 1] === exports.DOT)\n levels[chars.length - 1] = exports.B;\n if (chars[0] === '\\u202B')\n levels[0] = exports.RLE;\n for (var i = 0; i < logicalFromVisual.length; i++) {\n bidiLevels[i] = levels[logicalFromVisual[i]];\n }\n return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels };\n};\nexports.hasBidiCharacters = function (text, textCharTypes) {\n var ret = false;\n for (var i = 0; i < text.length; i++) {\n textCharTypes[i] = _getCharacterType(text.charAt(i));\n if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))\n ret = true;\n }\n return ret;\n};\nexports.getVisualFromLogicalIdx = function (logIdx, rowMap) {\n for (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n if (rowMap.logicalFromVisual[i] == logIdx)\n return i;\n }\n return 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar bidiUtil = require(\"./lib/bidiutil\");\nvar lang = require(\"./lib/lang\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\u202B]/;\nvar BidiHandler = /** @class */ (function () {\n function BidiHandler(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.$isRtl = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.EOF = \"\\xB6\";\n this.RLE = \"\\u202B\";\n this.contentWidth = 0;\n this.fontMetrics = null;\n this.rtlLineOffset = 0;\n this.wrapOffset = 0;\n this.isMoveLeftOperation = false;\n this.seenBidi = bidiRE.test(session.getValue());\n }\n BidiHandler.prototype.isBidiRow = function (screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n BidiHandler.prototype.onChange = function (delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n }\n else {\n this.currentRow = null;\n }\n };\n BidiHandler.prototype.getDocumentRow = function () {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n return docRow;\n };\n BidiHandler.prototype.getSplitIndex = function () {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n prevIndex = currentIndex;\n splitIndex++;\n }\n }\n else {\n splitIndex = this.currentRow;\n }\n return splitIndex;\n };\n BidiHandler.prototype.updateRowLine = function (docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL;\n this.wrapIndent = 0;\n this.line = this.session.getLine(docRow);\n this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n if (splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :\n this.line.substring(splits[splits.length - 1]);\n }\n else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n if (splitIndex == splits.length) {\n this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;\n }\n }\n }\n else {\n this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function (ch, i) {\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n if (this.isRtlDir) {\n this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;\n this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;\n }\n };\n BidiHandler.prototype.updateBidiMap = function () {\n var textCharTypes = [];\n if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {\n this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);\n }\n else {\n this.bidiMap = {};\n }\n };\n BidiHandler.prototype.markAsDirty = function () {\n this.currentRow = null;\n };\n BidiHandler.prototype.updateCharacterWidths = function (fontMetrics) {\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n this.fontMetrics = fontMetrics;\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;\n this.currentRow = null;\n };\n BidiHandler.prototype.setShowInvisibles = function (showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n BidiHandler.prototype.setEolChar = function (eolChar) {\n this.EOL = eolChar;\n };\n BidiHandler.prototype.setContentWidth = function (width) {\n this.contentWidth = width;\n };\n BidiHandler.prototype.isRtlLine = function (row) {\n if (this.$isRtl)\n return true;\n if (row != undefined)\n return (this.session.getLine(row).charAt(0) == this.RLE);\n else\n return this.isRtlDir;\n };\n BidiHandler.prototype.setRtlDirection = function (editor, isRtlDir) {\n var cursor = editor.getCursorPosition();\n for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {\n if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)\n editor.session.doc.removeInLine(row, 0, 1);\n else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)\n editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE);\n }\n };\n BidiHandler.prototype.getPosLeft = function (col) {\n col -= this.wrapIndent;\n var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;\n var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0;\n if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))\n left += this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n if (this.isRtlDir)\n left += this.rtlLineOffset;\n return left;\n };\n BidiHandler.prototype.getSelections = function (startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0;\n if (this.wrapIndent)\n offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n }\n else if (!isSelected && isSelectedPrev) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n if (isSelected && (visIdx === levels.length)) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n if (this.isRtlDir) {\n for (var i = 0; i < selections.length; i++) {\n selections[i].left += this.rtlLineOffset;\n }\n }\n return selections;\n };\n BidiHandler.prototype.offsetToCol = function (posX) {\n if (this.isRtlDir)\n posX -= this.rtlLineOffset;\n var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n while (posX > offset + charWidth / 2) {\n offset += charWidth;\n if (visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) {\n if (posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) {\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n }\n else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) {\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n }\n else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n if (logicalIdx === 0 && this.isRtlDir)\n logicalIdx++;\n return (logicalIdx + this.wrapIndent);\n };\n return BidiHandler;\n}());\nexports.BidiHandler = BidiHandler;\n\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Selection = /** @class */ (function () {\n function Selection(session) {\n this.session = session;\n this.doc = session.getDocument();\n this.clearSelection();\n this.cursor = this.lead = this.doc.createAnchor(0, 0);\n this.anchor = this.doc.createAnchor(0, 0);\n this.$silent = false;\n var self = this;\n this.cursor.on(\"change\", function (e) {\n self.$cursorChanged = true;\n if (!self.$silent)\n self._emit(\"changeCursor\");\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n this.anchor.on(\"change\", function () {\n self.$anchorChanged = true;\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n });\n }\n Selection.prototype.isEmpty = function () {\n return this.$isEmpty || (this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column);\n };\n Selection.prototype.isMultiLine = function () {\n return !this.$isEmpty && this.anchor.row != this.cursor.row;\n };\n Selection.prototype.getCursor = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.setAnchor = function (row, column) {\n this.$isEmpty = false;\n this.anchor.setPosition(row, column);\n };\n Selection.prototype.getAnchor = function () {\n if (this.$isEmpty)\n return this.getSelectionLead();\n return this.anchor.getPosition();\n };\n Selection.prototype.getSelectionLead = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.isBackwards = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n Selection.prototype.getRange = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n if (this.$isEmpty)\n return Range.fromPoints(lead, lead);\n return this.isBackwards()\n ? Range.fromPoints(lead, anchor)\n : Range.fromPoints(anchor, lead);\n };\n Selection.prototype.clearSelection = function () {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n Selection.prototype.selectAll = function () {\n this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);\n };\n Selection.prototype.setRange = function (range, reverse) {\n var start = reverse ? range.end : range.start;\n var end = reverse ? range.start : range.end;\n this.$setSelection(start.row, start.column, end.row, end.column);\n };\n Selection.prototype.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) {\n if (this.$silent)\n return;\n var wasEmpty = this.$isEmpty;\n var wasMultiselect = this.inMultiSelectMode;\n this.$silent = true;\n this.$cursorChanged = this.$anchorChanged = false;\n this.anchor.setPosition(anchorRow, anchorColumn);\n this.cursor.setPosition(cursorRow, cursorColumn);\n this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);\n this.$silent = false;\n if (this.$cursorChanged)\n this._emit(\"changeCursor\");\n if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)\n this._emit(\"changeSelection\");\n };\n Selection.prototype.$moveSelection = function (mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n mover.call(this);\n };\n Selection.prototype.selectTo = function (row, column) {\n this.$moveSelection(function () {\n this.moveCursorTo(row, column);\n });\n };\n Selection.prototype.selectToPosition = function (pos) {\n this.$moveSelection(function () {\n this.moveCursorToPosition(pos);\n });\n };\n Selection.prototype.moveTo = function (row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveToPosition = function (pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n Selection.prototype.selectUp = function () {\n this.$moveSelection(this.moveCursorUp);\n };\n Selection.prototype.selectDown = function () {\n this.$moveSelection(this.moveCursorDown);\n };\n Selection.prototype.selectRight = function () {\n this.$moveSelection(this.moveCursorRight);\n };\n Selection.prototype.selectLeft = function () {\n this.$moveSelection(this.moveCursorLeft);\n };\n Selection.prototype.selectLineStart = function () {\n this.$moveSelection(this.moveCursorLineStart);\n };\n Selection.prototype.selectLineEnd = function () {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n Selection.prototype.selectFileEnd = function () {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n Selection.prototype.selectFileStart = function () {\n this.$moveSelection(this.moveCursorFileStart);\n };\n Selection.prototype.selectWordRight = function () {\n this.$moveSelection(this.moveCursorWordRight);\n };\n Selection.prototype.selectWordLeft = function () {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n Selection.prototype.getWordRange = function (row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n Selection.prototype.selectWord = function () {\n this.setSelectionRange(this.getWordRange());\n };\n Selection.prototype.selectAWord = function () {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n Selection.prototype.getLineRange = function (row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n }\n else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n Selection.prototype.selectLine = function () {\n this.setSelectionRange(this.getLineRange());\n };\n Selection.prototype.moveCursorUp = function () {\n this.moveCursorBy(-1, 0);\n };\n Selection.prototype.moveCursorDown = function () {\n this.moveCursorBy(1, 0);\n };\n Selection.prototype.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length - 1 == tabSize;\n };\n Selection.prototype.moveCursorLeft = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n }\n else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n }\n else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n Selection.prototype.moveCursorRight = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n }\n else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n Selection.prototype.moveCursorLineStart = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column);\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n Selection.prototype.moveCursorLineEnd = function () {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n Selection.prototype.moveCursorFileEnd = function () {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorFileStart = function () {\n this.moveCursorTo(0, 0);\n };\n Selection.prototype.moveCursorLongWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorLongWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n var leftOfCursor = lang.stringReverse(str);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.$shortWordEndIndex = function (rightOfCursor) {\n var index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n tokenRe.lastIndex = 0;\n if (this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n return index;\n };\n Selection.prototype.moveCursorShortWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n var index = this.$shortWordEndIndex(rightOfCursor);\n this.moveCursorTo(row, column + index);\n };\n Selection.prototype.moveCursorShortWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n return this.moveCursorTo(row, column - index);\n };\n Selection.prototype.moveCursorWordRight = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n Selection.prototype.moveCursorWordLeft = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n Selection.prototype.moveCursorBy = function (rows, chars) {\n var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column);\n var offsetX;\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n }\n else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {\n var widget = this.session.lineWidgets[this.lead.row];\n if (rows < 0)\n rows -= widget.rowsAbove || 0;\n else if (rows > 0)\n rows += widget.rowCount - (widget.rowsAbove || 0);\n }\n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n Selection.prototype.moveCursorToPosition = function (position) {\n this.moveCursorTo(position.row, position.column);\n };\n Selection.prototype.moveCursorTo = function (row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n Selection.prototype.moveCursorToScreen = function (row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n Selection.prototype.detach = function () {\n this.lead.detach();\n this.anchor.detach();\n };\n Selection.prototype.fromOrientedRange = function (range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n Selection.prototype.toOrientedRange = function (range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n }\n else {\n range = r;\n }\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n Selection.prototype.getRangeOfMovements = function (func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start, end);\n }\n catch (e) {\n return Range.fromPoints(start, start);\n }\n finally {\n this.moveCursorToPosition(start);\n }\n };\n Selection.prototype.toJSON = function () {\n if (this.rangeCount) { var data = this.ranges.map(function (r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n }\n else { var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n Selection.prototype.fromJSON = function (data) {\n if (data.start == undefined) {\n if (this.rangeList && data.length > 1) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--;) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n }\n else {\n data = data[0];\n }\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n Selection.prototype.isEqual = function (data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n for (var i = this.ranges.length; i--;) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n return Selection;\n}());\nSelection.prototype.setSelectionAnchor = Selection.prototype.setAnchor;\nSelection.prototype.getSelectionAnchor = Selection.prototype.getAnchor;\nSelection.prototype.setSelectionRange = Selection.prototype.setRange;\noop.implement(Selection.prototype, EventEmitter);\nexports.Selection = Selection;\n\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/report_error\"], function(require, exports, module){\"use strict\";\nvar reportError = require(\"./lib/report_error\").reportError;\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = /** @class */ (function () {\n function Tokenizer(rules) {\n this.splitRegex;\n this.states = rules;\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = { defaultToken: \"text\" };\n var flag = \"g\";\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive && flag.indexOf(\"i\") === -1)\n flag += \"i\";\n if (rule.unicode && flag.indexOf(\"u\") === -1)\n flag += \"u\";\n if (rule.regex == null)\n continue;\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n }\n else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", {\n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n }\n else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n }\n else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function (match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n }\n else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n splitterRurles.forEach(function (rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n }\n Tokenizer.prototype.$setMaxTokenCount = function (m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n Tokenizer.prototype.$applyToken = function (str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{ type: types, value: str }];\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.$arrayTokens = function (str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.removeCapturingGroups = function (src) {\n var r = src.replace(/\\\\.|\\[(?:\\\\.|[^\\\\\\]])*|\\(\\?[:=!<]|(\\()/g, function (x, y) { return y ? \"(?:\" : x; });\n return r;\n };\n Tokenizer.prototype.createSplitterRegexp = function (src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function (m, esc, parenOpen, parenClose, square, index) {\n if (inChClass) {\n inChClass = square != \"]\";\n }\n else if (square) {\n inChClass = true;\n }\n else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index + 1;\n lastCapture.stack = -1;\n }\n stack--;\n }\n else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\")\n src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\")\n src += \"$\";\n return new RegExp(src, (flag || \"\").replace(\"g\", \"\"));\n };\n Tokenizer.prototype.getLineTokens = function (line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n }\n else\n var stack = [];\n var currentState = /**@type{string}*/ (startState) || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n var token = { type: null, value: \"\" };\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: skipped };\n }\n }\n for (var i = 0; i < match.length - 2; i++) {\n if (match[i + 1] === undefined)\n continue;\n rule = state[mapping[i]];\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n }\n else {\n currentState = rule.next(currentState, stack);\n }\n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: value };\n }\n }\n else if (type) {\n if (token.type)\n tokens.push(token);\n token = { type: null, value: \"\" };\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n if (lastIndex == line.length)\n break;\n lastIndex = index;\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 500),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n if (token.type)\n tokens.push(token);\n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens: tokens,\n state: stack.length ? stack : currentState\n };\n };\n return Tokenizer;\n}());\nTokenizer.prototype.reportError = reportError;\nexports.Tokenizer = Tokenizer;\n\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nvar deepCopy = require(\"../lib/deep_copy\").deepCopy;\nvar TextHighlightRules;\nTextHighlightRules = function () {\n this.$rules = {\n \"start\": [{\n token: \"empty_line\",\n regex: '^$'\n }, {\n defaultToken: \"text\"\n }]\n };\n};\n(function () {\n this.addRules = function (rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n this.getRules = function () {\n return this.$rules;\n };\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n }\n else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n this.addRules(embedRules, prefix);\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], deepCopy(escapeRules));\n }\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n this.getEmbeds = function () {\n return this.$embeds;\n };\n var pushState = function (currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function (currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n this.normalizeRules = function () {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state[\"processed\"] = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n }\n else if (next == \"pop\") {\n rule.next = popState;\n }\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n }\n else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (includeName === \"$self\")\n includeName = \"start\";\n if (Array.isArray(includeName))\n toInsert = includeName.map(function (x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function (x) { return !x.next; });\n state.splice.apply(state, args);\n i--;\n }\n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive);\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n this.$keywordList = [];\n Object.keys(map).forEach(function (className) {\n var a = map[className];\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--;) {\n var word = list[i];\n this.$keywordList.push(word);\n if (ignoreCase)\n word = word.toLowerCase();\n keywords[word] = className;\n }\n }, this);\n map = null;\n return ignoreCase\n ? function (value) { return keywords[value.toLowerCase()] || defaultToken; }\n : function (value) { return keywords[value] || defaultToken; };\n };\n this.getKeywords = function () {\n return this.$keywords;\n };\n}).call(TextHighlightRules.prototype);\nexports.TextHighlightRules = TextHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar Behaviour;\nBehaviour = function () {\n this.$behaviours = {};\n};\n(function () {\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n }\n else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n }\n else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n}).call(Behaviour.prototype);\nexports.Behaviour = Behaviour;\n\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar TokenIterator = /** @class */ (function () {\n function TokenIterator(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n }\n TokenIterator.prototype.stepBackward = function () {\n this.$tokenIndex -= 1;\n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.stepForward = function () {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentTokenRow = function () {\n return this.$row;\n };\n TokenIterator.prototype.getCurrentTokenColumn = function () {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n return column;\n };\n TokenIterator.prototype.getCurrentTokenPosition = function () {\n return { row: this.$row, column: this.getCurrentTokenColumn() };\n };\n TokenIterator.prototype.getCurrentTokenRange = function () {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n return TokenIterator;\n}());\nexports.TokenIterator = TokenIterator;\n\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nvar SAFE_INSERT_IN_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\", \"comment\"];\nvar context;\nvar contextCache = {};\nvar defaultQuotes = { '\"': '\"', \"'\": \"'\" };\nvar initContext = function (editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = { rangeCount: editor.multiSelect.rangeCount };\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\nvar getWrapped = function (selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\nvar CstyleBehaviour;\nCstyleBehaviour = function (options) {\n options = options || {};\n this.add(\"braces\", \"insertion\", function (state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n var token = session.getTokenAt(cursor.row, cursor.column);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n }\n else if (token && /(?:string)\\.quasi|\\.xml/.test(token.type)) {\n var excludeTokens = [\n /tag\\-(?:open|name)/, /attribute\\-name/\n ];\n if (excludeTokens.some(function (el) { return el.test(token.type); }) || /(string)\\.quasi/.test(token.type)\n && token.value[cursor.column - token.start - 1] !== '$')\n return;\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n }\n else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n }\n else if (closing) {\n var next_indent = this.$getIndent(line);\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n this.add(\"braces\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n }\n else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n this.add(\"parens\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n }\n else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"parens\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"brackets\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n }\n else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"brackets\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1)\n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n }\n else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column - 1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n }\n else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(rightChar);\n var pairQuotesAfter = session.$mode.$pairQuotesAfter;\n var shouldPairQuotes = pairQuotesAfter && pairQuotesAfter[quote] && pairQuotesAfter[quote].test(leftChar);\n if ((!shouldPairQuotes && isWordBefore) || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n var charBefore = line[cursor.column - 2];\n if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore)))\n return null;\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n if (options.closeDocComment !== false) {\n this.add(\"doc comment end\", \"insertion\", function (state, action, editor, session, text) {\n if (state === \"doc-start\" && (text === \"\\n\" || text === \"\\r\\n\") && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n if (cursor.column === 0) {\n return;\n }\n var line = session.doc.getLine(cursor.row);\n var nextLine = session.doc.getLine(cursor.row + 1);\n var tokens = session.getTokens(cursor.row);\n var index = 0;\n for (var i = 0; i < tokens.length; i++) {\n index += tokens[i].value.length;\n var currentToken = tokens[i];\n if (index >= cursor.column) {\n if (index === cursor.column) {\n if (!/\\.doc/.test(currentToken.type)) {\n return;\n }\n if (/\\*\\//.test(currentToken.value)) {\n var nextToken = tokens[i + 1];\n if (!nextToken || !/\\.doc/.test(nextToken.type)) {\n return;\n }\n }\n }\n var cursorPosInToken = cursor.column - (index - currentToken.value.length);\n var closeDocPos = currentToken.value.indexOf(\"*/\");\n var openDocPos = currentToken.value.indexOf(\"/**\", closeDocPos > -1 ? closeDocPos + 2 : 0);\n if (openDocPos !== -1 && cursorPosInToken > openDocPos && cursorPosInToken < openDocPos + 3) {\n return;\n }\n if (closeDocPos !== -1 && openDocPos !== -1 && cursorPosInToken >= closeDocPos\n && cursorPosInToken <= openDocPos || !/\\.doc/.test(currentToken.type)) {\n return;\n }\n break;\n }\n }\n var indent = this.$getIndent(line);\n if (/\\s*\\*/.test(nextLine)) {\n if (/^\\s*\\*/.test(line)) {\n return {\n text: text + indent + \"* \",\n selection: [1, 2 + indent.length, 1, 2 + indent.length]\n };\n }\n else {\n return {\n text: text + indent + \" * \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n }\n if (/\\/\\*\\*/.test(line.substring(0, cursor.column))) {\n return {\n text: text + indent + \" * \" + text + \" \" + indent + \"*/\",\n selection: [1, 4 + indent.length, 1, 4 + indent.length]\n };\n }\n }\n });\n }\n};\nCstyleBehaviour.isSaneInsertion = function (editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n if (/[)}\\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))\n return true;\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\nCstyleBehaviour[\"$matchTokenType\"] = function (token, types) {\n return types.indexOf(token.type || token) > -1;\n};\nCstyleBehaviour[\"recordAutoInsert\"] = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this[\"isAutoInsertedClosing\"](cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\nCstyleBehaviour[\"recordMaybeInsert\"] = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this[\"isMaybeInsertedClosing\"](cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\nCstyleBehaviour[\"isAutoInsertedClosing\"] = function (cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\nCstyleBehaviour[\"isMaybeInsertedClosing\"] = function (cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\nCstyleBehaviour[\"popAutoInsertedClosing\"] = function () {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\nCstyleBehaviour[\"clearMaybeInsertedClosing\"] = function () {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\noop.inherits(CstyleBehaviour, Behaviour);\nexports.CstyleBehaviour = CstyleBehaviour;\n\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2];\nvar code = 0;\nvar str = [];\nfor (var i = 0; i < wordChars.length; i += 2) {\n str.push(code += wordChars[i]);\n if (wordChars[i + 1])\n str.push(45, code += wordChars[i + 1]);\n}\nexports.wordChars = String.fromCharCode.apply(null, str);\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar config = require(\"../config\");\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = require(\"../unicode\");\nvar lang = require(\"../lib/lang\");\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nvar Mode;\nMode = function () {\n this.HighlightRules = TextHighlightRules;\n};\n(function () {\n this.$defaultBehaviour = new CstyleBehaviour();\n this.tokenRe = new RegExp(\"^[\" + unicode.wordChars + \"\\\\$_]+\", \"g\");\n this.nonTokenRe = new RegExp(\"^(?:[^\" + unicode.wordChars + \"\\\\$_]|\\\\s])+\", \"g\");\n this.getTokenizer = function () {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n this.toggleCommentLines = function (state, session, startRow, endRow) {\n var doc = session.doc;\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n var comment = function (line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({ row: i, column: line.length }, lineCommentEnd);\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var uncomment = function (line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n var testRemove = function (line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n }\n else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n }\n else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n insertAtTabStop = session.getUseSoftTabs();\n var uncomment = function (line, i) {\n var m = line.match(regexpStart);\n if (!m)\n return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function (line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({ row: i, column: minIndent }, commentWithSpace);\n else\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var testRemove = function (line, i) {\n return regexpStart.test(line);\n };\n var shouldInsertSpace = function (line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n };\n }\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n var minEmptyLength = Infinity;\n iter(function (line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n }\n else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n iter(shouldRemove ? uncomment : comment);\n };\n this.toggleBlockComment = function (state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n }\n else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n this.getNextLineIndent = function (state, line, tab) {\n return this.$getIndent(line);\n };\n this.checkOutdent = function (state, line, input) {\n return false;\n };\n this.autoOutdent = function (state, doc, row) {\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n this.createWorker = function (session) {\n return null;\n };\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n var Mode = mapping[i];\n var id = Mode.prototype.$id;\n var mode = config.$modes[id];\n if (!mode)\n config.$modes[id] = mode = new Mode();\n if (!config.$modes[i])\n config.$modes[i] = mode;\n this.$embeds.push(i);\n this.$modes[i] = mode;\n }\n }\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\",\n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n var _loop_1 = function (i) {\n (function (scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] =\n function () {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this_1));\n };\n var this_1 = this;\n for (var i = 0; i < delegations.length; i++) {\n _loop_1(i);\n }\n };\n this.$delegator = function (method, args, defaultHandler) {\n var state = args[0] || \"start\";\n if (typeof state != \"string\") {\n if (Array.isArray(state[2])) {\n var language = state[2][state[2].length - 1];\n var mode = this.$modes[language];\n if (mode)\n return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1)));\n }\n state = state[0] || \"start\";\n }\n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]])\n continue;\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n this.transformAction = function (state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n this.getKeywords = function (append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer[\"rules\"];\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) {\n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n this.$createKeywordList = function () {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n this.getCompletions = function (state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function (word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"./lib/dom\");\nvar LineWidgets = /** @class */ (function () {\n function LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n }\n LineWidgets.prototype.getRowLength = function (row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else\n h = 0;\n if (!this[\"$useWrapMode\"] || !this[\"$wrapData\"][row]) {\n return 1 + h;\n }\n else {\n return this[\"$wrapData\"][row].length + 1 + h;\n }\n };\n LineWidgets.prototype.$getWidgetScreenLength = function () {\n var screenRows = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n };\n LineWidgets.prototype.$onChangeEditor = function (e) {\n this.attach(e.editor);\n };\n LineWidgets.prototype.attach = function (editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n if (this.editor == editor)\n return;\n this.detach();\n this.editor = editor;\n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n LineWidgets.prototype.detach = function (e) {\n var editor = this.editor;\n if (!editor)\n return;\n this.editor = null;\n editor.widgetManager = null;\n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function (w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n LineWidgets.prototype.updateOnFold = function (e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n }\n else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n LineWidgets.prototype.updateOnChange = function (delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n }\n else if (delta.action == \"remove\") {\n var removed = lineWidgets.splice(startRow + 1, len);\n if (!lineWidgets[startRow] && removed[removed.length - 1]) {\n lineWidgets[startRow] = removed.pop();\n }\n removed.forEach(function (w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n }\n else {\n var args = new Array(len);\n if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {\n if (delta.start.column > lineWidgets[startRow].column)\n startRow++;\n }\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n LineWidgets.prototype.$updateRows = function () {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var noWidgets = true;\n lineWidgets.forEach(function (w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n LineWidgets.prototype.$registerLineWidget = function (w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n this.session.lineWidgets[w.row] = w;\n return w;\n };\n LineWidgets.prototype.addLineWidget = function (w) {\n this.$registerLineWidget(w);\n w.session = this.session;\n if (!this.editor)\n return w;\n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.text && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.textContent = w.text;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n if (w.className) {\n dom.addCssClass(w.el, w.className);\n }\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = \"5\";\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n if (!w.coverGutter) {\n w.el.style.zIndex = \"3\";\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n LineWidgets.prototype.removeLineWidget = function (w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy)\n try {\n w.editor.destroy();\n }\n catch (e) { }\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n }\n else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n };\n LineWidgets.prototype.getWidgetsAtRow = function (row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n LineWidgets.prototype.onWidgetChanged = function (w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n LineWidgets.prototype.measureWidgets = function (e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n if (!changedWidgets || !changedWidgets.length)\n return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.session != this.session)\n continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n w.h = w.el.offsetHeight;\n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", { data: { start: { row: min } } });\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n LineWidgets.prototype.renderWidgets = function (e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n while (first > 0 && !lineWidgets[first])\n first--;\n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n }\n else {\n w.el.style.right = \"\";\n }\n }\n };\n return LineWidgets;\n}());\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nfunction throwDeltaError(delta, errorText) {\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\nexports.applyDelta = function (docLines, delta, doNotValidate) {\n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n }\n else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n }\n else {\n docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn));\n }\n break;\n }\n};\n\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Anchor = /** @class */ (function () {\n function Anchor(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n if (typeof row != \"number\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n }\n Anchor.prototype.getPosition = function () {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n Anchor.prototype.getDocument = function () {\n return this.document;\n };\n Anchor.prototype.onChange = function (delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n if (delta.start.row > this.row)\n return;\n var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n Anchor.prototype.setPosition = function (row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n }\n else {\n pos = this.$clipPositionToDocument(row, column);\n }\n if (this.row == pos.row && this.column == pos.column)\n return;\n var old = {\n row: this.row,\n column: this.column\n };\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n Anchor.prototype.detach = function () {\n this.document.off(\"change\", this.$onChange);\n };\n Anchor.prototype.attach = function (doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n Anchor.prototype.$clipPositionToDocument = function (row, column) {\n var pos = {};\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n if (column < 0)\n pos.column = 0;\n return pos;\n };\n return Anchor;\n}());\nAnchor.prototype.$insertRight = false;\noop.implement(Anchor.prototype, EventEmitter);\nfunction $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n}\nfunction $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n}\nexports.Anchor = Anchor;\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\nvar Document = /** @class */ (function () {\n function Document(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n }\n else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({ row: 0, column: 0 }, textOrLines);\n }\n else {\n this.insert({ row: 0, column: 0 }, textOrLines);\n }\n }\n Document.prototype.setValue = function (text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({ row: 0, column: 0 }, text || \"\");\n };\n Document.prototype.getValue = function () {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n Document.prototype.createAnchor = function (row, column) {\n return new Anchor(this, row, column);\n };\n Document.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineCharacter = function () {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n Document.prototype.setNewLineMode = function (newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineMode = function () {\n return this.$newLineMode;\n };\n Document.prototype.isNewLine = function (text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n Document.prototype.getLine = function (row) {\n return this.$lines[row] || \"\";\n };\n Document.prototype.getLines = function (firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n Document.prototype.getAllLines = function () {\n return this.getLines(0, this.getLength());\n };\n Document.prototype.getLength = function () {\n return this.$lines.length;\n };\n Document.prototype.getTextRange = function (range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n Document.prototype.getLinesForRange = function (range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n }\n else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n Document.prototype.insertLines = function (row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n Document.prototype.removeLines = function (firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n Document.prototype.insertNewLine = function (position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n Document.prototype.insert = function (position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n return this.insertMergedLines(position, this.$split(text));\n };\n Document.prototype.insertInLine = function (position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n return this.clonePos(end);\n };\n Document.prototype.clippedPos = function (row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n }\n else if (row < 0) {\n row = 0;\n }\n else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return { row: row, column: column };\n };\n Document.prototype.clonePos = function (pos) {\n return { row: pos.row, column: pos.column };\n };\n Document.prototype.pos = function (row, column) {\n return { row: row, column: column };\n };\n Document.prototype.$clipPosition = function (position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n }\n else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n Document.prototype.insertFullLines = function (row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n }\n else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({ row: row, column: column }, lines);\n };\n Document.prototype.insertMergedLines = function (position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n return this.clonePos(end);\n };\n Document.prototype.remove = function (range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n });\n return this.clonePos(start);\n };\n Document.prototype.removeInLine = function (row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n }, true);\n return this.clonePos(start);\n };\n Document.prototype.removeFullLines = function (firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow);\n var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0);\n var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow);\n var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length);\n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n Document.prototype.removeNewLine = function (row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n Document.prototype.replace = function (range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n return end;\n };\n Document.prototype.applyDeltas = function (deltas) {\n for (var i = 0; i < deltas.length; i++) {\n this.applyDelta(deltas[i]);\n }\n };\n Document.prototype.revertDeltas = function (deltas) {\n for (var i = deltas.length - 1; i >= 0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n Document.prototype.applyDelta = function (delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n Document.prototype.$safeApplyDelta = function (delta) {\n var docLength = this.$lines.length;\n if (delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength) {\n this.applyDelta(delta);\n }\n };\n Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row;\n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n Document.prototype.revertDelta = function (delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n Document.prototype.indexToPosition = function (index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return { row: i, column: index + lines[i].length + newlineLength };\n }\n return { row: l - 1, column: index + lines[l - 1].length + newlineLength };\n };\n Document.prototype.positionToIndex = function (pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n return index + pos.column;\n };\n Document.prototype.$split = function (text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n return Document;\n}());\nDocument.prototype.$autoNewLine = \"\";\nDocument.prototype.$newLineMode = \"auto\";\noop.implement(Document.prototype, EventEmitter);\nexports.Document = Document;\n\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar BackgroundTokenizer = /** @class */ (function () {\n function BackgroundTokenizer(tokenizer, session) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n var self = this;\n this.$worker = function () {\n if (!self.running) {\n return;\n }\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) {\n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n if (endLine == -1)\n endLine = currentLine;\n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n }\n BackgroundTokenizer.prototype.setTokenizer = function (tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n this.start(0);\n };\n BackgroundTokenizer.prototype.setDocument = function (doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n this.stop();\n };\n BackgroundTokenizer.prototype.fireUpdateEvent = function (firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", { data: data });\n };\n BackgroundTokenizer.prototype.start = function (startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.scheduleStart = function () {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.$updateOnChange = function (delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n this.lines[startRow] = null;\n }\n else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n this.stop();\n };\n BackgroundTokenizer.prototype.stop = function () {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n BackgroundTokenizer.prototype.getTokens = function (row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n BackgroundTokenizer.prototype.getState = function (row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n BackgroundTokenizer.prototype.$tokenizeRow = function (row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n var data = this.tokenizer.getLineTokens(line, state, row);\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n }\n else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n return this.lines[row] = data.tokens;\n };\n BackgroundTokenizer.prototype.cleanup = function () {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.removeAllListeners();\n };\n return BackgroundTokenizer;\n}());\noop.implement(BackgroundTokenizer.prototype, EventEmitter);\nexports.BackgroundTokenizer = BackgroundTokenizer;\n\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar Range = require(\"./range\").Range;\nvar SearchHighlight = /** @class */ (function () {\n function SearchHighlight(regExp, clazz, type) {\n if (type === void 0) { type = \"text\"; }\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type;\n }\n SearchHighlight.prototype.setRegexp = function (regExp) {\n if (this.regExp + \"\" == regExp + \"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n SearchHighlight.prototype.update = function (html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n var renderedMarkerRanges = {};\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function (match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n for (var j = ranges.length; j--;) {\n var rangeToAddMarkerTo = ranges[j].toScreenRange(session);\n var rangeAsString = rangeToAddMarkerTo.toString();\n if (renderedMarkerRanges[rangeAsString])\n continue;\n renderedMarkerRanges[rangeAsString] = true;\n markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config);\n }\n }\n };\n return SearchHighlight;\n}());\nSearchHighlight.prototype.MAX_RANGES = 500;\nexports.SearchHighlight = SearchHighlight;\n\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar UndoManager = /** @class */ (function () {\n function UndoManager() {\n this.$keepRedoStack;\n this.$maxRev = 0;\n this.$fromUndo = false;\n this.$undoDepth = Infinity;\n this.reset();\n }\n UndoManager.prototype.addSession = function (session) {\n this.$session = session;\n };\n UndoManager.prototype.add = function (delta, allowMerge, session) {\n if (this.$fromUndo)\n return;\n if (delta == this.$lastDelta)\n return;\n if (!this.$keepRedoStack)\n this.$redoStack.length = 0;\n if (allowMerge === false || !this.lastDeltas) {\n this.lastDeltas = [];\n var undoStackLength = this.$undoStack.length;\n if (undoStackLength > this.$undoDepth - 1) {\n this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1);\n }\n this.$undoStack.push(this.lastDeltas);\n delta.id = this.$rev = ++this.$maxRev;\n }\n if (delta.action == \"remove\" || delta.action == \"insert\")\n this.$lastDelta = delta;\n this.lastDeltas.push(delta);\n };\n UndoManager.prototype.addSelection = function (selection, rev) {\n this.selections.push({\n value: selection,\n rev: rev || this.$rev\n });\n };\n UndoManager.prototype.startNewGroup = function () {\n this.lastDeltas = null;\n return this.$rev;\n };\n UndoManager.prototype.markIgnored = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id <= from)\n break;\n if (delta.id < to)\n delta.ignore = true;\n }\n this.lastDeltas = null;\n };\n UndoManager.prototype.getSelection = function (rev, after) {\n var stack = this.selections;\n for (var i = stack.length; i--;) {\n var selection = stack[i];\n if (selection.rev < rev) {\n if (after)\n selection = stack[i + 1];\n return selection;\n }\n }\n };\n UndoManager.prototype.getRevision = function () {\n return this.$rev;\n };\n UndoManager.prototype.getDeltas = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n var end = null, start = 0;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id < to && !end)\n end = i + 1;\n if (delta.id <= from) {\n start = i + 1;\n break;\n }\n }\n return stack.slice(start, end);\n };\n UndoManager.prototype.getChangedRanges = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.getChangedLines = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.undo = function (session, dontSelect) {\n this.lastDeltas = null;\n var stack = this.$undoStack;\n if (!rearrangeUndoStack(stack, stack.length))\n return;\n if (!session)\n session = this.$session;\n if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length)\n this.$redoStack = [];\n this.$fromUndo = true;\n var deltaSet = stack.pop();\n var undoSelectionRange = null;\n if (deltaSet) {\n undoSelectionRange = session.undoChanges(deltaSet, dontSelect);\n this.$redoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return undoSelectionRange;\n };\n UndoManager.prototype.redo = function (session, dontSelect) {\n this.lastDeltas = null;\n if (!session)\n session = this.$session;\n this.$fromUndo = true;\n if (this.$redoStackBaseRev != this.$rev) {\n var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);\n rebaseRedoStack(this.$redoStack, diff);\n this.$redoStackBaseRev = this.$rev;\n this.$redoStack.forEach(function (x) {\n x[0].id = ++this.$maxRev;\n }, this);\n }\n var deltaSet = this.$redoStack.pop();\n var redoSelectionRange = null;\n if (deltaSet) {\n redoSelectionRange = session.redoChanges(deltaSet, dontSelect);\n this.$undoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return redoSelectionRange;\n };\n UndoManager.prototype.$syncRev = function () {\n var stack = this.$undoStack;\n var nextDelta = stack[stack.length - 1];\n var id = nextDelta && nextDelta[0].id || 0;\n this.$redoStackBaseRev = id;\n this.$rev = id;\n };\n UndoManager.prototype.reset = function () {\n this.lastDeltas = null;\n this.$lastDelta = null;\n this.$undoStack = [];\n this.$redoStack = [];\n this.$rev = 0;\n this.mark = 0;\n this.$redoStackBaseRev = this.$rev;\n this.selections = [];\n };\n UndoManager.prototype.canUndo = function () {\n return this.$undoStack.length > 0;\n };\n UndoManager.prototype.canRedo = function () {\n return this.$redoStack.length > 0;\n };\n UndoManager.prototype.bookmark = function (rev) {\n if (rev == undefined)\n rev = this.$rev;\n this.mark = rev;\n };\n UndoManager.prototype.isAtBookmark = function () {\n return this.$rev === this.mark;\n };\n UndoManager.prototype.toJSON = function () {\n return {\n $redoStack: this.$redoStack,\n $undoStack: this.$undoStack\n };\n };\n UndoManager.prototype.fromJSON = function (json) {\n this.reset();\n this.$undoStack = json.$undoStack;\n this.$redoStack = json.$redoStack;\n };\n UndoManager.prototype.$prettyPrint = function (delta) {\n if (delta)\n return stringifyDelta(delta);\n return stringifyDelta(this.$undoStack) + \"\\n---\\n\" + stringifyDelta(this.$redoStack);\n };\n return UndoManager;\n}());\nUndoManager.prototype.hasUndo = UndoManager.prototype.canUndo;\nUndoManager.prototype.hasRedo = UndoManager.prototype.canRedo;\nUndoManager.prototype.isClean = UndoManager.prototype.isAtBookmark;\nUndoManager.prototype.markClean = UndoManager.prototype.bookmark;\nfunction rearrangeUndoStack(stack, pos) {\n for (var i = pos; i--;) {\n var deltaSet = stack[i];\n if (deltaSet && !deltaSet[0].ignore) {\n while (i < pos - 1) {\n var swapped = swapGroups(stack[i], stack[i + 1]);\n stack[i] = swapped[0];\n stack[i + 1] = swapped[1];\n i++;\n }\n return true;\n }\n }\n}\nvar Range = require(\"./range\").Range;\nvar cmp = Range.comparePoints;\nvar comparePoints = Range.comparePoints;\nfunction $updateMarkers(delta) {\n var isInsert = delta.action == \"insert\";\n var start = delta.start;\n var end = delta.end;\n var rowShift = (end.row - start.row) * (isInsert ? 1 : -1);\n var colShift = (end.column - start.column) * (isInsert ? 1 : -1);\n if (isInsert)\n end = start;\n for (var i in this.marks) {\n var point = this.marks[i];\n var cmp = comparePoints(point, start);\n if (cmp < 0) {\n continue; // delta starts after the range\n }\n if (cmp === 0) {\n if (isInsert) {\n if (point.bias == 1) {\n cmp = 1;\n }\n else {\n point.bias == -1;\n continue;\n }\n }\n }\n var cmp2 = isInsert ? cmp : comparePoints(point, end);\n if (cmp2 > 0) {\n point.row += rowShift;\n point.column += point.row == end.row ? colShift : 0;\n continue;\n }\n if (!isInsert && cmp2 <= 0) {\n point.row = start.row;\n point.column = start.column;\n if (cmp2 === 0)\n point.bias = 1;\n }\n }\n}\nfunction clonePos(pos) {\n return { row: pos.row, column: pos.column };\n}\nfunction cloneDelta(d) {\n return {\n start: clonePos(d.start),\n end: clonePos(d.end),\n action: d.action,\n lines: d.lines.slice()\n };\n}\nfunction stringifyDelta(d) {\n d = d || this;\n if (Array.isArray(d)) {\n return d.map(stringifyDelta).join(\"\\n\");\n }\n var type = \"\";\n if (d.action) {\n type = d.action == \"insert\" ? \"+\" : \"-\";\n type += \"[\" + d.lines + \"]\";\n }\n else if (d.value) {\n if (Array.isArray(d.value)) {\n type = d.value.map(stringifyRange).join(\"\\n\");\n }\n else {\n type = stringifyRange(d.value);\n }\n }\n if (d.start) {\n type += stringifyRange(d);\n }\n if (d.id || d.rev) {\n type += \"\\t(\" + (d.id || d.rev) + \")\";\n }\n return type;\n}\nfunction stringifyRange(r) {\n return r.start.row + \":\" + r.start.column\n + \"=>\" + r.end.row + \":\" + r.end.column;\n}\nfunction swap(d1, d2) {\n var i1 = d1.action == \"insert\";\n var i2 = d2.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (i1 && !i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && !i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n return [d2, d1];\n}\nfunction swapGroups(ds1, ds2) {\n for (var i = ds1.length; i--;) {\n for (var j = 0; j < ds2.length; j++) {\n if (!swap(ds1[i], ds2[j])) {\n while (i < ds1.length) {\n while (j--) {\n swap(ds2[j], ds1[i]);\n }\n j = ds2.length;\n i++;\n }\n return [ds1, ds2];\n }\n }\n }\n ds1.selectionBefore = ds2.selectionBefore =\n ds1.selectionAfter = ds2.selectionAfter = null;\n return [ds2, ds1];\n}\nfunction xform(d1, c1) {\n var i1 = d1.action == \"insert\";\n var i2 = c1.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d1.start, c1.start) < 0) {\n shift(c1, d1, 1);\n }\n else {\n shift(d1, c1, 1);\n }\n }\n else if (i1 && !i2) {\n if (cmp(d1.start, c1.end) >= 0) {\n shift(d1, c1, -1);\n }\n else if (cmp(d1.start, c1.start) <= 0) {\n shift(c1, d1, +1);\n }\n else {\n shift(d1, Range.fromPoints(c1.start, d1.start), -1);\n shift(c1, d1, +1);\n }\n }\n else if (!i1 && i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.start, d1.start) <= 0) {\n shift(d1, c1, +1);\n }\n else {\n shift(c1, Range.fromPoints(d1.start, c1.start), -1);\n shift(d1, c1, +1);\n }\n }\n else if (!i1 && !i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.end, d1.start) <= 0) {\n shift(d1, c1, -1);\n }\n else {\n var before, after;\n if (cmp(d1.start, c1.start) < 0) {\n before = d1;\n d1 = splitDelta(d1, c1.start);\n }\n if (cmp(d1.end, c1.end) > 0) {\n after = splitDelta(d1, c1.end);\n }\n shiftPos(c1.end, d1.start, d1.end, -1);\n if (after && !before) {\n d1.lines = after.lines;\n d1.start = after.start;\n d1.end = after.end;\n after = d1;\n }\n return [c1, before, after].filter(Boolean);\n }\n }\n return [c1, d1];\n}\nfunction shift(d1, d2, dir) {\n shiftPos(d1.start, d2.start, d2.end, dir);\n shiftPos(d1.end, d2.start, d2.end, dir);\n}\nfunction shiftPos(pos, start, end, dir) {\n if (pos.row == (dir == 1 ? start : end).row) {\n pos.column += dir * (end.column - start.column);\n }\n pos.row += dir * (end.row - start.row);\n}\nfunction splitDelta(c, pos) {\n var lines = c.lines;\n var end = c.end;\n c.end = clonePos(pos);\n var rowsBefore = c.end.row - c.start.row;\n var otherLines = lines.splice(rowsBefore, lines.length);\n var col = rowsBefore ? pos.column : pos.column - c.start.column;\n lines.push(otherLines[0].substring(0, col));\n otherLines[0] = otherLines[0].substr(col);\n var rest = {\n start: clonePos(pos),\n end: end,\n lines: otherLines,\n action: c.action\n };\n return rest;\n}\nfunction moveDeltasByOne(redoStack, d) {\n d = cloneDelta(d);\n for (var j = redoStack.length; j--;) {\n var deltaSet = redoStack[j];\n for (var i = 0; i < deltaSet.length; i++) {\n var x = deltaSet[i];\n var xformed = xform(x, d);\n d = xformed[0];\n if (xformed.length != 2) {\n if (xformed[2]) {\n deltaSet.splice(i + 1, 1, xformed[1], xformed[2]);\n i++;\n }\n else if (!xformed[1]) {\n deltaSet.splice(i, 1);\n i--;\n }\n }\n }\n if (!deltaSet.length) {\n redoStack.splice(j, 1);\n }\n }\n return redoStack;\n}\nfunction rebaseRedoStack(redoStack, deltaSets) {\n for (var i = 0; i < deltaSets.length; i++) {\n var deltas = deltaSets[i];\n for (var j = 0; j < deltas.length; j++) {\n moveDeltasByOne(redoStack, deltas[j]);\n }\n }\n}\nexports.UndoManager = UndoManager;\n\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = /** @class */ (function () {\n function FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n }\n else {\n folds = this.folds = [folds];\n }\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n this.folds.forEach(function (fold) {\n fold.setFoldLine(this);\n }, this);\n }\n FoldLine.prototype.shiftRow = function (shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function (fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n FoldLine.prototype.addFold = function (fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function (a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n }\n else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n FoldLine.prototype.containsRow = function (row) {\n return row >= this.start.row && row <= this.end.row;\n };\n FoldLine.prototype.walk = function (callback, endRow, endColumn) {\n var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true;\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n FoldLine.prototype.getNextFoldTo = function (row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n }\n else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n FoldLine.prototype.addRemoveChars = function (row, column, len) {\n var ret = this.getNextFoldTo(row, column), fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row) {\n window.console && window.console.log(row, column, fold);\n }\n else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n FoldLine.prototype.split = function (row, column) {\n var pos = this.getNextFoldTo(row, column);\n if (!pos || pos.kind == \"inside\")\n return null;\n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n FoldLine.prototype.merge = function (foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n FoldLine.prototype.toString = function () {\n var ret = [this.range.toString() + \": [\"];\n this.folds.forEach(function (fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n FoldLine.prototype.idxToPosition = function (idx) {\n var lastFoldEndColumn = 0;\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n lastFoldEndColumn = fold.end.column;\n }\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n return FoldLine;\n}());\nexports.FoldLine = FoldLine;\n\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\nvar RangeList = /** @class */ (function () {\n function RangeList() {\n this.ranges = [];\n this.$bias = 1;\n }\n RangeList.prototype.pointIndex = function (pos, excludeEdges, startIndex) {\n var list = this.ranges;\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i - 2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n return -i - 1;\n }\n return -i - 1;\n };\n RangeList.prototype.add = function (range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n RangeList.prototype.addList = function (list) {\n var removed = [];\n for (var i = list.length; i--;) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n RangeList.prototype.substractPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n RangeList.prototype.merge = function () {\n var removed = [];\n var list = this.ranges;\n list = list.sort(function (a, b) {\n return comparePoints(a.start, b.start);\n });\n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n this.ranges = list;\n return removed;\n };\n RangeList.prototype.contains = function (row, column) {\n return this.pointIndex({ row: row, column: column }) >= 0;\n };\n RangeList.prototype.containsPoint = function (pos) {\n return this.pointIndex(pos) >= 0;\n };\n RangeList.prototype.rangeAtPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n RangeList.prototype.clipRows = function (startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n var startIndex = this.pointIndex({ row: startRow, column: 0 });\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n RangeList.prototype.removeAll = function () {\n return this.ranges.splice(0, this.ranges.length);\n };\n RangeList.prototype.attach = function (session) {\n if (this.session)\n this.detach();\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n this.session.on('change', this.onChange);\n };\n RangeList.prototype.detach = function () {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n RangeList.prototype.$onChange = function (delta) {\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var ranges = this.ranges;\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row >= startRow)\n break;\n }\n if (delta.action == \"insert\") {\n var lineDif = endRow - startRow;\n var colDiff = -start.column + end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > startRow)\n break;\n if (r.start.row == startRow && r.start.column >= start.column) {\n if (r.start.column == start.column && this.$bias <= 0) {\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$bias < 0) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) {\n if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n }\n else {\n var lineDif = startRow - endRow;\n var colDiff = start.column - end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > endRow)\n break;\n if (r.end.row < endRow\n && (startRow < r.end.row\n || startRow == r.end.row && start.column < r.end.column)) {\n r.end.row = startRow;\n r.end.column = start.column;\n }\n else if (r.end.row == endRow) {\n if (r.end.column <= end.column) {\n if (lineDif || r.end.column > start.column) {\n r.end.column = start.column;\n r.end.row = start.row;\n }\n }\n else {\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n else if (r.end.row > endRow) {\n r.end.row += lineDif;\n }\n if (r.start.row < endRow\n && (startRow < r.start.row\n || startRow == r.start.row && start.column < r.start.column)) {\n r.start.row = startRow;\n r.start.column = start.column;\n }\n else if (r.start.row == endRow) {\n if (r.start.column <= end.column) {\n if (lineDif || r.start.column > start.column) {\n r.start.column = start.column;\n r.start.row = start.row;\n }\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n else if (r.start.row > endRow) {\n r.start.row += lineDif;\n }\n }\n }\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n return RangeList;\n}());\nRangeList.prototype.comparePoints = comparePoints;\nexports.RangeList = RangeList;\n\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range_list\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RangeList = require(\"../range_list\").RangeList;\nvar Fold = /** @class */ (function (_super) {\n __extends(Fold, _super);\n function Fold(range, placeholder) {\n var _this = _super.call(this) || this;\n _this.foldLine = null;\n _this.placeholder = placeholder;\n _this.range = range;\n _this.start = range.start;\n _this.end = range.end;\n _this.sameRow = range.start.row == range.end.row;\n _this.subFolds = _this.ranges = [];\n return _this;\n }\n Fold.prototype.toString = function () {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n Fold.prototype.setFoldLine = function (foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function (fold) {\n fold.setFoldLine(foldLine);\n });\n };\n Fold.prototype.clone = function () {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function (subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n Fold.prototype.addSubFold = function (fold) {\n if (this.range.isEqual(fold))\n return;\n consumeRange(fold, this.start);\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n var firstConsumed = 0;\n if (cmp == 0) {\n if (afterStart.range.containsRange(fold))\n return afterStart.addSubFold(fold);\n else\n firstConsumed = 1;\n }\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n if (cmp == 0)\n j++;\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length;\n for (var k = firstConsumed; k < last; k++) {\n fold.addSubFold(consumedFolds[k]);\n }\n fold.setFoldLine(this.foldLine);\n return fold;\n };\n Fold.prototype.restoreRange = function (range) {\n return restoreRange(range, this.start);\n };\n return Fold;\n}(RangeList));\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\nexports.Fold = Fold;\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\",\"ace/mouse/mouse_event\"], function(require, exports, module){// @ts-nocheck\n\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = require(\"./fold_line\").FoldLine;\nvar Fold = require(\"./fold\").Fold;\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar MouseEvent = require(\"../mouse/mouse_event\").MouseEvent;\nfunction Folding() {\n this.getFoldAt = function (row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var range = folds[i].range;\n if (range.contains(row, column)) {\n if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) {\n continue;\n }\n else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) {\n continue;\n }\n return folds[i];\n }\n }\n };\n this.getFoldsInRange = function (range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n start.column += 1;\n end.column -= 1;\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n }\n else if (cmp == 2) {\n continue;\n }\n else \n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n return foundFolds;\n };\n this.getFoldsInRangeList = function (ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function (range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n }\n else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function () {\n var folds = [];\n var foldLines = this.$foldData;\n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n return folds;\n };\n this.getFoldStringAt = function (row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n this.getFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n }\n else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n this.getFoldedRowCount = function (first, last) {\n var foldData = this.$foldData, rowCount = last - first + 1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last - start;\n else\n rowCount = 0; // in one fold\n }\n break;\n }\n else if (end >= first) {\n if (start >= first) // fold inside range\n rowCount -= end - start;\n else\n rowCount -= end - first + 1;\n }\n }\n return rowCount;\n };\n this.$addFoldLine = function (foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function (a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function (placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n if (!fold.collapseChildren) {\n folds.forEach(function (subFold) {\n fold.addSubFold(subFold);\n });\n }\n }\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n }\n else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n }\n else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n return fold;\n };\n this.addFolds = function (folds) {\n folds.forEach(function (fold) {\n this.addFold(fold);\n }, this);\n };\n this.removeFold = function (fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n }\n else \n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n }\n else \n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n }\n else \n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n }\n else \n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n this.removeFolds = function (folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n cloneFolds.forEach(function (fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n this.expandFold = function (fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function (subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1);\n }\n fold.subFolds = [];\n };\n this.expandFolds = function (folds) {\n folds.forEach(function (fold) {\n this.expandFold(fold);\n }, this);\n };\n this.unfold = function (location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n if (expandInner == null)\n expandInner = true;\n }\n else if (typeof location == \"number\") {\n range = new Range(location, 0, location, this.getLine(location).length);\n }\n else if (\"row\" in location) {\n range = Range.fromPoints(location, location);\n }\n else if (Array.isArray(location)) {\n folds = [];\n location.forEach(function (range) {\n folds = folds.concat(this.unfold(range));\n }, this);\n return folds;\n }\n else {\n range = location;\n }\n folds = this.getFoldsInRangeList(range);\n var outermostFolds = folds;\n while (folds.length == 1\n && Range.comparePoints(folds[0].start, range.start) < 0\n && Range.comparePoints(folds[0].end, range.end) > 0) {\n this.expandFolds(folds);\n folds = this.getFoldsInRangeList(range);\n }\n if (expandInner != false) {\n this.removeFolds(folds);\n }\n else {\n this.expandFolds(folds);\n }\n if (outermostFolds.length)\n return outermostFolds;\n };\n this.isRowFolded = function (docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n this.getRowFoldEnd = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n this.getRowFoldStart = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n if (placeholder != null) {\n textLine += placeholder;\n }\n else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n this.getDisplayLine = function (row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n }\n else {\n return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn);\n }\n };\n this.$cloneFoldData = function () {\n var fd = [];\n fd = this.$foldData.map(function (foldLine) {\n var folds = foldLine.folds.map(function (fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n return fd;\n };\n this.toggleFold = function (tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n if (fold) {\n this.expandFold(fold);\n return;\n }\n else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n }\n else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n }\n else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n range.start.column++;\n }\n else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n }\n else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n }\n else if (folds.length == 1) {\n fold = folds[0];\n }\n }\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n this.addFold(placeholder, range);\n };\n this.getCommentFoldRange = function (row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token && token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start|\\\\.doc\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type));\n token = iterator.stepForward();\n }\n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + token.value.length;\n iterator = new TokenIterator(this, row, column);\n var initState = this.getState(iterator.$row);\n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (initState.toString() !== state.toString())\n lastRow = iterator.$row;\n }\n else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type));\n token = iterator.stepBackward();\n }\n else\n token = iterator.getCurrentToken();\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn();\n return range;\n }\n };\n this.foldAll = function (startRow, endRow, depth, test) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n if (test && !test(row))\n continue;\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow) {\n row = range.end.row;\n range.collapseChildren = depth;\n this.addFold(\"...\", range);\n }\n }\n };\n this.foldToLevel = function (level) {\n this.foldAll();\n while (level-- > 0)\n this.unfold(null, false);\n };\n this.foldAllComments = function () {\n var session = this;\n this.foldAll(null, null, null, function (row) {\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"text\" && /^\\s+$/.test(token.value))\n continue;\n if (/comment/.test(token.type))\n return true;\n return false;\n }\n });\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function (style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n if (this.$foldStyle == style)\n return;\n this.$foldStyle = style;\n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n this.$setFolding = function (foldMode) {\n if (this.$foldMode == foldMode)\n return;\n this.$foldMode = foldMode;\n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n this.onFoldWidgetClick = function (row, e) {\n if (e instanceof MouseEvent)\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n this.$toggleFoldWidget = function (row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n }\n else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n }\n else if (range) {\n if (options.all)\n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n return range;\n };\n this.toggleFoldWidget = function (toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n if (fold) {\n this.removeFold(fold);\n }\n else {\n this.addFold(\"...\", range);\n }\n }\n };\n this.updateFoldWidgets = function (delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n }\n else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function (e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nfunction BracketMatch() {\n this.findMatchingBracket = function (position, chr) {\n if (position.column == 0)\n return null;\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1);\n if (charBeforeCursor == \"\")\n return null;\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n this.getBracketRange = function (pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = { row: pos.row, column: pos.column + 1 };\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n }\n else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n return range;\n };\n this.getMatchingBracketRanges = function (pos, isBackwards) {\n var line = this.getLine(pos.row);\n var bracketsRegExp = /([\\(\\[\\{])|([\\)\\]\\}])/;\n var chr = !isBackwards && line.charAt(pos.column - 1);\n var match = chr && chr.match(bracketsRegExp);\n if (!match) {\n chr = (isBackwards === undefined || isBackwards) && line.charAt(pos.column);\n pos = {\n row: pos.row,\n column: pos.column + 1\n };\n match = chr && chr.match(bracketsRegExp);\n }\n if (!match)\n return null;\n var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);\n var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)\n : this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return [startRange];\n var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);\n return [startRange, endRange];\n };\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\",\n \"<\": \">\",\n \">\": \"<\"\n };\n this.$findOpeningBracket = function (bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n .replace(/-close\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n while (true) {\n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n value = token.value;\n valueIndex = value.length - 1;\n }\n return null;\n };\n this.$findClosingBracket = function (bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n .replace(/-open\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n while (true) {\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n valueIndex = 0;\n }\n return null;\n };\n this.getMatchingTags = function (pos) {\n var iterator = new TokenIterator(this, pos.row, pos.column);\n var token = this.$findTagName(iterator);\n if (!token)\n return;\n var prevToken = iterator.stepBackward();\n if (prevToken.value === '<') {\n return this.$findClosingTag(iterator, token);\n }\n else {\n return this.$findOpeningTag(iterator, token);\n }\n };\n this.$findTagName = function (iterator) {\n var token = iterator.getCurrentToken();\n var found = false;\n var backward = false;\n if (token && token.type.indexOf('tag-name') === -1) {\n do {\n if (backward)\n token = iterator.stepBackward();\n else\n token = iterator.stepForward();\n if (token) {\n if (token.value === \"/>\") {\n backward = true;\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n found = true;\n }\n }\n } while (token && !found);\n }\n return token;\n };\n this.$findClosingTag = function (iterator, token) {\n var prevToken;\n var currentTag = token.value;\n var tag = token.value;\n var depth = 0;\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1);\n token = iterator.stepForward();\n var openTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length);\n var foundOpenTagEnd = false;\n do {\n prevToken = token;\n if (prevToken.type.indexOf('tag-close') !== -1 && !foundOpenTagEnd) {\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>`\n foundOpenTagEnd = true;\n }\n token = iterator.stepForward();\n if (token) {\n if (token.value === '>' && !foundOpenTagEnd) {\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>`\n foundOpenTagEnd = true;\n }\n if (token.type.indexOf('tag-name') !== -1) {\n currentTag = token.value;\n if (tag === currentTag) {\n if (prevToken.value === '<') {\n depth++;\n }\n else if (prevToken.value === '') {\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n else {\n return;\n }\n }\n }\n }\n }\n else if (tag === currentTag && token.value === '/>') { // self-closing tag\n depth--;\n if (depth < 0) { //found self-closing tag end\n var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2);\n var closeTagName = closeTagStart;\n var closeTagEnd = closeTagName;\n var openTagEnd = new Range(openTagName.end.row, openTagName.end.column, openTagName.end.row, openTagName.end.column + 1);\n }\n }\n }\n } while (token && depth >= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n this.$findOpeningTag = function (iterator, token) {\n var prevToken = iterator.getCurrentToken();\n var tag = token.value;\n var depth = 0;\n var startRow = iterator.getCurrentTokenRow();\n var startColumn = iterator.getCurrentTokenColumn();\n var endColumn = startColumn + 2;\n var closeTagStart = new Range(startRow, startColumn, startRow, endColumn); //Range for \")\n return;\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n iterator.stepBackward();\n iterator.stepBackward();\n do {\n token = prevToken;\n startRow = iterator.getCurrentTokenRow();\n startColumn = iterator.getCurrentTokenColumn();\n endColumn = startColumn + token.value.length;\n prevToken = iterator.stepBackward();\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n if (tag === token.value) {\n if (prevToken.value === '<') {\n depth++;\n if (depth > 0) { //found opening tag\n var openTagName = new Range(startRow, startColumn, startRow, endColumn);\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for <\n do {\n token = iterator.stepForward();\n } while (token && token.value !== '>');\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n }\n else if (prevToken.value === '') { // self-closing tag\n var stepCount = 0;\n var tmpToken = prevToken;\n while (tmpToken) {\n if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {\n depth--;\n break;\n }\n else if (tmpToken.value === '<') {\n break;\n }\n tmpToken = iterator.stepBackward();\n stepCount++;\n }\n for (var i = 0; i < stepCount; i++) {\n iterator.stepForward();\n }\n }\n }\n } while (prevToken && depth <= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/line_widgets\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/undomanager\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar BidiHandler = require(\"./bidihandler\").BidiHandler;\nvar config = require(\"./config\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Selection = require(\"./selection\").Selection;\nvar TextMode = require(\"./mode/text\").Mode;\nvar Range = require(\"./range\").Range;\nvar LineWidgets = require(\"./line_widgets\").LineWidgets;\nvar Document = require(\"./document\").Document;\nvar BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = require(\"./search_highlight\").SearchHighlight;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar EditSession = /** @class */ (function () {\n function EditSession(text, mode) { this.doc;\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n this.$editor = null;\n this.prevOp = {};\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function () {\n return this.join(\"\\n\");\n };\n this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this);\n var _self = this;\n this.bgTokenizer.on(\"update\", function (e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(/**@type{string}*/ (text));\n this.setDocument(text);\n this.selection = new Selection(this);\n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n this.selection.on(\"changeCursor\", this.$onSelectionChange);\n this.$bidiHandler = new BidiHandler(this);\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n this.destroyed = false;\n this.$initOperationListeners();\n }\n EditSession.prototype.$initOperationListeners = function () {\n var _this = this;\n this.curOp = null;\n this.on(\"change\", function () {\n if (!_this.curOp) {\n _this.startOperation();\n _this.curOp.selectionBefore = _this.$lastSel;\n }\n _this.curOp.docChanged = true;\n }, true);\n this.on(\"changeSelection\", function () {\n if (!_this.curOp) {\n _this.startOperation();\n _this.curOp.selectionBefore = _this.$lastSel;\n }\n _this.curOp.selectionChanged = true;\n }, true);\n this.$operationResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n };\n EditSession.prototype.startOperation = function (commandEvent) {\n if (this.curOp) {\n if (!commandEvent || this.curOp.command) {\n return;\n }\n this.prevOp = this.curOp;\n }\n if (!commandEvent) {\n commandEvent = {};\n }\n this.$operationResetTimer.schedule();\n this.curOp = {\n command: commandEvent.command || {},\n args: commandEvent.args\n };\n this.curOp.selectionBefore = this.selection.toJSON();\n this._signal(\"startOperation\", commandEvent);\n };\n EditSession.prototype.endOperation = function (e) {\n if (this.curOp) {\n if (e && e.returnValue === false) {\n this.curOp = null;\n this._signal(\"endOperation\", e);\n return;\n }\n if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\") {\n return;\n }\n var currentSelection = this.selection.toJSON();\n this.curOp.selectionAfter = currentSelection;\n this.$lastSel = this.selection.toJSON();\n this.getUndoManager().addSelection(currentSelection);\n this._signal(\"beforeEndOperation\");\n this.prevOp = this.curOp;\n this.curOp = null;\n this._signal(\"endOperation\", e);\n }\n };\n EditSession.prototype.setDocument = function (doc) {\n if (this.doc)\n this.doc.off(\"change\", this.$onChange);\n this.doc = doc;\n doc.on(\"change\", this.$onChange, true);\n this.bgTokenizer.setDocument(this.getDocument());\n this.resetCaches();\n };\n EditSession.prototype.getDocument = function () {\n return this.doc;\n };\n Object.defineProperty(EditSession.prototype, \"widgetManager\", {\n get: function () {\n var widgetManager = new LineWidgets(this);\n this.widgetManager = widgetManager;\n if (this.$editor)\n widgetManager.attach(this.$editor);\n return widgetManager;\n },\n set: function (value) {\n Object.defineProperty(this, \"widgetManager\", {\n writable: true,\n enumerable: true,\n configurable: true,\n value: value,\n });\n },\n enumerable: false,\n configurable: true\n });\n EditSession.prototype.$resetRowCache = function (docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n EditSession.prototype.$getRowCacheIndex = function (cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n return low - 1;\n };\n EditSession.prototype.resetCaches = function () {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (!this.destroyed)\n this.bgTokenizer.start(0);\n };\n EditSession.prototype.onChangeFold = function (e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n EditSession.prototype.onChange = function (delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager) {\n if (removedFolds && removedFolds.length) {\n this.$undoManager.add({\n action: \"removeFolds\",\n folds: removedFolds\n }, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n }\n this.$undoManager.add(delta, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n this.$informUndoManager.schedule();\n }\n this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n EditSession.prototype.onSelectionChange = function () {\n this._signal(\"changeSelection\");\n };\n EditSession.prototype.setValue = function (text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n this.$resetRowCache(0);\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n EditSession.fromJSON = function (session) {\n if (typeof session == \"string\")\n session = JSON.parse(session);\n var undoManager = new UndoManager();\n undoManager.$undoStack = session.history.undo;\n undoManager.$redoStack = session.history.redo;\n undoManager.mark = session.history.mark;\n undoManager.$rev = session.history.rev;\n var editSession = new EditSession(session.value);\n session.folds.forEach(function (fold) {\n editSession.addFold(\"...\", Range.fromPoints(fold.start, fold.end));\n });\n editSession.setAnnotations(session.annotations);\n editSession.setBreakpoints(session.breakpoints);\n editSession.setMode(session.mode);\n editSession.setScrollLeft(session.scrollLeft);\n editSession.setScrollTop(session.scrollTop);\n editSession.setUndoManager(undoManager);\n editSession.selection.fromJSON(session.selection);\n return editSession;\n };\n EditSession.prototype.toJSON = function () {\n return {\n annotations: this.$annotations,\n breakpoints: this.$breakpoints,\n folds: this.getAllFolds().map(function (fold) {\n return fold.range;\n }),\n history: this.getUndoManager(),\n mode: this.$mode.$id,\n scrollLeft: this.$scrollLeft,\n scrollTop: this.$scrollTop,\n selection: this.selection.toJSON(),\n value: this.doc.getValue()\n };\n };\n EditSession.prototype.toString = function () {\n return this.doc.getValue();\n };\n EditSession.prototype.getSelection = function () {\n return this.selection;\n };\n EditSession.prototype.getState = function (row) {\n return this.bgTokenizer.getState(row);\n };\n EditSession.prototype.getTokens = function (row) {\n return this.bgTokenizer.getTokens(row);\n };\n EditSession.prototype.getTokenAt = function (row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n }\n else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n EditSession.prototype.setUndoManager = function (undoManager) {\n this.$undoManager = undoManager;\n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n if (undoManager) {\n var self = this;\n undoManager.addSession(this);\n this.$syncInformUndoManager = function () {\n self.$informUndoManager.cancel();\n self.mergeUndoDeltas = false;\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n }\n else {\n this.$syncInformUndoManager = function () { };\n }\n };\n EditSession.prototype.markUndoGroup = function () {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n EditSession.prototype.getUndoManager = function () {\n return this.$undoManager || this.$defaultUndoManager;\n };\n EditSession.prototype.getTabString = function () {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n }\n else {\n return \"\\t\";\n }\n };\n EditSession.prototype.setUseSoftTabs = function (val) {\n this.setOption(\"useSoftTabs\", val);\n };\n EditSession.prototype.getUseSoftTabs = function () {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n EditSession.prototype.setTabSize = function (tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n EditSession.prototype.getTabSize = function () {\n return this.$tabSize;\n };\n EditSession.prototype.isTabStop = function (position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n EditSession.prototype.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n EditSession.prototype.getNavigateWithinSoftTabs = function () {\n return this.$navigateWithinSoftTabs;\n };\n EditSession.prototype.setOverwrite = function (overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n EditSession.prototype.getOverwrite = function () {\n return this.$overwrite;\n };\n EditSession.prototype.toggleOverwrite = function () {\n this.setOverwrite(!this.$overwrite);\n };\n EditSession.prototype.addGutterDecoration = function (row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.removeGutterDecoration = function (row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.getBreakpoints = function () {\n return this.$breakpoints;\n };\n EditSession.prototype.setBreakpoints = function (rows) {\n this.$breakpoints = [];\n for (var i = 0; i < rows.length; i++) {\n this.$breakpoints[rows[i]] = \"ace_breakpoint\";\n }\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoints = function () {\n this.$breakpoints = [];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.setBreakpoint = function (row, className) {\n if (className === undefined)\n className = \"ace_breakpoint\";\n if (className)\n this.$breakpoints[row] = className;\n else\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoint = function (row) {\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.addMarker = function (range, clazz, type, inFront) {\n var id = this.$markerId++;\n var marker = {\n range: range,\n type: type || \"line\",\n renderer: typeof type == \"function\" ? type : null,\n clazz: clazz,\n inFront: !!inFront,\n id: id\n };\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return id;\n };\n EditSession.prototype.addDynamicMarker = function (marker, inFront) {\n if (!marker.update)\n return;\n var id = this.$markerId++;\n marker.id = id;\n marker.inFront = !!inFront;\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return marker;\n };\n EditSession.prototype.removeMarker = function (markerId) {\n var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId];\n if (!marker)\n return;\n var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers;\n delete (markers[markerId]);\n this._signal(marker.inFront ? \"changeFrontMarker\" : \"changeBackMarker\");\n };\n EditSession.prototype.getMarkers = function (inFront) {\n return inFront ? this.$frontMarkers : this.$backMarkers;\n };\n EditSession.prototype.highlight = function (re) {\n if (!this.$searchHighlight) {\n var highlight = new SearchHighlight(null, \"ace_selected-word\", \"text\");\n this.$searchHighlight = this.addDynamicMarker(highlight);\n }\n this.$searchHighlight.setRegexp(re);\n };\n EditSession.prototype.highlightLines = function (startRow, endRow, clazz, inFront) {\n if (typeof endRow != \"number\") {\n clazz = endRow;\n endRow = startRow;\n }\n if (!clazz)\n clazz = \"ace_step\";\n var range = new Range(startRow, 0, endRow, Infinity);\n range.id = this.addMarker(range, clazz, \"fullLine\", inFront);\n return range;\n };\n EditSession.prototype.setAnnotations = function (annotations) {\n this.$annotations = annotations;\n this._signal(\"changeAnnotation\", {});\n };\n EditSession.prototype.getAnnotations = function () {\n return this.$annotations || [];\n };\n EditSession.prototype.clearAnnotations = function () {\n this.setAnnotations([]);\n };\n EditSession.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r?\\n)/m);\n if (match) {\n this.$autoNewLine = match[1];\n }\n else {\n this.$autoNewLine = \"\\n\";\n }\n };\n EditSession.prototype.getWordRange = function (row, column) {\n var line = this.getLine(row);\n var inToken = false;\n if (column > 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column - 1, column + 1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n var start = column;\n if (start > 0) {\n do {\n start--;\n } while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n return new Range(row, start, row, end);\n };\n EditSession.prototype.getAWordRange = function (row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n EditSession.prototype.setNewLineMode = function (newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n EditSession.prototype.getNewLineMode = function () {\n return this.doc.getNewLineMode();\n };\n EditSession.prototype.setUseWorker = function (useWorker) { this.setOption(\"useWorker\", useWorker); };\n EditSession.prototype.getUseWorker = function () { return this.$useWorker; };\n EditSession.prototype.onReloadTokenizer = function (e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n EditSession.prototype.setMode = function (mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n }\n else {\n path = /**@type{string}*/ (mode) || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function (m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n }\n else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n EditSession.prototype.$onChangeMode = function (mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode)\n return;\n var oldMode = this.$mode;\n this.$mode = mode;\n this.$stopWorker();\n if (this.$useWorker)\n this.$startWorker();\n var tokenizer = mode.getTokenizer();\n if (tokenizer.on !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.on(\"update\", onReloadTokenizer);\n }\n this.bgTokenizer.setTokenizer(tokenizer);\n this.bgTokenizer.setDocument(this.getDocument());\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\", { oldMode: oldMode, mode: mode });\n }\n };\n EditSession.prototype.$stopWorker = function () {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n EditSession.prototype.$startWorker = function () {\n try {\n this.$worker = this.$mode.createWorker(this);\n }\n catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n EditSession.prototype.getMode = function () {\n return this.$mode;\n };\n EditSession.prototype.setScrollTop = function (scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n EditSession.prototype.getScrollTop = function () {\n return this.$scrollTop;\n };\n EditSession.prototype.setScrollLeft = function (scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n EditSession.prototype.getScrollLeft = function () {\n return this.$scrollLeft;\n };\n EditSession.prototype.getScreenWidth = function () {\n this.$computeWidth();\n if (this.lineWidgets)\n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n EditSession.prototype.getLineWidgetMaxWidth = function () {\n if (this.lineWidgetsWidth != null)\n return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n EditSession.prototype.$computeWidth = function (force) {\n if (this.$modified || force) {\n this.$modified = false;\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n EditSession.prototype.getLine = function (row) {\n return this.doc.getLine(row);\n };\n EditSession.prototype.getLines = function (firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n EditSession.prototype.getLength = function () {\n return this.doc.getLength();\n };\n EditSession.prototype.getTextRange = function (range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n EditSession.prototype.insert = function (position, text) {\n return this.doc.insert(position, text);\n };\n EditSession.prototype.remove = function (range) {\n return this.doc.remove(range);\n };\n EditSession.prototype.removeFullLines = function (firstRow, lastRow) {\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n EditSession.prototype.undoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.revertDelta(delta);\n }\n else if (delta.folds) {\n this.addFolds(delta.folds);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionBefore)\n this.selection.fromJSON(deltas.selectionBefore);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, true));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.redoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.$safeApplyDelta(delta);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionAfter)\n this.selection.fromJSON(deltas.selectionAfter);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, false));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.setUndoSelect = function (enable) {\n this.$undoSelect = enable;\n };\n EditSession.prototype.$getUndoSelection = function (deltas, isUndo) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n var range, point;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (!delta.start)\n continue; // skip folds\n if (!range) {\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n }\n else {\n range = Range.fromPoints(delta.start, delta.start);\n }\n continue;\n }\n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n }\n else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n }\n }\n return range;\n };\n EditSession.prototype.replace = function (range, text) {\n return this.doc.replace(range, text);\n };\n EditSession.prototype.moveText = function (fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function (x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n return toRange;\n };\n EditSession.prototype.indentRows = function (startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row = startRow; row <= endRow; row++)\n this.doc.insertInLine({ row: row, column: 0 }, indentString);\n };\n EditSession.prototype.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n }\n else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n EditSession.prototype.$moveLines = function (firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0)\n return 0;\n var diff = row - firstRow;\n }\n else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength() - 1)\n return 0;\n var diff = row - lastRow;\n }\n else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function (x) {\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow + diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n EditSession.prototype.moveLinesUp = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n EditSession.prototype.moveLinesDown = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n EditSession.prototype.duplicateLines = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n EditSession.prototype.$clipRowToDocument = function (row) {\n return Math.max(0, Math.min(row, this.doc.getLength() - 1));\n };\n EditSession.prototype.$clipColumnToRow = function (row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n EditSession.prototype.$clipPositionToDocument = function (row, column) {\n column = Math.max(0, column);\n if (row < 0) {\n row = 0;\n column = 0;\n }\n else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len - 1).length;\n }\n else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n return {\n row: row,\n column: column\n };\n };\n EditSession.prototype.$clipRangeToDocument = function (range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n }\n else {\n range.start.column = this.$clipColumnToRow(range.start.row, range.start.column);\n }\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n }\n else {\n range.end.column = this.$clipColumnToRow(range.end.row, range.end.column);\n }\n return range;\n };\n EditSession.prototype.setUseWrapMode = function (useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.getUseWrapMode = function () {\n return this.$useWrapMode;\n };\n EditSession.prototype.setWrapLimitRange = function (min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.adjustWrapLimit = function (desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = { min: $printMargin, max: $printMargin };\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n EditSession.prototype.$constrainWrapLimit = function (wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n return wrapLimit;\n };\n EditSession.prototype.getWrapLimit = function () {\n return this.$wrapLimit;\n };\n EditSession.prototype.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n EditSession.prototype.getWrapLimitRange = function () {\n return {\n min: this.$wrapLimitRange.min,\n max: this.$wrapLimitRange.max\n };\n };\n EditSession.prototype.$updateInternalDataOnChange = function (delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n lastRow = firstRow;\n }\n else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n }\n else \n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n }\n else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n return removedFolds;\n };\n EditSession.prototype.$updateRowLengthCache = function (firstRow, lastRow) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n EditSession.prototype.$updateWrapData = function (firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row++;\n }\n else {\n tokens = [];\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n }\n else {\n walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1);\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n EditSession.prototype.$computeWrapSplits = function (tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n var isCode = this.$wrapAsCode;\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var len = screenPos - lastSplit;\n for (var i = lastSplit; i < screenPos; i++) {\n var ch = tokens[i];\n if (ch === 12 || ch === 2)\n len -= 1;\n }\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split--;\n }\n }\n else {\n while (split > minSplit && tokens[split] < SPACE) {\n split--;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n EditSession.prototype.$getDisplayTokens = function (str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n }\n else if ((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n }\n else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n EditSession.prototype.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n }\n else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n EditSession.prototype.getRowLength = function (row) {\n var h = 1;\n if (this.lineWidgets)\n h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n if (!this.$useWrapMode || !this.$wrapData[row])\n return h;\n else\n return this.$wrapData[row].length + h;\n };\n EditSession.prototype.getRowLineCount = function (row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n }\n else {\n return this.$wrapData[row].length + 1;\n }\n };\n EditSession.prototype.getRowWrapIndent = function (screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n }\n else {\n return 0;\n }\n };\n EditSession.prototype.getScreenLastRowColumn = function (screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n EditSession.prototype.getDocumentLastRowColumn = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n EditSession.prototype.getDocumentLastRowColumnPosition = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n EditSession.prototype.getRowSplitData = function (row) {\n if (!this.$useWrapMode) {\n return undefined;\n }\n else {\n return this.$wrapData[row];\n }\n };\n EditSession.prototype.getScreenTabSize = function (screenColumn) {\n return this.$tabSize - (screenColumn % this.$tabSize | 0);\n };\n EditSession.prototype.screenToDocumentRow = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n EditSession.prototype.screenToDocumentColumn = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n EditSession.prototype.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return { row: 0, column: 0 };\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n }\n else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row + 1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n }\n else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n }\n else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if (splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n return { row: docRow, column: docColumn };\n };\n EditSession.prototype.documentToScreenPosition = function (docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(/**@type{Point}*/ (docRow).row, /**@type{Point}*/ (docRow).column);\n else\n pos = this.$clipPositionToDocument(/**@type{number}*/ (docRow), docColumn);\n docRow = pos.row;\n docColumn = pos.column;\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n var rowEnd, row = 0;\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n screenRow += this.getRowLength(row);\n row = rowEnd;\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n }\n else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow++;\n screenRowOffset++;\n }\n textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length);\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)\n screenRow += this.lineWidgets[row].rowsAbove;\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n EditSession.prototype.documentToScreenColumn = function (row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n EditSession.prototype.documentToScreenRow = function (docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n EditSession.prototype.getScreenLength = function () {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n }\n else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row : Infinity;\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row++;\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = this.$foldData[i++];\n foldStart = fold ? fold.start.row : Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n return screenRows;\n };\n EditSession.prototype.$setFontMetrics = function (fm) {\n if (!this.$enableVarChar)\n return;\n this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n };\n EditSession.prototype.getPrecedingCharacter = function () {\n var pos = this.selection.getCursor();\n if (pos.column === 0) {\n return pos.row === 0 ? \"\" : this.doc.getNewLineCharacter();\n }\n var currentLine = this.getLine(pos.row);\n return currentLine[pos.column - 1];\n };\n EditSession.prototype.destroy = function () {\n if (!this.destroyed) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer.cleanup();\n this.destroyed = true;\n }\n this.endOperation();\n this.$stopWorker();\n this.removeAllListeners();\n if (this.doc) {\n this.doc.off(\"change\", this.$onChange);\n }\n if (this.selection) {\n this.selection.off(\"changeCursor\", this.$onSelectionChange);\n this.selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n this.selection.detach();\n };\n return EditSession;\n}());\nEditSession.$uid = 0;\nEditSession.prototype.$modes = config.$modes;\nEditSession.prototype.getValue = EditSession.prototype.toString;\nEditSession.prototype.$defaultUndoManager = {\n undo: function () { },\n redo: function () { },\n hasUndo: function () { },\n hasRedo: function () { },\n reset: function () { },\n add: function () { },\n addSelection: function () { },\n startNewGroup: function () { },\n addSession: function () { }\n};\nEditSession.prototype.$overwrite = false;\nEditSession.prototype.$mode = null;\nEditSession.prototype.$modeId = null;\nEditSession.prototype.$scrollTop = 0;\nEditSession.prototype.$scrollLeft = 0;\nEditSession.prototype.$wrapLimit = 80;\nEditSession.prototype.$useWrapMode = false;\nEditSession.prototype.$wrapLimitRange = {\n min: null,\n max: null\n};\nEditSession.prototype.lineWidgets = null;\nEditSession.prototype.isFullWidth = isFullWidth;\noop.implement(EditSession.prototype, EventEmitter);\nvar CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12;\nfunction isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n}\nrequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nrequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function (value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n }\n else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function () {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n },\n wrapMethod: {\n set: function (val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: {\n set: function () {\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n },\n initialValue: true\n },\n firstLineNumber: {\n set: function () { this._signal(\"changeBreakpoint\"); },\n initialValue: 1\n },\n useWorker: {\n set: function (useWorker) {\n this.$useWorker = useWorker;\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: { initialValue: true },\n tabSize: {\n set: function (tabSize) {\n tabSize = parseInt(tabSize);\n if (tabSize > 0 && this.$tabSize !== tabSize) {\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n }\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: { initialValue: false },\n foldStyle: {\n set: function (val) { this.setFoldStyle(val); },\n handlesSet: true\n },\n overwrite: {\n set: function (val) { this._signal(\"changeOverwrite\"); },\n initialValue: false\n },\n newLineMode: {\n set: function (val) { this.doc.setNewLineMode(val); },\n get: function () { return this.doc.getNewLineMode(); },\n handlesSet: true\n },\n mode: {\n set: function (val) { this.setMode(val); },\n get: function () { return this.$modeId; },\n handlesSet: true\n }\n});\nexports.EditSession = EditSession;\n\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\nvar Search = /** @class */ (function () {\n function Search() {\n this.$options = {};\n }\n Search.prototype.set = function (options) {\n oop.mixin(this.$options, options);\n return this;\n };\n Search.prototype.getOptions = function () {\n return lang.copyObject(this.$options);\n };\n Search.prototype.setOptions = function (options) {\n this.$options = options;\n };\n Search.prototype.find = function (session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n var firstRange = null;\n iterator.forEach(function (sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && /**@type{Range}*/ (options.start).start\n && options.skipCurrent != false && firstRange.isEqual(/**@type{Range}*/ (options.start))) {\n firstRange = null;\n return false;\n }\n return true;\n });\n return firstRange;\n };\n Search.prototype.findAll = function (session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex) {\n continue;\n }\n ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex));\n if (len > 2)\n row = row + len - 2;\n }\n }\n else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.end.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == 0)\n i++;\n var endRow = range.end.row - range.start.row;\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == endRow)\n j--;\n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n return ranges;\n };\n Search.prototype.replace = function (input, replacement) {\n var options = this.$options;\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n if (!re)\n return;\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n if (!options.regExp) {\n replacement = replacement.replace(/\\$/g, \"$$$$\");\n }\n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--;) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n return replacement;\n };\n Search.prototype.$assembleRegExp = function (options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n var needle = options.needle;\n if (!options.needle)\n return options.re = false;\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n try {\n new RegExp(needle, \"u\");\n options.$supportsUnicodeFlag = true;\n modifier += \"u\";\n }\n catch (e) {\n options.$supportsUnicodeFlag = false; //left for backward compatibility with previous versions for cases like /ab\\{2}/gu\n }\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n try {\n var re = new RegExp(needle, modifier);\n }\n catch (e) {\n re = false;\n }\n return options.re = re;\n };\n Search.prototype.$assembleMultilineRegExp = function (needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++)\n try {\n re.push(new RegExp(parts[i], modifier));\n }\n catch (e) {\n return false;\n }\n return re;\n };\n Search.prototype.$matchIterator = function (session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n var supportsUnicodeFlag = re.unicode;\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n if (backwards) {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function (row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0 || startRow + len > session.getLength())\n return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1)\n return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset)\n return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function (row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length)\n break;\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function (row, startIndex, callback) {\n var line = session.getLine(row);\n var last;\n var m;\n re.lastIndex = startIndex;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row, last + length))\n return true;\n if (!length) {\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n if (last >= line.length)\n return false;\n }\n }\n };\n }\n return { forEach: forEach };\n };\n return Search;\n}());\nfunction addWordBoundary(needle, options) {\n var supportsLookbehind = lang.supportsLookbehind();\n function wordBoundary(c, firstChar) {\n if (firstChar === void 0) { firstChar = true; }\n var wordRegExp = supportsLookbehind && options.$supportsUnicodeFlag ? new RegExp(\"[\\\\p{L}\\\\p{N}_]\", \"u\") : new RegExp(\"\\\\w\");\n if (wordRegExp.test(c) || options.regExp) {\n if (supportsLookbehind && options.$supportsUnicodeFlag) {\n if (firstChar)\n return \"(?<=^|[^\\\\p{L}\\\\p{N}_])\";\n return \"(?=[^\\\\p{L}\\\\p{N}_]|$)\";\n }\n return \"\\\\b\";\n }\n return \"\";\n }\n var needleArray = Array.from(needle);\n var firstChar = needleArray[0];\n var lastChar = needleArray[needleArray.length - 1];\n return wordBoundary(firstChar) + needle + wordBoundary(lastChar, false);\n}\nexports.Search = Search;\n\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})(); var keyUtil = require(\"../lib/keys\");\nvar useragent = require(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\nvar MultiHashHandler = /** @class */ (function () {\n function MultiHashHandler(config, platform) {\n this.$init(config, platform, false);\n }\n MultiHashHandler.prototype.$init = function (config, platform, $singleCommand) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = $singleCommand;\n };\n MultiHashHandler.prototype.addCommand = function (command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n this.commands[command.name] = command;\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n MultiHashHandler.prototype.removeCommand = function (command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n }\n else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n MultiHashHandler.prototype.bindKey = function (key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({ exec: command, bindKey: key, name: command.name || /**@type{string}*/ (key) }); (key).split(\"|\").forEach(function (keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function (keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n MultiHashHandler.prototype._addCommandToBinding = function (keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n }\n else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n }\n else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n }\n else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n MultiHashHandler.prototype.addCommands = function (commands) {\n commands && Object.keys(commands).forEach(function (name) {\n var command = commands[name];\n if (!command)\n return;\n if (typeof command === \"string\")\n return this.bindKey(command, name);\n if (typeof command === \"function\")\n command = { exec: command };\n if (typeof command !== \"object\")\n return;\n if (!command.name)\n command.name = name;\n this.addCommand(command);\n }, this);\n };\n MultiHashHandler.prototype.removeCommands = function (commands) {\n Object.keys(commands).forEach(function (name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n MultiHashHandler.prototype.bindKeys = function (keyList) {\n Object.keys(keyList).forEach(function (key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n MultiHashHandler.prototype._buildKeyHash = function (command) {\n this.bindKey(command.bindKey, command);\n };\n MultiHashHandler.prototype.parseKeys = function (keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function (x) { return x; });\n var key = parts.pop();\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return { key: key, hashId: -1 };\n else if (parts.length == 1 && parts[0] == \"shift\")\n return { key: key.toUpperCase(), hashId: -1 };\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return { key: key, hashId: hashId };\n };\n MultiHashHandler.prototype.findKeyCommand = function (hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n MultiHashHandler.prototype.handleKeyboard = function (data, hashId, keyString, keyCode) {\n if (keyCode < 0)\n return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return { command: \"null\" };\n }\n }\n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return { command: command };\n };\n MultiHashHandler.prototype.getStatusText = function (editor, data) {\n return data.$keyChain || \"\";\n };\n return MultiHashHandler;\n}());\nfunction getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position\n || (command.isDefault ? -100 : 0);\n}\nvar HashHandler = /** @class */ (function (_super) {\n __extends(HashHandler, _super);\n function HashHandler(config, platform) {\n var _this = _super.call(this, config, platform) || this;\n _this.$singleCommand = true;\n return _this;\n }\n return HashHandler;\n}(MultiHashHandler));\nHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, true);\n};\nMultiHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, false);\n};\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"../lib/oop\");\nvar MultiHashHandler = require(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CommandManager = /** @class */ (function (_super) {\n __extends(CommandManager, _super);\n function CommandManager(platform, commands) {\n var _this = _super.call(this, commands, platform) || this;\n _this.byName = _this.commands;\n _this.setDefaultHandler(\"exec\", function (e) {\n if (!e.args) {\n return e.command.exec(e.editor, {}, e.event, true);\n }\n return e.command.exec(e.editor, e.args, e.event, false);\n });\n return _this;\n }\n CommandManager.prototype.exec = function (command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--;) {\n if (this.exec(command[i], editor, args))\n return true;\n }\n return false;\n }\n if (typeof command === \"string\")\n command = this.commands[command];\n if (!this.canExecute(command, editor)) {\n return false;\n }\n var e = { editor: editor, command: command, args: args };\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n return e.returnValue === false ? false : true;\n };\n CommandManager.prototype.canExecute = function (command, editor) {\n if (typeof command === \"string\")\n command = this.commands[command];\n if (!command)\n return false;\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor))\n return false;\n return true;\n };\n CommandManager.prototype.toggleRecording = function (editor) {\n if (this.$inReplay)\n return;\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.off(\"exec\", this.$addCommandToMacro);\n if (!this.macro.length)\n this.macro = this.oldMacro;\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function (e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n CommandManager.prototype.replay = function (editor) {\n if (this.$inReplay || !this.macro)\n return;\n if (this.recording)\n return this.toggleRecording(editor);\n try {\n this.$inReplay = true;\n this.macro.forEach(function (x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n }\n finally {\n this.$inReplay = false;\n }\n };\n CommandManager.prototype.trimMacro = function (m) {\n return m.map(function (x) {\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n return CommandManager;\n}(MultiHashHandler));\noop.implement(CommandManager.prototype, EventEmitter);\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"../lib/lang\");\nvar config = require(\"../config\");\nvar Range = require(\"../range\").Range;\nfunction bindKey(win, mac) {\n return { win: win, mac: mac };\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n description: \"Show settings menu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/settings_menu\", function (module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n }, {\n name: \"goToNextError\",\n description: \"Go to next error\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"goToPreviousError\",\n description: \"Go to previous error\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selectall\",\n description: \"Select all\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function (editor) { editor.selectAll(); },\n readOnly: true\n }, {\n name: \"centerselection\",\n description: \"Center selection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function (editor) { editor.centerSelection(); },\n readOnly: true\n }, {\n name: \"gotoline\",\n description: \"Go to line...\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function (editor, line) {\n if (typeof line === \"number\" && !isNaN(line))\n editor.gotoLine(line);\n editor.prompt({ $type: \"gotoLine\" });\n },\n readOnly: true\n }, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function (editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function (editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleFoldWidget\",\n description: \"Toggle fold widget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleParentFoldWidget\",\n description: \"Toggle parent fold widget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldall\",\n description: \"Fold all\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldAllComments\",\n description: \"Fold all comments\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAllComments(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldOther\",\n description: \"Fold other\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function (editor) {\n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfoldall\",\n description: \"Unfold all\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function (editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findnext\",\n description: \"Find next\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function (editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findprevious\",\n description: \"Find previous\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function (editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"selectOrFindNext\",\n description: \"Select or find next\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext();\n },\n readOnly: true\n }, {\n name: \"selectOrFindPrevious\",\n description: \"Select or find previous\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n }, {\n name: \"find\",\n description: \"Find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor); });\n },\n readOnly: true\n }, {\n name: \"overwrite\",\n description: \"Overwrite\",\n bindKey: \"Insert\",\n exec: function (editor) { editor.toggleOverwrite(); },\n readOnly: true\n }, {\n name: \"selecttostart\",\n description: \"Select to start\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function (editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotostart\",\n description: \"Go to start\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function (editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectup\",\n description: \"Select up\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function (editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golineup\",\n description: \"Go line up\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function (editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttoend\",\n description: \"Select to end\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function (editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotoend\",\n description: \"Go to end\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function (editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectdown\",\n description: \"Select down\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function (editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golinedown\",\n description: \"Go line down\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function (editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordleft\",\n description: \"Select word left\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function (editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordleft\",\n description: \"Go to word left\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function (editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolinestart\",\n description: \"Select to line start\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolinestart\",\n description: \"Go to line start\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function (editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectleft\",\n description: \"Select left\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function (editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoleft\",\n description: \"Go to left\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function (editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordright\",\n description: \"Select word right\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordright\",\n description: \"Go to word right\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function (editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolineend\",\n description: \"Select to line end\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolineend\",\n description: \"Go to line end\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function (editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectright\",\n description: \"Select right\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoright\",\n description: \"Go to right\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function (editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectpagedown\",\n description: \"Select page down\",\n bindKey: \"Shift-PageDown\",\n exec: function (editor) { editor.selectPageDown(); },\n readOnly: true\n }, {\n name: \"pagedown\",\n description: \"Page down\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function (editor) { editor.scrollPageDown(); },\n readOnly: true\n }, {\n name: \"gotopagedown\",\n description: \"Go to page down\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function (editor) { editor.gotoPageDown(); },\n readOnly: true\n }, {\n name: \"selectpageup\",\n description: \"Select page up\",\n bindKey: \"Shift-PageUp\",\n exec: function (editor) { editor.selectPageUp(); },\n readOnly: true\n }, {\n name: \"pageup\",\n description: \"Page up\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function (editor) { editor.scrollPageUp(); },\n readOnly: true\n }, {\n name: \"gotopageup\",\n description: \"Go to page up\",\n bindKey: \"PageUp\",\n exec: function (editor) { editor.gotoPageUp(); },\n readOnly: true\n }, {\n name: \"scrollup\",\n description: \"Scroll up\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"scrolldown\",\n description: \"Scroll down\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"selectlinestart\",\n description: \"Select line start\",\n bindKey: \"Shift-Home\",\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectlineend\",\n description: \"Select line end\",\n bindKey: \"Shift-End\",\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"togglerecording\",\n description: \"Toggle recording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function (editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n }, {\n name: \"replaymacro\",\n description: \"Replay macro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function (editor) { editor.commands.replay(editor); },\n readOnly: true\n }, {\n name: \"jumptomatching\",\n description: \"Jump to matching\",\n bindKey: bindKey(\"Ctrl-\\\\|Ctrl-P\", \"Command-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selecttomatching\",\n description: \"Select to matching\",\n bindKey: bindKey(\"Ctrl-Shift-\\\\|Ctrl-Shift-P\", \"Command-Shift-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"expandToMatching\",\n description: \"Expand to matching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function (editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"passKeysToBrowser\",\n description: \"Pass keys to browser\",\n bindKey: bindKey(null, null),\n exec: function () { },\n passEvent: true,\n readOnly: true\n }, {\n name: \"copy\",\n description: \"Copy\",\n exec: function (editor) {\n },\n readOnly: true\n },\n {\n name: \"cut\",\n description: \"Cut\",\n exec: function (editor) {\n var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty();\n var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange();\n editor._emit(\"cut\", range);\n if (!range.isEmpty())\n editor.session.remove(range);\n editor.clearSelection();\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"paste\",\n description: \"Paste\",\n exec: function (editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n }, {\n name: \"removeline\",\n description: \"Remove line\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function (editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"duplicateSelection\",\n description: \"Duplicate selection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function (editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"sortlines\",\n description: \"Sort lines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function (editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"togglecomment\",\n description: \"Toggle comment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function (editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"toggleBlockComment\",\n description: \"Toggle block comment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function (editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"modifyNumberUp\",\n description: \"Modify number up\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function (editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"modifyNumberDown\",\n description: \"Modify number down\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function (editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"replace\",\n description: \"Replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor, true); });\n }\n }, {\n name: \"undo\",\n description: \"Undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function (editor) { editor.undo(); }\n }, {\n name: \"redo\",\n description: \"Redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function (editor) { editor.redo(); }\n }, {\n name: \"copylinesup\",\n description: \"Copy lines up\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function (editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesup\",\n description: \"Move lines up\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function (editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"copylinesdown\",\n description: \"Copy lines down\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function (editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesdown\",\n description: \"Move lines down\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function (editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"del\",\n description: \"Delete\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function (editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"backspace\",\n description: \"Backspace\",\n bindKey: bindKey(\"Shift-Backspace|Backspace\", \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),\n exec: function (editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"cut_or_delete\",\n description: \"Cut or delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function (editor) {\n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n }\n else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestart\",\n description: \"Remove to line start\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function (editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineend\",\n description: \"Remove to line end\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function (editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestarthard\",\n description: \"Remove to line start hard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineendhard\",\n description: \"Remove to line end hard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordleft\",\n description: \"Remove word left\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function (editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordright\",\n description: \"Remove word right\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function (editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"outdent\",\n description: \"Outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"indent\",\n description: \"Indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function (editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockoutdent\",\n description: \"Block outdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockindent\",\n description: \"Block indent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function (editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"insertstring\",\n description: \"Insert string\",\n exec: function (editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"inserttext\",\n description: \"Insert text\",\n exec: function (editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"splitline\",\n description: \"Split line\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function (editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"transposeletters\",\n description: \"Transpose letters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function (editor) { editor.transposeLetters(); },\n multiSelectAction: function (editor) { editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"touppercase\",\n description: \"To uppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function (editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"tolowercase\",\n description: \"To lowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function (editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"autoindent\",\n description: \"Auto Indent\",\n bindKey: bindKey(null, null),\n exec: function (editor) { editor.autoIndent(); },\n scrollIntoView: \"animate\"\n }, {\n name: \"expandtoline\",\n description: \"Expand to line\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"openlink\",\n bindKey: bindKey(\"Ctrl+F3\", \"F3\"),\n exec: function (editor) { editor.openLink(); }\n }, {\n name: \"joinlines\",\n description: \"Join lines\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n }\n else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n }, {\n name: \"invertSelection\",\n description: \"Invert selection\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n }\n else {\n newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n editor.exitMultiSelectMode();\n editor.clearSelection();\n for (var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n }, {\n name: \"addLineAfter\",\n description: \"Add new line after the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n editor.navigateLineEnd();\n editor.insert(\"\\n\");\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"addLineBefore\",\n description: \"Add new line before the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n var cursor = editor.getCursorPosition();\n editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);\n editor.insert(\"\\n\");\n if (cursor.row === 0)\n editor.navigateUp();\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"openCommandPallete\",\n exec: function (editor) {\n console.warn(\"This is an obsolete command. Please use `openCommandPalette` instead.\");\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"openCommandPalette\",\n description: \"Open command palette\",\n bindKey: bindKey(\"F1\", \"F1\"),\n exec: function (editor) {\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"modeSelect\",\n description: \"Change language mode...\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n editor.prompt({ $type: \"modes\" });\n },\n readOnly: true\n }];\nfor (var i = 1; i < 9; i++) {\n exports.commands.push({\n name: \"foldToLevel\" + i,\n description: \"Fold To Level \" + i,\n level: i,\n exec: function (editor) { editor.session.foldToLevel(this.level); },\n scrollIntoView: \"center\",\n readOnly: true\n });\n}\n\n});\n\nace.define(\"ace/keyboard/gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/mouse/default_gutter_handler\"], function(require, exports, module){\"use strict\";\nvar keys = require('../lib/keys');\nvar GutterTooltip = require(\"../mouse/default_gutter_handler\").GutterTooltip;\nvar GutterKeyboardHandler = /** @class */ (function () {\n function GutterKeyboardHandler(editor) {\n this.editor = editor;\n this.gutterLayer = editor.renderer.$gutterLayer;\n this.element = editor.renderer.$gutter;\n this.lines = editor.renderer.$gutterLayer.$lines;\n this.activeRowIndex = null;\n this.activeLane = null;\n this.annotationTooltip = new GutterTooltip(this.editor);\n }\n GutterKeyboardHandler.prototype.addListener = function () {\n this.element.addEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.addEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.on(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.removeListener = function () {\n this.element.removeEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.removeEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.off(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.$onGutterKeyDown = function (e) {\n if (this.annotationTooltip.isOpen) {\n e.preventDefault();\n if (e.keyCode === keys[\"escape\"])\n this.annotationTooltip.hideTooltip();\n return;\n }\n if (e.target === this.element) {\n if (e.keyCode != keys[\"enter\"]) {\n return;\n }\n e.preventDefault();\n var row = this.editor.getCursorPosition().row;\n if (!this.editor.isRowVisible(row))\n this.editor.scrollToLine(row, true, true);\n setTimeout(\n function () {\n var index = this.$rowToRowIndex(this.gutterLayer.$cursorCell.row);\n var nearestFoldIndex = this.$findNearestFoldWidget(index);\n var nearestAnnotationIndex = this.$findNearestAnnotation(index);\n if (nearestFoldIndex === null && nearestAnnotationIndex === null)\n return;\n if (nearestFoldIndex === null && nearestAnnotationIndex !== null) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n if (nearestFoldIndex !== null && nearestAnnotationIndex === null) {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n if (Math.abs(nearestAnnotationIndex - index) < Math.abs(nearestFoldIndex - index)) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n else {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }.bind(this), 10);\n return;\n }\n this.$handleGutterKeyboardInteraction(e);\n setTimeout(function () {\n this.editor._signal(\"gutterkeydown\", new GutterKeyboardEvent(e, this));\n }.bind(this), 10);\n };\n GutterKeyboardHandler.prototype.$handleGutterKeyboardInteraction = function (e) {\n if (e.keyCode === keys[\"tab\"]) {\n e.preventDefault();\n return;\n }\n if (e.keyCode === keys[\"escape\"]) {\n e.preventDefault();\n this.$blurGutter();\n this.element.focus();\n this.lane = null;\n return;\n }\n if (e.keyCode === keys[\"up\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetUp();\n break;\n case \"annotation\":\n this.$moveAnnotationUp();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"down\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetDown();\n break;\n case \"annotation\":\n this.$moveAnnotationDown();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"left\"]) {\n e.preventDefault();\n this.$switchLane(\"annotation\");\n return;\n }\n if (e.keyCode === keys[\"right\"]) {\n e.preventDefault();\n this.$switchLane(\"fold\");\n return;\n }\n if (e.keyCode === keys[\"enter\"] || e.keyCode === keys[\"space\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'start') {\n var rowFoldingWidget = this.$rowIndexToRow(this.activeRowIndex);\n this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e);\n setTimeout(\n function () {\n if (this.$rowIndexToRow(this.activeRowIndex) !== rowFoldingWidget) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = this.$rowToRowIndex(rowFoldingWidget);\n this.$focusFoldWidget(this.activeRowIndex);\n }\n }.bind(this), 10);\n break;\n }\n else if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'end') {\n break;\n }\n return;\n case \"annotation\":\n var gutterElement = this.lines.cells[this.activeRowIndex].element.childNodes[2];\n var rect = gutterElement.getBoundingClientRect();\n var style = this.annotationTooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex));\n break;\n }\n return;\n }\n };\n GutterKeyboardHandler.prototype.$blurGutter = function () {\n if (this.activeRowIndex !== null) {\n switch (this.activeLane) {\n case \"fold\":\n this.$blurFoldWidget(this.activeRowIndex);\n break;\n case \"annotation\":\n this.$blurAnnotation(this.activeRowIndex);\n break;\n }\n }\n if (this.annotationTooltip.isOpen)\n this.annotationTooltip.hideTooltip();\n return;\n };\n GutterKeyboardHandler.prototype.$isFoldWidgetVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getFoldWidget(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$isAnnotationVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getAnnotation(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$getFoldWidget = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[1];\n };\n GutterKeyboardHandler.prototype.$getAnnotation = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[2];\n };\n GutterKeyboardHandler.prototype.$findNearestFoldWidget = function (index) {\n if (this.$isFoldWidgetVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isFoldWidgetVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isFoldWidgetVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$findNearestAnnotation = function (index) {\n if (this.$isAnnotationVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isAnnotationVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isAnnotationVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$focusFoldWidget = function (index) {\n if (index == null)\n return;\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.add(this.editor.renderer.keyboardFocusClassName);\n foldWidget.focus();\n };\n GutterKeyboardHandler.prototype.$focusAnnotation = function (index) {\n if (index == null)\n return;\n var annotation = this.$getAnnotation(index);\n annotation.classList.add(this.editor.renderer.keyboardFocusClassName);\n annotation.focus();\n };\n GutterKeyboardHandler.prototype.$blurFoldWidget = function (index) {\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.remove(this.editor.renderer.keyboardFocusClassName);\n foldWidget.blur();\n };\n GutterKeyboardHandler.prototype.$blurAnnotation = function (index) {\n var annotation = this.$getAnnotation(index);\n annotation.classList.remove(this.editor.renderer.keyboardFocusClassName);\n annotation.blur();\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$switchLane = function (desinationLane) {\n switch (desinationLane) {\n case \"annotation\":\n if (this.activeLane === \"annotation\") {\n break;\n }\n var annotationIndex = this.$findNearestAnnotation(this.activeRowIndex);\n if (annotationIndex == null) {\n break;\n }\n this.activeLane = \"annotation\";\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = annotationIndex;\n this.$focusAnnotation(this.activeRowIndex);\n break;\n case \"fold\":\n if (this.activeLane === \"fold\") {\n break;\n }\n var foldWidgetIndex = this.$findNearestFoldWidget(this.activeRowIndex);\n if (foldWidgetIndex == null) {\n break;\n }\n this.activeLane = \"fold\";\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = foldWidgetIndex;\n this.$focusFoldWidget(this.activeRowIndex);\n break;\n }\n return;\n };\n GutterKeyboardHandler.prototype.$rowIndexToRow = function (index) {\n var cell = this.lines.get(index);\n if (cell)\n return cell.row;\n return null;\n };\n GutterKeyboardHandler.prototype.$rowToRowIndex = function (row) {\n for (var i = 0; i < this.lines.getLength(); i++) {\n var cell = this.lines.get(i);\n if (cell.row == row)\n return i;\n }\n return null;\n };\n return GutterKeyboardHandler;\n}());\nexports.GutterKeyboardHandler = GutterKeyboardHandler;\nvar GutterKeyboardEvent = /** @class */ (function () {\n function GutterKeyboardEvent(domEvent, gutterKeyboardHandler) {\n this.gutterKeyboardHandler = gutterKeyboardHandler;\n this.domEvent = domEvent;\n }\n GutterKeyboardEvent.prototype.getKey = function () {\n return keys.keyCodeToString(this.domEvent.keyCode);\n };\n GutterKeyboardEvent.prototype.getRow = function () {\n return this.gutterKeyboardHandler.$rowIndexToRow(this.gutterKeyboardHandler.activeRowIndex);\n };\n GutterKeyboardEvent.prototype.isInAnnotationLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"annotation\";\n };\n GutterKeyboardEvent.prototype.isInFoldLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"fold\";\n };\n return GutterKeyboardEvent;\n}());\nexports.GutterKeyboardEvent = GutterKeyboardEvent;\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\",\"ace/keyboard/gutter_handler\",\"ace/config\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar useragent = require(\"./lib/useragent\");\nvar TextInput = require(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = require(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = require(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = require(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Search = require(\"./search\").Search;\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = require(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = require(\"./commands/default_commands\").commands;\nvar config = require(\"./config\");\nvar TokenIterator = require(\"./token_iterator\").TokenIterator;\nvar GutterKeyboardHandler = require(\"./keyboard/gutter_handler\").GutterKeyboardHandler;\nvar nls = require(\"./config\").nls;\nvar clipboard = require(\"./clipboard\");\nvar keys = require('./lib/keys');\nvar Editor = /** @class */ (function () {\n function Editor(renderer, session, options) { this.session;\n this.$toDestroy = [];\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n this.keyBinding = new KeyBinding(this);\n this.$search = new Search().set({\n wrap: true\n });\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n this.$initOperationListeners();\n this._$emitInputEvent = lang.delayedCall(function () {\n this._signal(\"input\", {});\n if (this.session && !this.session.destroyed)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n this.on(\"change\", function (_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n this.setSession(session || options && options.session || new EditSession(\"\"));\n config.resetOptions(this);\n if (options)\n this.setOptions(options);\n config._signal(\"editor\", this);\n }\n Editor.prototype.$initOperationListeners = function () {\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n };\n Editor.prototype.startOperation = function (commandEvent) {\n this.session.startOperation(commandEvent);\n };\n Editor.prototype.endOperation = function (e) {\n this.session.endOperation(e);\n };\n Editor.prototype.onStartOperation = function (commandEvent) {\n this.curOp = this.session.curOp;\n this.curOp.scrollTop = this.renderer.scrollTop;\n this.prevOp = this.session.prevOp;\n if (!commandEvent) {\n this.previousCommand = null;\n }\n };\n Editor.prototype.onEndOperation = function (e) {\n if (this.curOp && this.session) {\n if (e && e.returnValue === false) {\n this.curOp = null;\n return;\n }\n this._signal(\"beforeEndOperation\");\n if (!this.curOp)\n return;\n var command = this.curOp.command;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n this.$lastSel = this.session.selection.toJSON();\n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n Editor.prototype.$historyTracker = function (e) {\n if (!this.$mergeUndoDeltas)\n return;\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n this.mergeNextCommand = true;\n }\n else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n if (this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000) {\n shouldMerge = false; // the sequence is too long\n }\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n Editor.prototype.setKeyboardHandler = function (keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\" && keyboardHandler != \"ace\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function (module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n }\n else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n Editor.prototype.getKeyboardHandler = function () {\n return this.keyBinding.getKeyboardHandler();\n };\n Editor.prototype.setSession = function (session) {\n if (this.session == session)\n return;\n if (this.curOp)\n this.endOperation();\n this.curOp = {};\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n this.session.off(\"startOperation\", this.$onStartOperation);\n this.session.off(\"endOperation\", this.$onEndOperation);\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n this.$onStartOperation = this.onStartOperation.bind(this);\n this.session.on(\"startOperation\", this.$onStartOperation);\n this.$onEndOperation = this.onEndOperation.bind(this);\n this.session.on(\"endOperation\", this.$onEndOperation);\n this.onChangeMode();\n this.onCursorChange();\n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n }\n else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n this.curOp = null;\n oldSession && oldSession._signal(\"changeEditor\", { oldEditor: this });\n if (oldSession)\n oldSession.$editor = null;\n session && session._signal(\"changeEditor\", { editor: this });\n if (session)\n session.$editor = this;\n if (session && !session.destroyed)\n session.bgTokenizer.scheduleStart();\n };\n Editor.prototype.getSession = function () {\n return this.session;\n };\n Editor.prototype.setValue = function (val, cursorPos) {\n this.session.doc.setValue(val);\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n return val;\n };\n Editor.prototype.getValue = function () {\n return this.session.getValue();\n };\n Editor.prototype.getSelection = function () {\n return this.selection;\n };\n Editor.prototype.resize = function (force) {\n this.renderer.onResize(force);\n };\n Editor.prototype.setTheme = function (theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n Editor.prototype.getTheme = function () {\n return this.renderer.getTheme();\n };\n Editor.prototype.setStyle = function (style) {\n this.renderer.setStyle(style);\n };\n Editor.prototype.unsetStyle = function (style) {\n this.renderer.unsetStyle(style);\n };\n Editor.prototype.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container).fontSize;\n };\n Editor.prototype.setFontSize = function (size) {\n this.setOption(\"fontSize\", size);\n };\n Editor.prototype.$highlightBrackets = function () {\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function () {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || session.destroyed)\n return;\n if (session.$bracketHighlight) {\n session.$bracketHighlight.markerIds.forEach(function (id) {\n session.removeMarker(id);\n });\n session.$bracketHighlight = null;\n }\n var pos = self.getCursorPosition();\n var handler = self.getKeyboardHandler();\n var isBackwards = handler && handler.$getDirectionForHighlight && handler.$getDirectionForHighlight(self);\n var ranges = session.getMatchingBracketRanges(pos, isBackwards);\n if (!ranges) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n if (token && /\\b(?:tag-open|tag-name)/.test(token.type)) {\n var tagNamesRanges = session.getMatchingTags(pos);\n if (tagNamesRanges) {\n ranges = [\n tagNamesRanges.openTagName.isEmpty() ? tagNamesRanges.openTag : tagNamesRanges.openTagName,\n tagNamesRanges.closeTagName.isEmpty() ? tagNamesRanges.closeTag : tagNamesRanges.closeTagName\n ];\n }\n }\n }\n if (!ranges && session.$mode.getMatching)\n ranges = session.$mode.getMatching(self.session);\n if (!ranges) {\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n return;\n }\n var markerType = \"ace_bracket\";\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n }\n else if (ranges.length == 1) {\n markerType = \"ace_error_bracket\";\n }\n if (ranges.length == 2) {\n if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)\n ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];\n else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)\n ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];\n }\n session.$bracketHighlight = {\n ranges: ranges,\n markerIds: ranges.map(function (range) {\n return session.addMarker(range, markerType, \"text\");\n })\n };\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n }, 50);\n };\n Editor.prototype.focus = function () {\n this.textInput.focus();\n };\n Editor.prototype.isFocused = function () {\n return this.textInput.isFocused();\n };\n Editor.prototype.blur = function () {\n this.textInput.blur();\n };\n Editor.prototype.onFocus = function (e) {\n if (this.$isFocused)\n return;\n this.$isFocused = true;\n this.renderer.showCursor();\n this.renderer.visualizeFocus();\n this._emit(\"focus\", e);\n };\n Editor.prototype.onBlur = function (e) {\n if (!this.$isFocused)\n return;\n this.$isFocused = false;\n this.renderer.hideCursor();\n this.renderer.visualizeBlur();\n this._emit(\"blur\", e);\n };\n Editor.prototype.$cursorChange = function () {\n this.renderer.updateCursor();\n this.$highlightBrackets();\n this.$updateHighlightActiveLine();\n };\n Editor.prototype.onDocumentChange = function (delta) {\n var wrap = this.session.$useWrapMode;\n var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\n this.renderer.updateLines(delta.start.row, lastRow, wrap);\n this._signal(\"change\", delta);\n this.$cursorChange();\n };\n Editor.prototype.onTokenizerUpdate = function (e) {\n var rows = e.data;\n this.renderer.updateLines(rows.first, rows.last);\n };\n Editor.prototype.onScrollTopChange = function () {\n this.renderer.scrollToY(this.session.getScrollTop());\n };\n Editor.prototype.onScrollLeftChange = function () {\n this.renderer.scrollToX(this.session.getScrollLeft());\n };\n Editor.prototype.onCursorChange = function () {\n this.$cursorChange();\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$updateHighlightActiveLine = function () {\n var session = this.getSession();\n var highlight;\n if (this.$highlightActiveLine) {\n if (this.$selectionStyle != \"line\" || !this.selection.isMultiLine())\n highlight = this.getCursorPosition();\n if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty())\n highlight = false;\n if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\n highlight = false;\n }\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n }\n else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n }\n else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n Editor.prototype.onSelectionChange = function (e) {\n var session = this.session;\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n }\n else {\n this.$updateHighlightActiveLine();\n }\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$getSelectionHighLightRegexp = function () {\n var session = this.session;\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n var startColumn = selection.start.column;\n var endColumn = selection.end.column;\n var line = session.getLine(selection.start.row);\n var needle = line.substring(startColumn, endColumn);\n if (needle.length > 5000 || !/[\\w\\d]/.test(needle))\n return;\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1);\n if (!re.test(wordWithBoundary))\n return;\n return re;\n };\n Editor.prototype.onChangeFrontMarker = function () {\n this.renderer.updateFrontMarkers();\n };\n Editor.prototype.onChangeBackMarker = function () {\n this.renderer.updateBackMarkers();\n };\n Editor.prototype.onChangeBreakpoint = function () {\n this.renderer.updateBreakpoints();\n };\n Editor.prototype.onChangeAnnotation = function () {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n Editor.prototype.onChangeMode = function (e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n Editor.prototype.onChangeWrapLimit = function () {\n this.renderer.updateFull();\n };\n Editor.prototype.onChangeWrapMode = function () {\n this.renderer.onResize(true);\n };\n Editor.prototype.onChangeFold = function () {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n Editor.prototype.getSelectedText = function () {\n return this.session.getTextRange(this.getSelectionRange());\n };\n Editor.prototype.getCopyText = function () {\n var text = this.getSelectedText();\n var nl = this.session.doc.getNewLineCharacter();\n var copyLine = false;\n if (!text && this.$copyWithEmptySelection) {\n copyLine = true;\n var ranges = this.selection.getAllRanges();\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (i && ranges[i - 1].start.row == range.start.row)\n continue;\n text += this.session.getLine(range.start.row) + nl;\n }\n }\n var e = { text: text };\n this._signal(\"copy\", e);\n clipboard.lineMode = copyLine ? e.text : false;\n return e.text;\n };\n Editor.prototype.onCopy = function () {\n this.commands.exec(\"copy\", this);\n };\n Editor.prototype.onCut = function () {\n this.commands.exec(\"cut\", this);\n };\n Editor.prototype.onPaste = function (text, event) {\n var e = { text: text, event: event };\n this.commands.exec(\"paste\", this, e);\n };\n Editor.prototype.$handlePaste = function (e) {\n if (typeof e == \"string\")\n e = { text: e };\n this._signal(\"paste\", e);\n var text = e.text;\n var lineMode = text === clipboard.lineMode;\n var session = this.session;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n if (lineMode)\n session.insert({ row: this.selection.lead.row, column: 0 }, text);\n else\n this.insert(text);\n }\n else if (lineMode) {\n this.selection.rangeList.ranges.forEach(function (range) {\n session.insert({ row: range.start.row, column: 0 }, text);\n });\n }\n else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]);\n if (lines.length != ranges.length || isFullLine)\n return this.commands.exec(\"insertstring\", this, text);\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n session.remove(range);\n session.insert(range.start, lines[i]);\n }\n }\n };\n Editor.prototype.execCommand = function (command, args) {\n return this.commands.exec(command, this, args);\n };\n Editor.prototype.insert = function (text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n if (!this.inVirtualSelectionMode) {\n this.session.mergeUndoDeltas = false;\n this.mergeNextCommand = false;\n }\n }\n text = transform.text;\n }\n }\n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n session.insert(cursor, text);\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1]));\n }\n else { // Transform relative to the current row.\n this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3]));\n }\n }\n if (this.$enableAutoIndent) {\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n session.insert({ row: cursor.row + 1, column: 0 }, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n }\n };\n Editor.prototype.autoIndent = function () {\n var session = this.session;\n var mode = session.getMode();\n var ranges = this.selection.isEmpty()\n ? [new Range(0, 0, session.doc.getLength() - 1, 0)]\n : this.selection.getAllRanges();\n var prevLineState = \"\";\n var prevLine = \"\";\n var lineIndent = \"\";\n var tab = session.getTabString();\n for (var i = 0; i < ranges.length; i++) {\n var startRow = ranges[i].start.row;\n var endRow = ranges[i].end.row;\n for (var row = startRow; row <= endRow; row++) {\n if (row > 0) {\n prevLineState = session.getState(row - 1);\n prevLine = session.getLine(row - 1);\n lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);\n }\n var line = session.getLine(row);\n var currIndent = mode.$getIndent(line);\n if (lineIndent !== currIndent) {\n if (currIndent.length > 0) {\n var range = new Range(row, 0, row, currIndent.length);\n session.remove(range);\n }\n if (lineIndent.length > 0) {\n session.insert({ row: row, column: 0 }, lineIndent);\n }\n }\n mode.autoOutdent(prevLineState, session, row);\n }\n }\n };\n Editor.prototype.onTextInput = function (text, composition) {\n if (!composition)\n return this.keyBinding.onTextInput(text);\n this.startOperation({ command: { name: \"insertstring\" } });\n var applyComposition = this.applyComposition.bind(this, text, composition);\n if (this.selection.rangeCount)\n this.forEachSelection(applyComposition);\n else\n applyComposition();\n this.endOperation();\n };\n Editor.prototype.applyComposition = function (text, composition) {\n if (composition.extendLeft || composition.extendRight) {\n var r = this.selection.getRange();\n r.start.column -= composition.extendLeft;\n r.end.column += composition.extendRight;\n if (r.start.column < 0) {\n r.start.row--;\n r.start.column += this.session.getLine(r.start.row).length + 1;\n }\n this.selection.setRange(r);\n if (!text && !r.isEmpty())\n this.remove();\n }\n if (text || !this.selection.isEmpty())\n this.insert(text, true);\n if (composition.restoreStart || composition.restoreEnd) {\n var r = this.selection.getRange();\n r.start.column -= composition.restoreStart;\n r.end.column -= composition.restoreEnd;\n this.selection.setRange(r);\n }\n };\n Editor.prototype.onCommandKey = function (e, hashId, keyCode) {\n return this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n Editor.prototype.setOverwrite = function (overwrite) {\n this.session.setOverwrite(overwrite);\n };\n Editor.prototype.getOverwrite = function () {\n return this.session.getOverwrite();\n };\n Editor.prototype.toggleOverwrite = function () {\n this.session.toggleOverwrite();\n };\n Editor.prototype.setScrollSpeed = function (speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n Editor.prototype.getScrollSpeed = function () {\n return this.getOption(\"scrollSpeed\");\n };\n Editor.prototype.setDragDelay = function (dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n Editor.prototype.getDragDelay = function () {\n return this.getOption(\"dragDelay\");\n };\n Editor.prototype.setSelectionStyle = function (val) {\n this.setOption(\"selectionStyle\", val);\n };\n Editor.prototype.getSelectionStyle = function () {\n return this.getOption(\"selectionStyle\");\n };\n Editor.prototype.setHighlightActiveLine = function (shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightActiveLine = function () {\n return this.getOption(\"highlightActiveLine\");\n };\n Editor.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n Editor.prototype.setHighlightSelectedWord = function (shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n Editor.prototype.getHighlightSelectedWord = function () {\n return this.$highlightSelectedWord;\n };\n Editor.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n Editor.prototype.getAnimatedScroll = function () {\n return this.renderer.getAnimatedScroll();\n };\n Editor.prototype.setShowInvisibles = function (showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n Editor.prototype.getShowInvisibles = function () {\n return this.renderer.getShowInvisibles();\n };\n Editor.prototype.setDisplayIndentGuides = function (display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n Editor.prototype.getDisplayIndentGuides = function () {\n return this.renderer.getDisplayIndentGuides();\n };\n Editor.prototype.setHighlightIndentGuides = function (highlight) {\n this.renderer.setHighlightIndentGuides(highlight);\n };\n Editor.prototype.getHighlightIndentGuides = function () {\n return this.renderer.getHighlightIndentGuides();\n };\n Editor.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n Editor.prototype.getShowPrintMargin = function () {\n return this.renderer.getShowPrintMargin();\n };\n Editor.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n Editor.prototype.getPrintMarginColumn = function () {\n return this.renderer.getPrintMarginColumn();\n };\n Editor.prototype.setReadOnly = function (readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n Editor.prototype.getReadOnly = function () {\n return this.getOption(\"readOnly\");\n };\n Editor.prototype.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n Editor.prototype.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n Editor.prototype.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n Editor.prototype.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n Editor.prototype.setShowFoldWidgets = function (show) {\n this.setOption(\"showFoldWidgets\", show);\n };\n Editor.prototype.getShowFoldWidgets = function () {\n return this.getOption(\"showFoldWidgets\");\n };\n Editor.prototype.setFadeFoldWidgets = function (fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n Editor.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n Editor.prototype.remove = function (dir) {\n if (this.selection.isEmpty()) {\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.removeWordRight = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeWordLeft = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineStart = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n if (this.selection.isEmpty())\n this.selection.selectLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineEnd = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.splitLine = function () {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n Editor.prototype.setGhostText = function (text, position) {\n this.renderer.setGhostText(text, position);\n };\n Editor.prototype.removeGhostText = function () {\n this.renderer.removeGhostText();\n };\n Editor.prototype.transposeLetters = function () {\n if (!this.selection.isEmpty()) {\n return;\n }\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column - 1);\n range = new Range(cursor.row, column - 1, cursor.row, column + 1);\n }\n else {\n swap = line.charAt(column - 1) + line.charAt(column - 2);\n range = new Range(cursor.row, column - 2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n Editor.prototype.toLowerCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.toUpperCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.indent = function () {\n var session = this.session;\n var range = this.getSelectionRange();\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n }\n else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n Editor.prototype.blockIndent = function () {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n Editor.prototype.blockOutdent = function () {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n Editor.prototype.sortLines = function () {\n var rows = this.$getSelectedRows();\n var session = this.session;\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n lines.sort(function (a, b) {\n if (a.toLowerCase() < b.toLowerCase())\n return -1;\n if (a.toLowerCase() > b.toLowerCase())\n return 1;\n return 0;\n });\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i - rows.first]);\n }\n };\n Editor.prototype.toggleCommentLines = function () {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n Editor.prototype.toggleBlockComment = function () {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n Editor.prototype.getNumberAt = function (row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if (m.index <= column && m.index + m[0].length >= column) {\n var number = {\n value: m[0],\n start: m.index,\n end: m.index + m[0].length\n };\n return number;\n }\n }\n return null;\n };\n Editor.prototype.modifyNumber = function (amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column - 1, row, column);\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n if (fp !== nr.end && column < fp) {\n amount *= Math.pow(10, nr.end - column - 1);\n }\n else {\n amount *= Math.pow(10, nr.end - column);\n }\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length));\n }\n }\n else {\n this.toggleWord();\n }\n };\n Editor.prototype.toggleWord = function () {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n this.selection.selectWord();\n var currentState = this.getSelectedText();\n var currWordStart = this.selection.getWordRange().start.column;\n var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\\s/);\n var delta = column - currWordStart - 1;\n if (delta < 0)\n delta = 0;\n var curLength = 0, itLength = 0;\n var that = this;\n if (currentState.match(/[A-Za-z0-9_]+/)) {\n wordParts.forEach(function (item, i) {\n itLength = curLength + item.length;\n if (delta >= curLength && delta <= itLength) {\n currentState = item;\n that.selection.clearSelection();\n that.moveCursorTo(row, curLength + currWordStart);\n that.selection.selectTo(row, itLength + currWordStart);\n }\n curLength = itLength;\n });\n }\n var wordPairs = this.$toggleWordPairs;\n var reg;\n for (var i = 0; i < wordPairs.length; i++) {\n var item = wordPairs[i];\n for (var j = 0; j <= 1; j++) {\n var negate = +!j;\n var firstCondition = currentState.match(new RegExp('^\\\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\\\s?$', 'i'));\n if (firstCondition) {\n var secondCondition = currentState.match(new RegExp('([_]|^|\\\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\\\s)', 'g'));\n if (secondCondition) {\n reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) {\n var res = item[negate];\n if (result.toUpperCase() == result) {\n res = res.toUpperCase();\n }\n else if (result.charAt(0).toUpperCase() == result.charAt(0)) {\n res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1);\n }\n return res;\n });\n this.insert(reg);\n reg = \"\";\n }\n }\n }\n }\n };\n Editor.prototype.findLinkAt = function (row, column) {\n var e_1, _a;\n var line = this.session.getLine(row);\n var wordParts = line.split(/((?:https?|ftp):\\/\\/[\\S]+)/);\n var columnPosition = column;\n if (columnPosition < 0)\n columnPosition = 0;\n var previousPosition = 0, currentPosition = 0, match;\n try {\n for (var wordParts_1 = __values(wordParts), wordParts_1_1 = wordParts_1.next(); !wordParts_1_1.done; wordParts_1_1 = wordParts_1.next()) {\n var item = wordParts_1_1.value;\n currentPosition = previousPosition + item.length;\n if (columnPosition >= previousPosition && columnPosition <= currentPosition) {\n if (item.match(/((?:https?|ftp):\\/\\/[\\S]+)/)) {\n match = item.replace(/[\\s:.,'\";}\\]]+$/, \"\");\n break;\n }\n }\n previousPosition = currentPosition;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (wordParts_1_1 && !wordParts_1_1.done && (_a = wordParts_1.return)) _a.call(wordParts_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return match;\n };\n Editor.prototype.openLink = function () {\n var cursor = this.selection.getCursor();\n var url = this.findLinkAt(cursor.row, cursor.column);\n if (url)\n window.open(url, '_blank');\n return url != null;\n };\n Editor.prototype.removeLines = function () {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n Editor.prototype.duplicateSelection = function () {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n }\n else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range));\n range.start = point;\n range.end = endPoint;\n sel.setSelectionRange(range, reverse);\n }\n };\n Editor.prototype.moveLinesDown = function () {\n this.$moveLines(1, false);\n };\n Editor.prototype.moveLinesUp = function () {\n this.$moveLines(-1, false);\n };\n Editor.prototype.moveText = function (range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n Editor.prototype.copyLinesUp = function () {\n this.$moveLines(-1, true);\n };\n Editor.prototype.copyLinesDown = function () {\n this.$moveLines(1, true);\n };\n Editor.prototype.$moveLines = function (dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1)\n moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n }\n else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff)\n ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1)\n rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy)\n diff = 0;\n totalDiff += diff;\n }\n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n Editor.prototype.$getSelectedRows = function (range) {\n range = (range || this.getSelectionRange()).collapseRows();\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n Editor.prototype.onCompositionStart = function (compositionState) {\n this.renderer.showComposition(compositionState);\n };\n Editor.prototype.onCompositionUpdate = function (text) {\n this.renderer.setCompositionText(text);\n };\n Editor.prototype.onCompositionEnd = function () {\n this.renderer.hideComposition();\n };\n Editor.prototype.getFirstVisibleRow = function () {\n return this.renderer.getFirstVisibleRow();\n };\n Editor.prototype.getLastVisibleRow = function () {\n return this.renderer.getLastVisibleRow();\n };\n Editor.prototype.isRowVisible = function (row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n Editor.prototype.isRowFullyVisible = function (row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n Editor.prototype.$getVisibleRowCount = function () {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n Editor.prototype.$moveByPage = function (dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n if (select === true) {\n this.selection.$moveSelection(function () {\n this.moveCursorBy(rows, 0);\n });\n }\n else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n var scrollTop = renderer.scrollTop;\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.selectPageDown = function () {\n this.$moveByPage(1, true);\n };\n Editor.prototype.selectPageUp = function () {\n this.$moveByPage(-1, true);\n };\n Editor.prototype.gotoPageDown = function () {\n this.$moveByPage(1, false);\n };\n Editor.prototype.gotoPageUp = function () {\n this.$moveByPage(-1, false);\n };\n Editor.prototype.scrollPageDown = function () {\n this.$moveByPage(1);\n };\n Editor.prototype.scrollPageUp = function () {\n this.$moveByPage(-1);\n };\n Editor.prototype.scrollToRow = function (row) {\n this.renderer.scrollToRow(row);\n };\n Editor.prototype.scrollToLine = function (line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n Editor.prototype.centerSelection = function () {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n Editor.prototype.getCursorPosition = function () {\n return this.selection.getCursor();\n };\n Editor.prototype.getCursorPositionScreen = function () {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n Editor.prototype.getSelectionRange = function () {\n return this.selection.getRange();\n };\n Editor.prototype.selectAll = function () {\n this.selection.selectAll();\n };\n Editor.prototype.clearSelection = function () {\n this.selection.clearSelection();\n };\n Editor.prototype.moveCursorTo = function (row, column) {\n this.selection.moveCursorTo(row, column);\n };\n Editor.prototype.moveCursorToPosition = function (pos) {\n this.selection.moveCursorToPosition(pos);\n };\n Editor.prototype.jumpToMatching = function (select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var tokenCount = 0;\n if (prevToken && prevToken.type.indexOf('tag-name') !== -1) {\n prevToken = iterator.stepBackward();\n }\n var token = prevToken || iterator.stepForward();\n if (!token)\n return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n if (prevToken.value === '<' && tokenCount > 1) {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if (this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n this.selection.setSelectionRange(selection);\n return replaced;\n };\n Editor.prototype.$tryReplace = function (range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n }\n else {\n return null;\n }\n };\n Editor.prototype.getLastSearchOptions = function () {\n return this.$search.getOptions();\n };\n Editor.prototype.find = function (needle, options, animate) {\n if (!options)\n options = {};\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({ needle: needle });\n }\n this.$search.set(options);\n if (!options.start)\n this.$search.set({ start: range });\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n Editor.prototype.findNext = function (options, animate) {\n this.find({ skipCurrent: true, backwards: false }, options, animate);\n };\n Editor.prototype.findPrevious = function (options, animate) {\n this.find(options, { skipCurrent: true, backwards: true }, animate);\n };\n Editor.prototype.revealRange = function (range, animate) {\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.undo = function () {\n this.session.getUndoManager().undo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.redo = function () {\n this.session.getUndoManager().redo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.destroy = function () {\n if (this.$toDestroy) {\n this.$toDestroy.forEach(function (el) {\n el.destroy();\n });\n this.$toDestroy = null;\n }\n if (this.$mouseHandler)\n this.$mouseHandler.destroy();\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session)\n this.session.destroy();\n if (this._$emitInputEvent)\n this._$emitInputEvent.cancel();\n this.removeAllListeners();\n };\n Editor.prototype.setAutoScrollEditorIntoView = function (enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function () {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function () {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function () {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n }\n else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n }\n else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function (enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n Editor.prototype.$resetCursorStyle = function () {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n Editor.prototype.prompt = function (message, options, callback) {\n var editor = this;\n config.loadModule(\"ace/ext/prompt\", function (module) {\n module.prompt(editor, message, options, callback);\n });\n };\n return Editor;\n}());\nEditor.$uid = 0;\nEditor.prototype.curOp = null;\nEditor.prototype.prevOp = {};\nEditor.prototype.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\nEditor.prototype.$toggleWordPairs = [\n [\"first\", \"last\"],\n [\"true\", \"false\"],\n [\"yes\", \"no\"],\n [\"width\", \"height\"],\n [\"top\", \"bottom\"],\n [\"right\", \"left\"],\n [\"on\", \"off\"],\n [\"x\", \"y\"],\n [\"get\", \"set\"],\n [\"max\", \"min\"],\n [\"horizontal\", \"vertical\"],\n [\"show\", \"hide\"],\n [\"add\", \"remove\"],\n [\"up\", \"down\"],\n [\"before\", \"after\"],\n [\"even\", \"odd\"],\n [\"in\", \"out\"],\n [\"inside\", \"outside\"],\n [\"next\", \"previous\"],\n [\"increase\", \"decrease\"],\n [\"attach\", \"detach\"],\n [\"&&\", \"||\"],\n [\"==\", \"!=\"]\n];\noop.implement(Editor.prototype, EventEmitter);\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function (style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", { data: style });\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function () { this.$updateHighlightActiveLine(); },\n initialValue: true\n },\n highlightSelectedWord: {\n set: function (shouldHighlight) { this.$onSelectionChange(); },\n initialValue: true\n },\n readOnly: {\n set: function (readOnly) {\n this.textInput.setReadOnly(readOnly);\n this.$resetCursorStyle();\n },\n initialValue: false\n },\n copyWithEmptySelection: {\n set: function (value) {\n this.textInput.setCopyWithEmptySelection(value);\n },\n initialValue: false\n },\n cursorStyle: {\n set: function (val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: { initialValue: true },\n wrapBehavioursEnabled: { initialValue: true },\n enableAutoIndent: { initialValue: true },\n autoScrollEditorIntoView: {\n set: function (val) { this.setAutoScrollEditorIntoView(val); }\n },\n keyboardHandler: {\n set: function (val) { this.setKeyboardHandler(val); },\n get: function () { return this.$keybindingId; },\n handlesSet: true\n },\n value: {\n set: function (val) { this.session.setValue(val); },\n get: function () { return this.getValue(); },\n handlesSet: true,\n hidden: true\n },\n session: {\n set: function (val) { this.setSession(val); },\n get: function () { return this.session; },\n handlesSet: true,\n hidden: true\n },\n showLineNumbers: {\n set: function (show) {\n this.renderer.$gutterLayer.setShowLineNumbers(show);\n this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);\n if (show && this.$relativeLineNumbers)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n },\n initialValue: true\n },\n relativeLineNumbers: {\n set: function (value) {\n if (this.$showLineNumbers && value)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n }\n },\n placeholder: {\n set: function (message) {\n if (!this.$updatePlaceholder) {\n this.$updatePlaceholder = function () {\n var hasValue = this.session && (this.renderer.$composition ||\n this.session.getLength() > 1 || this.session.getLine(0).length > 0);\n if (hasValue && this.renderer.placeholderNode) {\n this.renderer.off(\"afterRender\", this.$updatePlaceholder);\n dom.removeCssClass(this.container, \"ace_hasPlaceholder\");\n this.renderer.placeholderNode.remove();\n this.renderer.placeholderNode = null;\n }\n else if (!hasValue && !this.renderer.placeholderNode) {\n this.renderer.on(\"afterRender\", this.$updatePlaceholder);\n dom.addCssClass(this.container, \"ace_hasPlaceholder\");\n var el = dom.createElement(\"div\");\n el.className = \"ace_placeholder\";\n el.textContent = this.$placeholder || \"\";\n this.renderer.placeholderNode = el;\n this.renderer.content.appendChild(this.renderer.placeholderNode);\n }\n else if (!hasValue && this.renderer.placeholderNode) {\n this.renderer.placeholderNode.textContent = this.$placeholder || \"\";\n }\n }.bind(this);\n this.on(\"input\", this.$updatePlaceholder);\n }\n this.$updatePlaceholder();\n }\n },\n enableKeyboardAccessibility: {\n set: function (value) {\n var blurCommand = {\n name: \"blurTextInput\",\n description: \"Set focus to the editor content div to allow tabbing through the page\",\n bindKey: \"Esc\",\n exec: function (editor) {\n editor.blur();\n editor.renderer.scroller.focus();\n },\n readOnly: true\n };\n var focusOnEnterKeyup = function (e) {\n if (e.target == this.renderer.scroller && e.keyCode === keys['enter']) {\n e.preventDefault();\n var row = this.getCursorPosition().row;\n if (!this.isRowVisible(row))\n this.scrollToLine(row, true, true);\n this.focus();\n }\n };\n var gutterKeyboardHandler;\n if (value) {\n this.renderer.enableKeyboardAccessibility = true;\n this.renderer.keyboardFocusClassName = \"ace_keyboard-focus\";\n this.textInput.getElement().setAttribute(\"tabindex\", -1);\n this.textInput.setNumberOfExtraLines(useragent.isWin ? 3 : 0);\n this.renderer.scroller.setAttribute(\"tabindex\", 0);\n this.renderer.scroller.setAttribute(\"role\", \"group\");\n this.renderer.scroller.setAttribute(\"aria-roledescription\", nls(\"editor.scroller.aria-roledescription\", \"editor\"));\n this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.setAttribute(\"aria-label\", nls(\"editor.scroller.aria-label\", \"Editor content, press Enter to start editing, press Escape to exit\"));\n this.renderer.scroller.addEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.addCommand(blurCommand);\n this.renderer.$gutter.setAttribute(\"tabindex\", 0);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", false);\n this.renderer.$gutter.setAttribute(\"role\", \"group\");\n this.renderer.$gutter.setAttribute(\"aria-roledescription\", nls(\"editor.gutter.aria-roledescription\", \"editor\"));\n this.renderer.$gutter.setAttribute(\"aria-label\", nls(\"editor.gutter.aria-label\", \"Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit\"));\n this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.content.setAttribute(\"aria-hidden\", true);\n if (!gutterKeyboardHandler)\n gutterKeyboardHandler = new GutterKeyboardHandler(this);\n gutterKeyboardHandler.addListener();\n this.textInput.setAriaOptions({\n setLabel: true\n });\n }\n else {\n this.renderer.enableKeyboardAccessibility = false;\n this.textInput.getElement().setAttribute(\"tabindex\", 0);\n this.textInput.setNumberOfExtraLines(0);\n this.renderer.scroller.setAttribute(\"tabindex\", -1);\n this.renderer.scroller.removeAttribute(\"role\");\n this.renderer.scroller.removeAttribute(\"aria-roledescription\");\n this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.removeAttribute(\"aria-label\");\n this.renderer.scroller.removeEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.removeCommand(blurCommand);\n this.renderer.content.removeAttribute(\"aria-hidden\");\n this.renderer.$gutter.setAttribute(\"tabindex\", -1);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", true);\n this.renderer.$gutter.removeAttribute(\"role\");\n this.renderer.$gutter.removeAttribute(\"aria-roledescription\");\n this.renderer.$gutter.removeAttribute(\"aria-label\");\n this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName);\n if (gutterKeyboardHandler)\n gutterKeyboardHandler.removeListener();\n }\n },\n initialValue: false\n },\n textInputAriaLabel: {\n set: function (val) { this.$textInputAriaLabel = val; },\n initialValue: \"\"\n },\n enableMobileMenu: {\n set: function (val) { this.$enableMobileMenu = val; },\n initialValue: true\n },\n customScrollbar: \"renderer\",\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n displayIndentGuides: \"renderer\",\n highlightIndentGuides: \"renderer\",\n showGutter: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n hasCssTransforms: \"renderer\",\n maxPixelHeight: \"renderer\",\n useTextareaForIME: \"renderer\",\n useResizeObserver: \"renderer\",\n useSvgGutterIcons: \"renderer\",\n showFoldedAnnotations: \"renderer\",\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimeout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n navigateWithinSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\nvar relativeNumberRenderer = {\n getText: function (/**@type{EditSession}*/ session, /**@type{number}*/ row) {\n return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? \"\\xb7\" : \"\"))) + \"\";\n },\n getWidth: function (session, /**@type{number}*/ lastLineNumber, config) {\n return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth;\n },\n update: function (e, /**@type{Editor}*/ editor) {\n editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);\n },\n attach: function (/**@type{Editor}*/ editor) {\n editor.renderer.$gutterLayer.$renderer = this;\n editor.on(\"changeSelection\", this.update);\n this.update(null, editor);\n },\n detach: function (/**@type{Editor}*/ editor) {\n if (editor.renderer.$gutterLayer.$renderer == this)\n editor.renderer.$gutterLayer.$renderer = null;\n editor.off(\"changeSelection\", this.update);\n this.update(null, editor);\n }\n};\nexports.Editor = Editor;\n\n});\n\nace.define(\"ace/layer/lines\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Lines = /** @class */ (function () {\n function Lines(element, canvasHeight) {\n this.element = element;\n this.canvasHeight = canvasHeight || 500000;\n this.element.style.height = (this.canvasHeight * 2) + \"px\";\n this.cells = [];\n this.cellCache = [];\n this.$offsetCoefficient = 0;\n }\n Lines.prototype.moveContainer = function (config) {\n dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);\n };\n Lines.prototype.pageChanged = function (oldConfig, newConfig) {\n return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==\n Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight));\n };\n Lines.prototype.computeLineTop = function (row, config, session) {\n var screenTop = config.firstRowScreen * config.lineHeight;\n var screenPage = Math.floor(screenTop / this.canvasHeight);\n var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;\n return lineTop - (screenPage * this.canvasHeight);\n };\n Lines.prototype.computeLineHeight = function (row, config, session) {\n return config.lineHeight * session.getRowLineCount(row);\n };\n Lines.prototype.getLength = function () {\n return this.cells.length;\n };\n Lines.prototype.get = function (index) {\n return this.cells[index];\n };\n Lines.prototype.shift = function () {\n this.$cacheCell(this.cells.shift());\n };\n Lines.prototype.pop = function () {\n this.$cacheCell(this.cells.pop());\n };\n Lines.prototype.push = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.push.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n this.element.appendChild(fragment);\n }\n else {\n this.cells.push(cell);\n this.element.appendChild(cell.element);\n }\n };\n Lines.prototype.unshift = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.unshift.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n if (this.element.firstChild)\n this.element.insertBefore(fragment, this.element.firstChild);\n else\n this.element.appendChild(fragment);\n }\n else {\n this.cells.unshift(cell);\n this.element.insertAdjacentElement(\"afterbegin\", cell.element);\n }\n };\n Lines.prototype.last = function () {\n if (this.cells.length)\n return this.cells[this.cells.length - 1];\n else\n return null;\n };\n Lines.prototype.$cacheCell = function (cell) {\n if (!cell)\n return;\n cell.element.remove();\n this.cellCache.push(cell);\n };\n Lines.prototype.createCell = function (row, config, session, initElement) {\n var cell = this.cellCache.pop();\n if (!cell) {\n var element = dom.createElement(\"div\");\n if (initElement)\n initElement(element);\n this.element.appendChild(element);\n cell = {\n element: element,\n text: \"\",\n row: row\n };\n }\n cell.row = row;\n return cell;\n };\n return Lines;\n}());\nexports.Lines = Lines;\n\n});\n\nace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/layer/lines\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Lines = require(\"./lines\").Lines;\nvar nls = require(\"../config\").nls;\nvar Gutter = /** @class */ (function () {\n function Gutter(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_gutter-layer\";\n parentEl.appendChild(this.element);\n this.setShowFoldWidgets(this.$showFoldWidgets);\n this.gutterWidth = 0;\n this.$annotations = [];\n this.$updateAnnotations = this.$updateAnnotations.bind(this);\n this.$lines = new Lines(this.element);\n this.$lines.$offsetCoefficient = 1;\n }\n Gutter.prototype.setSession = function (session) {\n if (this.session)\n this.session.off(\"change\", this.$updateAnnotations);\n this.session = session;\n if (session)\n session.on(\"change\", this.$updateAnnotations);\n };\n Gutter.prototype.addGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\n this.session.addGutterDecoration(row, className);\n };\n Gutter.prototype.removeGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\n this.session.removeGutterDecoration(row, className);\n };\n Gutter.prototype.setAnnotations = function (annotations) {\n this.$annotations = [];\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[i];\n var row = annotation.row;\n var rowInfo = this.$annotations[row];\n if (!rowInfo)\n rowInfo = this.$annotations[row] = { text: [], type: [], displayText: [] };\n var annoText = annotation.text;\n var displayAnnoText = annotation.text;\n var annoType = annotation.type;\n annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\n displayAnnoText = displayAnnoText ? displayAnnoText : annotation.html || \"\";\n if (rowInfo.text.indexOf(annoText) === -1) {\n rowInfo.text.push(annoText);\n rowInfo.type.push(annoType);\n rowInfo.displayText.push(displayAnnoText);\n }\n var className = annotation.className;\n if (className) {\n rowInfo.className = className;\n }\n else if (annoType === \"error\") {\n rowInfo.className = \" ace_error\";\n }\n else if (annoType === \"security\" && !/\\bace_error\\b/.test(rowInfo.className)) {\n rowInfo.className = \" ace_security\";\n }\n else if (annoType === \"warning\" && !/\\bace_(error|security)\\b/.test(rowInfo.className)) {\n rowInfo.className = \" ace_warning\";\n }\n else if (annoType === \"info\" && !rowInfo.className) {\n rowInfo.className = \" ace_info\";\n }\n else if (annoType === \"hint\" && !rowInfo.className) {\n rowInfo.className = \" ace_hint\";\n }\n }\n };\n Gutter.prototype.$updateAnnotations = function (delta) {\n if (!this.$annotations.length)\n return;\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n }\n else if (delta.action == 'remove') {\n this.$annotations.splice(firstRow, len + 1, null);\n }\n else {\n var args = new Array(len + 1);\n args.unshift(firstRow, 1);\n this.$annotations.splice.apply(this.$annotations, args);\n }\n };\n Gutter.prototype.update = function (config) {\n this.config = config;\n var session = this.session;\n var firstRow = config.firstRow;\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n session.getLength() - 1);\n this.oldLastRow = lastRow;\n this.config = config;\n this.$lines.moveContainer(config);\n this.$updateCursorRow();\n var fold = session.getNextFoldLine(firstRow);\n var foldStart = fold ? fold.start.row : Infinity;\n var cell = null;\n var index = -1;\n var row = firstRow;\n while (true) {\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$lines.getLength() > index + 1)\n this.$lines.pop();\n break;\n }\n cell = this.$lines.get(++index);\n if (cell) {\n cell.row = row;\n }\n else {\n cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$lines.push(cell);\n }\n this.$renderCell(cell, config, fold, row);\n row++;\n }\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$updateGutterWidth = function (config) {\n var session = this.session;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var firstLineNumber = session.$firstLineNumber;\n var lastLineText = this.$lines.last() ? this.$lines.last().text : \"\";\n if (this.$fixedWidth || session.$useWrapMode)\n lastLineText = session.getLength() + firstLineNumber - 1;\n var gutterWidth = gutterRenderer\n ? gutterRenderer.getWidth(session, lastLineText, config)\n : lastLineText.toString().length * config.characterWidth;\n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth; (this.element.parentNode).style.width =\n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._signal(\"changeGutterWidth\", gutterWidth);\n }\n };\n Gutter.prototype.$updateCursorRow = function () {\n if (!this.$highlightGutterLine)\n return;\n var position = this.session.selection.getCursor();\n if (this.$cursorRow === position.row)\n return;\n this.$cursorRow = position.row;\n };\n Gutter.prototype.updateLineHighlight = function () {\n if (!this.$highlightGutterLine)\n return;\n var row = this.session.selection.cursor.row;\n this.$cursorRow = row;\n if (this.$cursorCell && this.$cursorCell.row == row)\n return;\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n var cells = this.$lines.cells;\n this.$cursorCell = null;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.row >= this.$cursorRow) {\n if (cell.row > this.$cursorRow) {\n var fold = this.session.getFoldLine(this.$cursorRow);\n if (i > 0 && fold && fold.start.row == cells[i - 1].row)\n cell = cells[i - 1];\n else\n break;\n }\n cell.element.className = \"ace_gutter-active-line \" + cell.element.className;\n this.$cursorCell = cell;\n break;\n }\n }\n };\n Gutter.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n this.$updateCursorRow();\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n this.session.getLength() - 1);\n var oldLastRow = this.oldLastRow;\n this.oldLastRow = lastRow;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldLastRow > lastRow)\n for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (lastRow > oldLastRow) {\n this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));\n }\n this.updateLineHighlight();\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$renderLines = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$renderCell(cell, config, foldLine, row);\n fragment.push(cell);\n row++;\n }\n return fragment;\n };\n Gutter.prototype.$renderCell = function (cell, config, fold, row) {\n var element = cell.element;\n var session = this.session;\n var textNode = element.childNodes[0];\n var foldWidget = element.childNodes[1];\n var annotationNode = element.childNodes[2];\n var annotationIconNode = annotationNode.firstChild;\n var firstLineNumber = session.$firstLineNumber;\n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var foldStart = fold ? fold.start.row : Number.MAX_VALUE;\n var lineHeight = config.lineHeight + \"px\";\n var className = this.$useSvgGutterIcons ? \"ace_gutter-cell_svg-icons \" : \"ace_gutter-cell \";\n var iconClassName = this.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n var rowText = (gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber).toString();\n if (this.$highlightGutterLine) {\n if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {\n className += \"ace_gutter-active-line \";\n if (this.$cursorCell != cell) {\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n this.$cursorCell = cell;\n }\n }\n }\n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row] && row !== foldStart)\n className += this.$annotations[row].className;\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n if (c) {\n var foldClass = \"ace_fold-widget ace_\" + c;\n var isClosedFold = c == \"start\" && row == foldStart && row < fold.end.row;\n if (isClosedFold) {\n foldClass += \" ace_closed\";\n var foldAnnotationClass = \"\";\n var annotationInFold = false;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!this.$annotations[i])\n continue;\n if (this.$annotations[i].className === \" ace_error\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_error_fold\";\n break;\n }\n if (this.$annotations[i].className === \" ace_security\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_security_fold\";\n }\n else if (this.$annotations[i].className === \" ace_warning\" &&\n foldAnnotationClass !== \" ace_security_fold\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_warning_fold\";\n }\n }\n className += foldAnnotationClass;\n }\n else\n foldClass += \" ace_open\";\n if (foldWidget.className != foldClass)\n foldWidget.className = foldClass;\n dom.setStyle(foldWidget.style, \"height\", lineHeight);\n dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n foldWidget.setAttribute(\"role\", \"button\");\n foldWidget.setAttribute(\"tabindex\", \"-1\");\n var foldRange = session.getFoldWidgetRange(row);\n if (foldRange)\n foldWidget.setAttribute(\"aria-label\", nls(\"gutter.code-folding.range.aria-label\", \"Toggle code folding, rows $0 through $1\", [\n foldRange.start.row + 1,\n foldRange.end.row + 1\n ]));\n else {\n if (fold)\n foldWidget.setAttribute(\"aria-label\", nls(\"gutter.code-folding.closed.aria-label\", \"Toggle code folding, rows $0 through $1\", [\n fold.start.row + 1,\n fold.end.row + 1\n ]));\n else\n foldWidget.setAttribute(\"aria-label\", nls(\"gutter.code-folding.open.aria-label\", \"Toggle code folding, row $0\", [row + 1]));\n }\n if (isClosedFold) {\n foldWidget.setAttribute(\"aria-expanded\", \"false\");\n foldWidget.setAttribute(\"title\", nls(\"gutter.code-folding.closed.title\", \"Unfold code\"));\n }\n else {\n foldWidget.setAttribute(\"aria-expanded\", \"true\");\n foldWidget.setAttribute(\"title\", nls(\"gutter.code-folding.open.title\", \"Fold code\"));\n }\n }\n else {\n if (foldWidget) {\n dom.setStyle(foldWidget.style, \"display\", \"none\");\n foldWidget.setAttribute(\"tabindex\", \"0\");\n foldWidget.removeAttribute(\"role\");\n foldWidget.removeAttribute(\"aria-label\");\n }\n }\n if (annotationInFold && this.$showFoldedAnnotations) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n annotationIconNode.className += foldAnnotationClass;\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n var ariaLabel;\n switch (foldAnnotationClass) {\n case \" ace_error_fold\":\n ariaLabel = nls(\"gutter.annotation.aria-label.error\", \"Error, read annotations row $0\", [rowText]);\n break;\n case \" ace_security_fold\":\n ariaLabel = nls(\"gutter.annotation.aria-label.security\", \"Security finding, read annotations row $0\", [rowText]);\n break;\n case \" ace_warning_fold\":\n ariaLabel = nls(\"gutter.annotation.aria-label.warning\", \"Warning, read annotations row $0\", [rowText]);\n break;\n }\n annotationNode.setAttribute(\"aria-label\", ariaLabel);\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else if (this.$annotations[row]) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n if (this.$useSvgGutterIcons)\n annotationIconNode.className += this.$annotations[row].className;\n else\n element.classList.add(this.$annotations[row].className.replace(\" \", \"\"));\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n var ariaLabel;\n switch (this.$annotations[row].className) {\n case \" ace_error\":\n ariaLabel = nls(\"gutter.annotation.aria-label.error\", \"Error, read annotations row $0\", [rowText]);\n break;\n case \" ace_security\":\n ariaLabel = nls(\"gutter.annotation.aria-label.security\", \"Security finding, read annotations row $0\", [rowText]);\n break;\n case \" ace_warning\":\n ariaLabel = nls(\"gutter.annotation.aria-label.warning\", \"Warning, read annotations row $0\", [rowText]);\n break;\n case \" ace_info\":\n ariaLabel = nls(\"gutter.annotation.aria-label.info\", \"Info, read annotations row $0\", [rowText]);\n break;\n case \" ace_hint\":\n ariaLabel = nls(\"gutter.annotation.aria-label.hint\", \"Suggestion, read annotations row $0\", [rowText]);\n break;\n }\n annotationNode.setAttribute(\"aria-label\", ariaLabel);\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else {\n dom.setStyle(annotationNode.style, \"display\", \"none\");\n annotationNode.removeAttribute(\"aria-label\");\n annotationNode.removeAttribute(\"role\");\n annotationNode.setAttribute(\"tabindex\", \"0\");\n }\n if (rowText !== textNode.data) {\n textNode.data = rowText;\n }\n if (element.className != className)\n element.className = className;\n dom.setStyle(cell.element.style, \"height\", this.$lines.computeLineHeight(row, config, session) + \"px\");\n dom.setStyle(cell.element.style, \"top\", this.$lines.computeLineTop(row, config, session) + \"px\");\n cell.text = rowText;\n if (annotationNode.style.display === \"none\" && foldWidget.style.display === \"none\")\n cell.element.setAttribute(\"aria-hidden\", true);\n else\n cell.element.setAttribute(\"aria-hidden\", false);\n return cell;\n };\n Gutter.prototype.setHighlightGutterLine = function (highlightGutterLine) {\n this.$highlightGutterLine = highlightGutterLine;\n };\n Gutter.prototype.setShowLineNumbers = function (show) {\n this.$renderer = !show && {\n getWidth: function () { return 0; },\n getText: function () { return \"\"; }\n };\n };\n Gutter.prototype.getShowLineNumbers = function () {\n return this.$showLineNumbers;\n };\n Gutter.prototype.setShowFoldWidgets = function (show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n Gutter.prototype.getShowFoldWidgets = function () {\n return this.$showFoldWidgets;\n };\n Gutter.prototype.$computePadding = function () {\n if (!this.element.firstChild)\n return { left: 0, right: 0 };\n var style = dom.computedStyle(/**@type{Element}*/ (this.element.firstChild));\n this.$padding = {};\n this.$padding.left = (parseInt(style.borderLeftWidth) || 0)\n + (parseInt(style.paddingLeft) || 0) + 1;\n this.$padding.right = (parseInt(style.borderRightWidth) || 0)\n + (parseInt(style.paddingRight) || 0);\n return this.$padding;\n };\n Gutter.prototype.getRegion = function (point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n return Gutter;\n}());\nGutter.prototype.$fixedWidth = false;\nGutter.prototype.$highlightGutterLine = true;\nGutter.prototype.$renderer = \"\";\nGutter.prototype.$showLineNumbers = true;\nGutter.prototype.$showFoldWidgets = true;\noop.implement(Gutter.prototype, EventEmitter);\nfunction onCreateCell(element) {\n var textNode = document.createTextNode('');\n element.appendChild(textNode);\n var foldWidget = dom.createElement(\"span\");\n element.appendChild(foldWidget);\n var annotationNode = dom.createElement(\"span\");\n element.appendChild(annotationNode);\n var annotationIconNode = dom.createElement(\"span\");\n annotationNode.appendChild(annotationIconNode);\n return element;\n}\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\nvar Marker = /** @class */ (function () {\n function Marker(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n }\n Marker.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Marker.prototype.setSession = function (session) {\n this.session = session;\n };\n Marker.prototype.setMarkers = function (markers) {\n this.markers = markers;\n };\n Marker.prototype.elt = function (className, css) {\n var x = this.i != -1 && this.element.childNodes[this.i];\n if (!x) {\n x = document.createElement(\"div\");\n this.element.appendChild(x);\n this.i = -1;\n }\n else {\n this.i++;\n }\n x.style.cssText = css;\n x.className = className;\n };\n Marker.prototype.update = function (config) {\n if (!config)\n return;\n this.config = config;\n this.i = 0;\n var html;\n for (var key in this.markers) {\n var marker = this.markers[key];\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty())\n continue;\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n marker.renderer(html, range, left, top, config);\n }\n else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n }\n else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n }\n else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n }\n else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n if (this.i != -1) {\n while (this.i < this.element.childElementCount)\n this.element.removeChild(this.element.lastChild);\n }\n };\n Marker.prototype.$getTop = function (row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n Marker.prototype.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0;\n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle);\n }\n };\n Marker.prototype.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height = config.lineHeight;\n var top = this.$getTop(range.start.row, config);\n var left = padding + range.start.column * config.characterWidth;\n extraStyle = extraStyle || \"\";\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n }\n else {\n this.elt(clazz + \" ace_br1 ace_start\", \"height:\" + height + \"px;\" + \"right:\" + padding + \"px;\" + \"top:\" + top + \"px;left:\" + left + \"px;\" + (extraStyle || \"\"));\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n }\n else {\n top = this.$getTop(range.end.row, config);\n var width = range.end.column * config.characterWidth;\n this.elt(clazz + \" ace_br12\", \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n this.elt(clazz + (radiusClass ? \" ace_br\" + radiusClass : \"\"), \"height:\" + height + \"px;\" +\n \"right:\" + padding + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n if (this.session.$bidiHandler.isBidiRow(range.start.row))\n return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle);\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + left + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n selections.forEach(function (selection) {\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + (selection.width + (extraLength || 0)) + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + (padding + selection.left) + \"px;\" + (extraStyle || \"\"));\n }, this);\n };\n Marker.prototype.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n return Marker;\n}());\nMarker.prototype.$padding = 0;\nfunction getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n}\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text_util\",[\"require\",\"exports\",\"module\"], function(require, exports, module){// Tokens for which Ace just uses a simple TextNode and does not add any special className.\nvar textTokens = new Set([\"text\", \"rparen\", \"lparen\"]);\nexports.isTextToken = function (tokenType) {\n return textTokens.has(tokenType);\n};\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/layer/lines\",\"ace/lib/event_emitter\",\"ace/config\",\"ace/layer/text_util\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar Lines = require(\"./lines\").Lines;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar nls = require(\"../config\").nls;\nvar isTextToken = require(\"./text_util\").isTextToken;\nvar Text = /** @class */ (function () {\n function Text(parentEl) {\n this.dom = dom;\n this.element = this.dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n this.$lines = new Lines(this.element);\n }\n Text.prototype.$updateEolChar = function () {\n var doc = this.session.doc;\n var unixMode = doc.getNewLineCharacter() == \"\\n\" && doc.getNewLineMode() != \"windows\";\n var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n Text.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.element.style.margin = \"0 \" + padding + \"px\";\n };\n Text.prototype.getLineHeight = function () {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n Text.prototype.getCharacterWidth = function () {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n Text.prototype.$setFontMetrics = function (measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", \n function (e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n Text.prototype.checkForSizeChanges = function () {\n this.$fontMetrics.checkForSizeChanges();\n };\n Text.prototype.$pollSizeChanges = function () {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n Text.prototype.setSession = function (session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n Text.prototype.setShowInvisibles = function (showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n this.showInvisibles = showInvisibles;\n if (typeof showInvisibles == \"string\") {\n this.showSpaces = /tab/i.test(showInvisibles);\n this.showTabs = /space/i.test(showInvisibles);\n this.showEOL = /eol/i.test(showInvisibles);\n }\n else {\n this.showSpaces = this.showTabs = this.showEOL = showInvisibles;\n }\n this.$computeTabString();\n return true;\n };\n Text.prototype.setDisplayIndentGuides = function (display) {\n if (this.displayIndentGuides == display)\n return false;\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n Text.prototype.setHighlightIndentGuides = function (highlight) {\n if (this.$highlightIndentGuides === highlight)\n return false;\n this.$highlightIndentGuides = highlight;\n return highlight;\n };\n Text.prototype.$computeTabString = function () {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize; var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showTabs) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_tab\";\n span.textContent = lang.stringRepeat(this.TAB_CHAR, i);\n tabStr.push(span);\n }\n else {\n tabStr.push(this.dom.createTextNode(lang.stringRepeat(\" \", i), this.element));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = this.showSpaces ? \" ace_invisible ace_invisible_space\" : \"\";\n var spaceContent = this.showSpaces\n ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)\n : lang.stringRepeat(\" \", this.tabSize);\n var tabClass = this.showTabs ? \" ace_invisible ace_invisible_tab\" : \"\";\n var tabContent = this.showTabs\n ? lang.stringRepeat(this.TAB_CHAR, this.tabSize)\n : spaceContent;\n var span = this.dom.createElement(\"span\");\n span.className = className + spaceClass;\n span.textContent = spaceContent;\n this.$tabStrings[\" \"] = span;\n var span = this.dom.createElement(\"span\");\n span.className = className + tabClass;\n span.textContent = tabContent;\n this.$tabStrings[\"\\t\"] = span;\n }\n };\n Text.prototype.updateLines = function (config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n return this.update(config);\n }\n this.config = config;\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n }\n else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx++;\n }\n var heightChanged = false;\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > last)\n break; var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n this.dom.removeChildren(lineElement);\n this.$renderLine(lineElement, row, row == foldStart ? foldLine : false);\n if (heightChanged)\n lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + \"px\";\n var height = (config.lineHeight * this.session.getRowLength(row)) + \"px\";\n if (lineElement.style.height != height) {\n heightChanged = true;\n lineElement.style.height = height;\n }\n }\n row++;\n }\n if (heightChanged) {\n while (lineElementsIdx < this.$lines.cells.length) {\n var cell = this.$lines.cells[lineElementsIdx++];\n cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + \"px\";\n }\n }\n };\n Text.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = config.lastRow;\n var oldLastRow = oldConfig ? oldConfig.lastRow : -1;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldConfig.lastRow > config.lastRow)\n for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (config.lastRow > oldConfig.lastRow) {\n this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));\n }\n this.$highlightIndentGuide();\n };\n Text.prototype.$renderLinesFragment = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var line = this.$lines.createCell(row, config, this.session);\n var lineEl = line.element;\n this.dom.removeChildren(lineEl);\n dom.setStyle(lineEl.style, \"height\", this.$lines.computeLineHeight(row, config, this.session) + \"px\");\n dom.setStyle(lineEl.style, \"top\", this.$lines.computeLineTop(row, config, this.session) + \"px\");\n this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);\n if (this.$useLineGroups()) {\n lineEl.className = \"ace_line_group\";\n }\n else {\n lineEl.className = \"ace_line\";\n }\n fragment.push(line);\n row++;\n }\n return fragment;\n };\n Text.prototype.update = function (config) {\n this.$lines.moveContainer(config);\n this.config = config;\n var firstRow = config.firstRow;\n var lastRow = config.lastRow;\n var lines = this.$lines;\n while (lines.getLength())\n lines.pop();\n lines.push(this.$renderLinesFragment(config, firstRow, lastRow));\n };\n Text.prototype.$renderToken = function (parent, screenColumn, token, value) {\n var self = this;\n var re = /(\\t)|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\uFEFF\\uFFF9-\\uFFFC\\u2066\\u2067\\u2068\\u202A\\u202B\\u202D\\u202E\\u202C\\u2069\\u2060\\u2061\\u2062\\u2063\\u2064\\u206A\\u206B\\u206B\\u206C\\u206D\\u206E\\u206F]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n var valueFragment = this.dom.createFragment(this.element);\n var m;\n var i = 0;\n while (m = re.exec(value)) {\n var tab = m[1];\n var simpleSpace = m[2];\n var controlCharacter = m[3];\n var cjkSpace = m[4];\n var cjk = m[5];\n if (!self.showSpaces && simpleSpace)\n continue;\n var before = i != m.index ? value.slice(i, m.index) : \"\";\n i = m.index + m[0].length;\n if (before) {\n valueFragment.appendChild(this.dom.createTextNode(before, this.element));\n }\n if (tab) {\n var tabSize = self.session.getScreenTabSize(screenColumn + m.index);\n valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));\n screenColumn += tabSize - 1;\n }\n else if (simpleSpace) {\n if (self.showSpaces) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);\n valueFragment.appendChild(span);\n }\n else {\n valueFragment.appendChild(this.dom.createTextNode(simpleSpace, this.element));\n }\n }\n else if (controlCharacter) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space ace_invalid\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length);\n valueFragment.appendChild(span);\n }\n else if (cjkSpace) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = self.showSpaces ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;\n valueFragment.appendChild(span);\n }\n else if (cjk) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = \"ace_cjk\";\n span.textContent = cjk;\n valueFragment.appendChild(span);\n }\n }\n valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element));\n if (!isTextToken(token.type)) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var span = this.dom.createElement(\"span\");\n if (token.type == \"fold\") {\n span.style.width = (token.value.length * this.config.characterWidth) + \"px\";\n span.setAttribute(\"title\", nls(\"inline-fold.closed.title\", \"Unfold code\"));\n }\n span.className = classes;\n span.appendChild(valueFragment);\n parent.appendChild(span);\n }\n else {\n parent.appendChild(valueFragment);\n }\n return screenColumn + value.length;\n };\n Text.prototype.renderIndentGuide = function (parent, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n var count = cols / this.tabSize;\n for (var i = 0; i < count; i++) {\n parent.appendChild(this.$tabStrings[\" \"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n else if (value[0] == \"\\t\") {\n for (var i = 0; i < cols; i++) {\n parent.appendChild(this.$tabStrings[\"\\t\"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n this.$highlightIndentGuide();\n return value;\n };\n Text.prototype.$highlightIndentGuide = function () {\n if (!this.$highlightIndentGuides || !this.displayIndentGuides)\n return;\n this.$highlightIndentGuideMarker = {\n indentLevel: undefined,\n start: undefined,\n end: undefined,\n dir: undefined\n };\n var lines = this.session.doc.$lines;\n if (!lines)\n return;\n var cursor = this.session.selection.getCursor();\n var initialIndent = /^\\s*/.exec(this.session.doc.getLine(cursor.row))[0].length;\n var elementIndentLevel = Math.floor(initialIndent / this.tabSize);\n this.$highlightIndentGuideMarker = {\n indentLevel: elementIndentLevel,\n start: cursor.row\n };\n var bracketHighlight = this.session.$bracketHighlight;\n if (bracketHighlight) {\n var ranges = this.session.$bracketHighlight.ranges;\n for (var i = 0; i < ranges.length; i++) {\n if (cursor.row !== ranges[i].start.row) {\n this.$highlightIndentGuideMarker.end = ranges[i].start.row;\n if (cursor.row > ranges[i].start.row) {\n this.$highlightIndentGuideMarker.dir = -1;\n }\n else {\n this.$highlightIndentGuideMarker.dir = 1;\n }\n break;\n }\n }\n }\n if (!this.$highlightIndentGuideMarker.end) {\n if (lines[cursor.row] !== '' && cursor.column === lines[cursor.row].length) {\n this.$highlightIndentGuideMarker.dir = 1;\n for (var i = cursor.row + 1; i < lines.length; i++) {\n var line = lines[i];\n var currentIndent = /^\\s*/.exec(line)[0].length;\n if (line !== '') {\n this.$highlightIndentGuideMarker.end = i;\n if (currentIndent <= initialIndent)\n break;\n }\n }\n }\n }\n this.$renderHighlightIndentGuide();\n };\n Text.prototype.$clearActiveIndentGuide = function () {\n var cells = this.$lines.cells;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n var childNodes = cell.element.childNodes;\n if (childNodes.length > 0) {\n for (var j = 0; j < childNodes.length; j++) {\n if (childNodes[j].classList && childNodes[j].classList.contains(\"ace_indent-guide-active\")) {\n childNodes[j].classList.remove(\"ace_indent-guide-active\");\n break;\n }\n }\n }\n }\n };\n Text.prototype.$setIndentGuideActive = function (cell, indentLevel) {\n var line = this.session.doc.getLine(cell.row);\n if (line !== \"\") {\n var childNodes = cell.element.childNodes;\n if (childNodes) {\n var node = childNodes[indentLevel - 1];\n if (node && node.classList && node.classList.contains(\"ace_indent-guide\"))\n node.classList.add(\"ace_indent-guide-active\");\n }\n }\n };\n Text.prototype.$renderHighlightIndentGuide = function () {\n if (!this.$lines)\n return;\n var cells = this.$lines.cells;\n this.$clearActiveIndentGuide();\n var indentLevel = this.$highlightIndentGuideMarker.indentLevel;\n if (indentLevel !== 0) {\n if (this.$highlightIndentGuideMarker.dir === 1) {\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row >= this.$highlightIndentGuideMarker.start\n + 1) {\n if (cell.row >= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n else {\n for (var i = cells.length - 1; i >= 0; i--) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row < this.$highlightIndentGuideMarker.start) {\n if (cell.row <= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n }\n };\n Text.prototype.$createLineElement = function (parent) {\n var lineEl = this.dom.createElement(\"div\");\n lineEl.className = \"ace_line\";\n lineEl.style.height = this.config.lineHeight + \"px\";\n return lineEl;\n };\n Text.prototype.$renderWrappedLine = function (parent, tokens, splits) {\n var chars = 0;\n var split = 0;\n var splitChars = splits[0];\n var screenColumn = 0;\n var lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n chars = value.length;\n value = this.renderIndentGuide(lineEl, value, splitChars);\n if (!value)\n continue;\n chars -= value.length;\n }\n if (chars + value.length < splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n chars += value.length;\n }\n else {\n while (chars + value.length >= splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars));\n value = value.substring(splitChars - chars);\n chars = splitChars;\n lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element));\n split++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n }\n }\n }\n if (splits[splits.length - 1] > this.MAX_LINE_LENGTH)\n this.$renderOverflowMessage(lineEl, screenColumn, null, \"\", true);\n };\n Text.prototype.$renderSimpleLine = function (parent, tokens) {\n var screenColumn = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n value = this.renderIndentGuide(parent, value);\n if (!value)\n continue;\n }\n if (screenColumn + value.length > this.MAX_LINE_LENGTH)\n return this.$renderOverflowMessage(parent, screenColumn, token, value);\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n }\n };\n Text.prototype.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) {\n token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn));\n var overflowEl = this.dom.createElement(\"span\");\n overflowEl.className = \"ace_inline_button ace_keyword ace_toggle_wrap\";\n overflowEl.textContent = hide ? \"\" : \"\";\n parent.appendChild(overflowEl);\n };\n Text.prototype.$renderLine = function (parent, row, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n var lastLineEl = parent;\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length) {\n this.$renderWrappedLine(parent, tokens, splits);\n var lastLineEl = parent.lastChild;\n }\n else {\n var lastLineEl = parent;\n if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n this.$renderSimpleLine(lastLineEl, tokens);\n }\n }\n else if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n if (this.showEOL && lastLineEl) {\n if (foldLine)\n row = foldLine.end.row;\n var invisibleEl = this.dom.createElement(\"span\");\n invisibleEl.className = \"ace_invisible ace_invisible_eol\";\n invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR;\n lastLineEl.appendChild(invisibleEl);\n }\n };\n Text.prototype.$getFoldLineTokens = function (row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n col = from + value.length;\n idx += 1;\n }\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n }\n else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n var tokens = session.getTokens(row);\n foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n }\n else {\n if (isNewRow)\n tokens = session.getTokens(row);\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n return renderTokens;\n };\n Text.prototype.$useLineGroups = function () {\n return this.session.getUseWrapMode();\n };\n return Text;\n}());\nText.prototype.EOF_CHAR = \"\\xB6\";\nText.prototype.EOL_CHAR_LF = \"\\xAC\";\nText.prototype.EOL_CHAR_CRLF = \"\\xa4\";\nText.prototype.EOL_CHAR = Text.prototype.EOL_CHAR_LF;\nText.prototype.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\nText.prototype.SPACE_CHAR = \"\\xB7\";\nText.prototype.$padding = 0;\nText.prototype.MAX_LINE_LENGTH = 10000;\nText.prototype.showInvisibles = false;\nText.prototype.showSpaces = false;\nText.prototype.showTabs = false;\nText.prototype.showEOL = false;\nText.prototype.displayIndentGuides = true;\nText.prototype.$highlightIndentGuides = true;\nText.prototype.$tabStrings = [];\nText.prototype.destroy = {};\nText.prototype.onChangeTabSize = Text.prototype.$computeTabString;\noop.implement(Text.prototype, EventEmitter);\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Cursor = /** @class */ (function () {\n function Cursor(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = this.$updateOpacity.bind(this);\n }\n Cursor.prototype.$updateOpacity = function (val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n dom.setStyle(cursors[i].style, \"opacity\", val ? \"\" : \"0\");\n };\n Cursor.prototype.$startCssAnimation = function () {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n cursors[i].style.animationDuration = this.blinkInterval + \"ms\";\n this.$isAnimating = true;\n setTimeout(function () {\n if (this.$isAnimating) {\n dom.addCssClass(this.element, \"ace_animate-blinking\");\n }\n }.bind(this));\n };\n Cursor.prototype.$stopCssAnimation = function () {\n this.$isAnimating = false;\n dom.removeCssClass(this.element, \"ace_animate-blinking\");\n };\n Cursor.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Cursor.prototype.setSession = function (session) {\n this.session = session;\n };\n Cursor.prototype.setBlinking = function (blinking) {\n if (blinking != this.isBlinking) {\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n Cursor.prototype.setBlinkInterval = function (blinkInterval) {\n if (blinkInterval != this.blinkInterval) {\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n Cursor.prototype.setSmoothBlinking = function (smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.restartTimer();\n }\n };\n Cursor.prototype.addCursor = function () {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n Cursor.prototype.removeCursor = function () {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n Cursor.prototype.hideCursor = function () {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.showCursor = function () {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.restartTimer = function () {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n this.$stopCssAnimation();\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = false;\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n update(true);\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible) {\n this.$stopCssAnimation();\n return;\n }\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = true;\n setTimeout(function () {\n if (this.$isSmoothBlinking) {\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }\n }.bind(this));\n }\n if (dom.HAS_CSS_ANIMATION) {\n this.$startCssAnimation();\n }\n else {\n var blink = /**@this{Cursor}*/ function () {\n this.timeoutId = setTimeout(function () {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n this.intervalId = setInterval(function () {\n update(true);\n blink();\n }, this.blinkInterval);\n blink();\n }\n };\n Cursor.prototype.getPixelPosition = function (position, onScreen) {\n if (!this.config || !this.session)\n return { left: 0, top: 0 };\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n return { left: cursorLeft, top: cursorTop };\n };\n Cursor.prototype.isCursorInView = function (pixelPos, config) {\n return pixelPos.top >= 0 && pixelPos.top < config.maxHeight;\n };\n Cursor.prototype.update = function (config) {\n this.config = config;\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n if (selections === undefined || selections.length === 0) {\n selections = [{ cursor: null }];\n }\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n var element = this.cursors[cursorIndex++] || this.addCursor();\n var style = element.style;\n if (!this.drawCursor) {\n if (!this.isCursorInView(pixelPos, config)) {\n dom.setStyle(style, \"display\", \"none\");\n }\n else {\n dom.setStyle(style, \"display\", \"block\");\n dom.translate(element, pixelPos.left, pixelPos.top);\n dom.setStyle(style, \"width\", Math.round(config.characterWidth) + \"px\");\n dom.setStyle(style, \"height\", config.lineHeight + \"px\");\n }\n }\n else {\n this.drawCursor(element, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n Cursor.prototype.$setOverwrite = function (overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n Cursor.prototype.destroy = function () {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n return Cursor;\n}());\nCursor.prototype.$padding = 0;\nCursor.prototype.drawCursor = null;\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar Scrollbar = /** @class */ (function () {\n function Scrollbar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.inner.textContent = \"\\xa0\";\n this.element.appendChild(this.inner);\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n }\n Scrollbar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return Scrollbar;\n}());\noop.implement(Scrollbar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n renderer.$scrollbarWidth =\n _this.width = dom.scrollbarWidth(parent.ownerDocument);\n _this.inner.style.width =\n _this.element.style.width = (_this.width || 15) + 5 + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n this.skipEvent = false;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.element.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollHeight = function (height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n }\n else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n return VScrollBar;\n}(Scrollbar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.height = renderer.$scrollbarWidth;\n _this.inner.style.height =\n _this.element.style.height = (_this.height || 15) + 5 + \"px\";\n return _this;\n }\n HScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n this.skipEvent = false;\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.element.style.width = width + \"px\";\n };\n HScrollBar.prototype.setInnerWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n return HScrollBar;\n}(Scrollbar));\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/scrollbar_custom\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\ndom.importCssString(\".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\\n position: absolute;\\n background: rgba(128, 128, 128, 0.6);\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n border: 1px solid #bbb;\\n border-radius: 2px;\\n z-index: 8;\\n}\\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\\n position: absolute;\\n z-index: 6;\\n background: none;\\n overflow: hidden!important;\\n}\\n.ace_editor>.ace_sb-v {\\n z-index: 6;\\n right: 0;\\n top: 0;\\n width: 12px;\\n}\\n.ace_editor>.ace_sb-v div {\\n z-index: 8;\\n right: 0;\\n width: 100%;\\n}\\n.ace_editor>.ace_sb-h {\\n bottom: 0;\\n left: 0;\\n height: 12px;\\n}\\n.ace_editor>.ace_sb-h div {\\n bottom: 0;\\n height: 100%;\\n}\\n.ace_editor>.ace_sb_grabbed {\\n z-index: 8;\\n background: #000;\\n}\", \"ace_scrollbar.css\", false);\nvar ScrollBar = /** @class */ (function () {\n function ScrollBar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_sb\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"\";\n this.element.appendChild(this.inner);\n this.VScrollWidth = 12;\n this.HScrollHeight = 12;\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addMultiMouseDownListener(this.element, [500, 300, 300], this, \"onMouseDown\");\n }\n ScrollBar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return ScrollBar;\n}());\noop.implement(ScrollBar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n _this.parent = parent;\n _this.width = _this.VScrollWidth;\n _this.renderer = renderer;\n _this.inner.style.width = _this.element.style.width = (_this.width || 15) + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageY = e.clientY;\n var onMouseMove = function (e) {\n mousePageY = e.clientY;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startY = e.clientY;\n var startTop = this.thumbTop;\n var onScrollInterval = function () {\n if (mousePageY === undefined)\n return;\n var scrollTop = self.scrollTopFromThumbTop(startTop + mousePageY - startY);\n if (scrollTop === self.scrollTop)\n return;\n self._emit(\"scroll\", { data: scrollTop });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var top = e.clientY - this.element.getBoundingClientRect().top - this.thumbHeight / 2;\n this._emit(\"scroll\", { data: this.scrollTopFromThumbTop(top) });\n return event.preventDefault(e);\n };\n VScrollBar.prototype.getHeight = function () {\n return this.height;\n };\n VScrollBar.prototype.scrollTopFromThumbTop = function (thumbTop) {\n var scrollTop = thumbTop * (this.pageHeight - this.viewHeight) / (this.slideHeight - this.thumbHeight);\n scrollTop = scrollTop >> 0;\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n else if (scrollTop > this.pageHeight - this.viewHeight) {\n scrollTop = this.pageHeight - this.viewHeight;\n }\n return scrollTop;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.height = Math.max(0, height);\n this.slideHeight = this.height;\n this.viewHeight = this.height;\n this.setScrollHeight(this.pageHeight, true);\n };\n VScrollBar.prototype.setScrollHeight = function (height, force) {\n if (this.pageHeight === height && !force)\n return;\n this.pageHeight = height;\n this.thumbHeight = this.slideHeight * this.viewHeight / this.pageHeight;\n if (this.thumbHeight > this.slideHeight)\n this.thumbHeight = this.slideHeight;\n if (this.thumbHeight < 15)\n this.thumbHeight = 15;\n this.inner.style.height = this.thumbHeight + \"px\";\n if (this.scrollTop > (this.pageHeight - this.viewHeight)) {\n this.scrollTop = (this.pageHeight - this.viewHeight);\n if (this.scrollTop < 0)\n this.scrollTop = 0;\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n this.scrollTop = scrollTop;\n if (scrollTop < 0)\n scrollTop = 0;\n this.thumbTop = scrollTop * (this.slideHeight - this.thumbHeight) / (this.pageHeight - this.viewHeight);\n this.inner.style.top = this.thumbTop + \"px\";\n };\n return VScrollBar;\n}(ScrollBar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.scrollWidth = 0;\n _this.height = _this.HScrollHeight;\n _this.inner.style.height = _this.element.style.height = (_this.height || 12) + \"px\";\n _this.renderer = renderer;\n return _this;\n }\n HScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageX = e.clientX;\n var onMouseMove = function (e) {\n mousePageX = e.clientX;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startX = e.clientX;\n var startLeft = this.thumbLeft;\n var onScrollInterval = function () {\n if (mousePageX === undefined)\n return;\n var scrollLeft = self.scrollLeftFromThumbLeft(startLeft + mousePageX - startX);\n if (scrollLeft === self.scrollLeft)\n return;\n self._emit(\"scroll\", { data: scrollLeft });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var left = e.clientX - this.element.getBoundingClientRect().left - this.thumbWidth / 2;\n this._emit(\"scroll\", { data: this.scrollLeftFromThumbLeft(left) });\n return event.preventDefault(e);\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.scrollLeftFromThumbLeft = function (thumbLeft) {\n var scrollLeft = thumbLeft * (this.pageWidth - this.viewWidth) / (this.slideWidth - this.thumbWidth);\n scrollLeft = scrollLeft >> 0;\n if (scrollLeft < 0) {\n scrollLeft = 0;\n }\n else if (scrollLeft > this.pageWidth - this.viewWidth) {\n scrollLeft = this.pageWidth - this.viewWidth;\n }\n return scrollLeft;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.width = Math.max(0, width);\n this.element.style.width = this.width + \"px\";\n this.slideWidth = this.width;\n this.viewWidth = this.width;\n this.setScrollWidth(this.pageWidth, true);\n };\n HScrollBar.prototype.setScrollWidth = function (width, force) {\n if (this.pageWidth === width && !force)\n return;\n this.pageWidth = width;\n this.thumbWidth = this.slideWidth * this.viewWidth / this.pageWidth;\n if (this.thumbWidth > this.slideWidth)\n this.thumbWidth = this.slideWidth;\n if (this.thumbWidth < 15)\n this.thumbWidth = 15;\n this.inner.style.width = this.thumbWidth + \"px\";\n if (this.scrollLeft > (this.pageWidth - this.viewWidth)) {\n this.scrollLeft = (this.pageWidth - this.viewWidth);\n if (this.scrollLeft < 0)\n this.scrollLeft = 0;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n this.scrollLeft = scrollLeft;\n if (scrollLeft < 0)\n scrollLeft = 0;\n this.thumbLeft = scrollLeft * (this.slideWidth - this.thumbWidth) / (this.pageWidth - this.viewWidth);\n this.inner.style.left = (this.thumbLeft) + \"px\";\n };\n return HScrollBar;\n}(ScrollBar));\nHScrollBar.prototype.setInnerWidth = HScrollBar.prototype.setScrollWidth;\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar event = require(\"./lib/event\");\nvar RenderLoop = /** @class */ (function () {\n function RenderLoop(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.$recursionLimit = 2;\n this.window = win || window;\n var _self = this;\n this._flush = function (ts) {\n _self.pending = false;\n var changes = _self.changes;\n if (changes) {\n event.blockIdle(100);\n _self.changes = 0;\n _self.onRender(changes);\n }\n if (_self.changes) {\n if (_self.$recursionLimit-- < 0)\n return;\n _self.schedule();\n }\n else {\n _self.$recursionLimit = 2;\n }\n };\n }\n RenderLoop.prototype.schedule = function (change) {\n this.changes = this.changes | change;\n if (this.changes && !this.pending) {\n event.nextFrame(this._flush);\n this.pending = true;\n }\n };\n RenderLoop.prototype.clear = function (change) {\n var changes = this.changes;\n this.changes = 0;\n return changes;\n };\n return RenderLoop;\n}());\nexports.RenderLoop = RenderLoop;\n\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CHAR_COUNT = 512;\nvar USE_OBSERVER = typeof ResizeObserver == \"function\";\nvar L = 200;\nvar FontMetrics = /** @class */ (function () {\n function FontMetrics(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n this.$measureNode.textContent = lang.stringRepeat(\"X\", CHAR_COUNT);\n this.$characterSize = { width: 0, height: 0 };\n if (USE_OBSERVER)\n this.$addObserver();\n else\n this.checkForSizeChanges();\n }\n FontMetrics.prototype.$setMeasureNodeStyles = function (style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n }\n else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n FontMetrics.prototype.checkForSizeChanges = function (size) {\n if (size === undefined)\n size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", { data: size });\n }\n };\n FontMetrics.prototype.$addObserver = function () {\n var self = this;\n this.$observer = new window.ResizeObserver(function (e) {\n self.checkForSizeChanges();\n });\n this.$observer.observe(this.$measureNode);\n };\n FontMetrics.prototype.$pollSizeChanges = function () {\n if (this.$pollSizeChangesTimer || this.$observer)\n return this.$pollSizeChangesTimer;\n var self = this;\n return this.$pollSizeChangesTimer = event.onIdle(function cb() {\n self.checkForSizeChanges();\n event.onIdle(cb, 500);\n }, 500);\n };\n FontMetrics.prototype.setPolling = function (val) {\n if (val) {\n this.$pollSizeChanges();\n }\n else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n FontMetrics.prototype.$measureSizes = function (node) {\n var size = {\n height: (node || this.$measureNode).clientHeight,\n width: (node || this.$measureNode).clientWidth / CHAR_COUNT\n };\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n FontMetrics.prototype.$measureCharWidth = function (ch) {\n this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n FontMetrics.prototype.getCharacterWidth = function (ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n FontMetrics.prototype.destroy = function () {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$observer)\n this.$observer.disconnect();\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n FontMetrics.prototype.$getZoom = function (element) {\n if (!element || !element.parentElement)\n return 1;\n return (Number(window.getComputedStyle(element)[\"zoom\"]) || 1) * this.$getZoom(element.parentElement);\n };\n FontMetrics.prototype.$initTransformMeasureNodes = function () {\n var t = function (t, l) {\n return [\"div\", {\n style: \"position: absolute;top:\" + t + \"px;left:\" + l + \"px;\"\n }];\n };\n this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el);\n };\n FontMetrics.prototype.transformCoordinates = function (clientPos, elPos) {\n if (clientPos) {\n var zoom = this.$getZoom(this.el);\n clientPos = mul(1 / zoom, clientPos);\n }\n function solve(l1, l2, r) {\n var det = l1[1] * l2[0] - l1[0] * l2[1];\n return [\n (-l2[1] * r[0] + l2[0] * r[1]) / det,\n (+l1[1] * r[0] - l1[0] * r[1]) / det\n ];\n }\n function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }\n function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }\n function mul(a, b) { return [a * b[0], a * b[1]]; }\n if (!this.els)\n this.$initTransformMeasureNodes();\n function p(el) {\n var r = el.getBoundingClientRect();\n return [r.left, r.top];\n }\n var a = p(this.els[0]);\n var b = p(this.els[1]);\n var c = p(this.els[2]);\n var d = p(this.els[3]);\n var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a)));\n var m1 = mul(1 + h[0], sub(b, a));\n var m2 = mul(1 + h[1], sub(c, a));\n if (elPos) {\n var x = elPos;\n var k = h[0] * x[0] / L + h[1] * x[1] / L + 1;\n var ut = add(mul(x[0], m1), mul(x[1], m2));\n return add(mul(1 / k / L, ut), a);\n }\n var u = sub(clientPos, a);\n var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u);\n return mul(L, f);\n };\n return FontMetrics;\n}());\nFontMetrics.prototype.$characterSize = { width: 0, height: 0 };\noop.implement(FontMetrics.prototype, EventEmitter);\nexports.FontMetrics = FontMetrics;\n\n});\n\nace.define(\"ace/css/editor-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){/*\nstyles = []\nfor (var i = 1; i < 16; i++) {\n styles.push(\".ace_br\" + i + \"{\" + (\n [\"top-left\", \"top-right\", \"bottom-right\", \"bottom-left\"]\n ).map(function(x, j) {\n return i & (1< .ace_line, .ace_text-layer > .ace_line_group {\\n contain: style size layout;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n}\\n\\n.ace_hidpi .ace_text-layer,\\n.ace_hidpi .ace_gutter-layer,\\n.ace_hidpi .ace_content,\\n.ace_hidpi .ace_gutter {\\n contain: strict;\\n}\\n.ace_hidpi .ace_text-layer > .ace_line, \\n.ace_hidpi .ace_text-layer > .ace_line_group {\\n contain: strict;\\n}\\n\\n.ace_cjk {\\n display: inline-block;\\n text-align: center;\\n}\\n\\n.ace_cursor-layer {\\n z-index: 4;\\n}\\n\\n.ace_cursor {\\n z-index: 4;\\n position: absolute;\\n box-sizing: border-box;\\n border-left: 2px solid;\\n /* workaround for smooth cursor repaintng whole screen in chrome */\\n transform: translatez(0);\\n}\\n\\n.ace_multiselect .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_slim-cursors .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_overwrite-cursors .ace_cursor {\\n border-left-width: 0;\\n border-bottom: 1px solid;\\n}\\n\\n.ace_hidden-cursors .ace_cursor {\\n opacity: 0.2;\\n}\\n\\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\\n opacity: 0;\\n}\\n\\n.ace_smooth-blinking .ace_cursor {\\n transition: opacity 0.18s;\\n}\\n\\n.ace_animate-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: step-end;\\n animation-name: blink-ace-animate;\\n animation-iteration-count: infinite;\\n}\\n\\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: ease-in-out;\\n animation-name: blink-ace-animate-smooth;\\n}\\n \\n@keyframes blink-ace-animate {\\n from, to { opacity: 1; }\\n 60% { opacity: 0; }\\n}\\n\\n@keyframes blink-ace-animate-smooth {\\n from, to { opacity: 1; }\\n 45% { opacity: 1; }\\n 60% { opacity: 0; }\\n 85% { opacity: 0; }\\n}\\n\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\n position: absolute;\\n z-index: 3;\\n}\\n\\n.ace_marker-layer .ace_selection {\\n position: absolute;\\n z-index: 5;\\n}\\n\\n.ace_marker-layer .ace_bracket {\\n position: absolute;\\n z-index: 6;\\n}\\n\\n.ace_marker-layer .ace_error_bracket {\\n position: absolute;\\n border-bottom: 1px solid #DE5555;\\n border-radius: 0;\\n}\\n\\n.ace_marker-layer .ace_active-line {\\n position: absolute;\\n z-index: 2;\\n}\\n\\n.ace_marker-layer .ace_selected-word {\\n position: absolute;\\n z-index: 4;\\n box-sizing: border-box;\\n}\\n\\n.ace_line .ace_fold {\\n box-sizing: border-box;\\n\\n display: inline-block;\\n height: 11px;\\n margin-top: -2px;\\n vertical-align: middle;\\n\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\n background-repeat: no-repeat, repeat-x;\\n background-position: center center, top left;\\n color: transparent;\\n\\n border: 1px solid black;\\n border-radius: 2px;\\n\\n cursor: pointer;\\n pointer-events: auto;\\n}\\n\\n.ace_dark .ace_fold {\\n}\\n\\n.ace_fold:hover{\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\n}\\n\\n.ace_tooltip {\\n background-color: #f5f5f5;\\n border: 1px solid gray;\\n border-radius: 1px;\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\n color: black;\\n max-width: 100%;\\n padding: 3px 4px;\\n position: fixed;\\n z-index: 999999;\\n box-sizing: border-box;\\n cursor: default;\\n white-space: pre-wrap;\\n word-wrap: break-word;\\n line-height: normal;\\n font-style: normal;\\n font-weight: normal;\\n letter-spacing: normal;\\n pointer-events: none;\\n overflow: auto;\\n max-width: min(60em, 66vw);\\n overscroll-behavior: contain;\\n}\\n.ace_tooltip pre {\\n white-space: pre-wrap;\\n}\\n\\n.ace_tooltip.ace_dark {\\n background-color: #636363;\\n color: #fff;\\n}\\n\\n.ace_tooltip:focus {\\n outline: 1px solid #5E9ED6;\\n}\\n\\n.ace_icon {\\n display: inline-block;\\n width: 18px;\\n vertical-align: top;\\n}\\n\\n.ace_icon_svg {\\n display: inline-block;\\n width: 12px;\\n vertical-align: top;\\n -webkit-mask-repeat: no-repeat;\\n -webkit-mask-size: 12px;\\n -webkit-mask-position: center;\\n}\\n\\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\\n padding-right: 13px;\\n}\\n\\n.ace_fold-widget {\\n box-sizing: border-box;\\n\\n margin: 0 -12px 0 1px;\\n display: none;\\n width: 11px;\\n vertical-align: top;\\n\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\n background-repeat: no-repeat;\\n background-position: center;\\n\\n border-radius: 3px;\\n \\n border: 1px solid transparent;\\n cursor: pointer;\\n}\\n\\n.ace_folding-enabled .ace_fold-widget {\\n display: inline-block; \\n}\\n\\n.ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\n}\\n\\n.ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\n}\\n\\n.ace_fold-widget:hover {\\n border: 1px solid rgba(0, 0, 0, 0.3);\\n background-color: rgba(255, 255, 255, 0.2);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\n}\\n\\n.ace_fold-widget:active {\\n border: 1px solid rgba(0, 0, 0, 0.4);\\n background-color: rgba(0, 0, 0, 0.05);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\n}\\n/**\\n * Dark version for fold widgets\\n */\\n.ace_dark .ace_fold-widget {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget:hover {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.ace_dark .ace_fold-widget:active {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n}\\n\\n.ace_inline_button {\\n border: 1px solid lightgray;\\n display: inline-block;\\n margin: -1px 8px;\\n padding: 0 5px;\\n pointer-events: auto;\\n cursor: pointer;\\n}\\n.ace_inline_button:hover {\\n border-color: gray;\\n background: rgba(200,200,200,0.2);\\n display: inline-block;\\n pointer-events: auto;\\n}\\n\\n.ace_fold-widget.ace_invalid {\\n background-color: #FFB4B4;\\n border-color: #DE5555;\\n}\\n\\n.ace_fade-fold-widgets .ace_fold-widget {\\n transition: opacity 0.4s ease 0.05s;\\n opacity: 0;\\n}\\n\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\n transition: opacity 0.05s ease 0.05s;\\n opacity:1;\\n}\\n\\n.ace_underline {\\n text-decoration: underline;\\n}\\n\\n.ace_bold {\\n font-weight: bold;\\n}\\n\\n.ace_nobold .ace_bold {\\n font-weight: normal;\\n}\\n\\n.ace_italic {\\n font-style: italic;\\n}\\n\\n\\n.ace_error-marker {\\n background-color: rgba(255, 0, 0,0.2);\\n position: absolute;\\n z-index: 9;\\n}\\n\\n.ace_highlight-marker {\\n background-color: rgba(255, 255, 0,0.2);\\n position: absolute;\\n z-index: 8;\\n}\\n\\n.ace_mobile-menu {\\n position: absolute;\\n line-height: 1.5;\\n border-radius: 4px;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n user-select: none;\\n background: white;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #dcdcdc;\\n color: black;\\n}\\n.ace_dark > .ace_mobile-menu {\\n background: #333;\\n color: #ccc;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #444;\\n\\n}\\n.ace_mobile-button {\\n padding: 2px;\\n cursor: pointer;\\n overflow: hidden;\\n}\\n.ace_mobile-button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_mobile-button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_placeholder {\\n position: relative;\\n font-family: arial;\\n transform: scale(0.9);\\n transform-origin: left;\\n white-space: pre;\\n opacity: 0.7;\\n margin: 0 10px;\\n z-index: 1;\\n}\\n\\n.ace_ghost_text {\\n opacity: 0.5;\\n font-style: italic;\\n}\\n\\n.ace_ghost_text_container > div {\\n white-space: pre;\\n}\\n\\n.ghost_text_line_wrapped::after {\\n content: \\\"\\u21A9\\\";\\n position: absolute;\\n}\\n\\n.ace_lineWidgetContainer.ace_ghost_text {\\n margin: 0px 4px\\n}\\n\\n.ace_screenreader-only {\\n position:absolute;\\n left:-10000px;\\n top:auto;\\n width:1px;\\n height:1px;\\n overflow:hidden;\\n}\\n\\n.ace_hidden_token {\\n display: none;\\n}\";\n\n});\n\nace.define(\"ace/layer/decorators\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Decorator = /** @class */ (function () {\n function Decorator(parent, renderer) {\n this.canvas = dom.createElement(\"canvas\");\n this.renderer = renderer;\n this.pixelRatio = 1;\n this.maxHeight = renderer.layerConfig.maxHeight;\n this.lineHeight = renderer.layerConfig.lineHeight;\n this.canvasHeight = parent.parent.scrollHeight;\n this.heightRatio = this.canvasHeight / this.maxHeight;\n this.canvasWidth = parent.width;\n this.minDecorationHeight = (2 * this.pixelRatio) | 0;\n this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0;\n this.canvas.width = this.canvasWidth;\n this.canvas.height = this.canvasHeight;\n this.canvas.style.top = 0 + \"px\";\n this.canvas.style.right = 0 + \"px\";\n this.canvas.style.zIndex = 7 + \"px\";\n this.canvas.style.position = \"absolute\";\n this.colors = {};\n this.colors.dark = {\n \"error\": \"rgba(255, 18, 18, 1)\",\n \"warning\": \"rgba(18, 136, 18, 1)\",\n \"info\": \"rgba(18, 18, 136, 1)\"\n };\n this.colors.light = {\n \"error\": \"rgb(255,51,51)\",\n \"warning\": \"rgb(32,133,72)\",\n \"info\": \"rgb(35,68,138)\"\n };\n parent.element.appendChild(this.canvas);\n }\n Decorator.prototype.$updateDecorators = function (config) {\n var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light;\n if (config) {\n this.maxHeight = config.maxHeight;\n this.lineHeight = config.lineHeight;\n this.canvasHeight = config.height;\n var allLineHeight = (config.lastRow + 1) * this.lineHeight;\n if (allLineHeight < this.canvasHeight) {\n this.heightRatio = 1;\n }\n else {\n this.heightRatio = this.canvasHeight / this.maxHeight;\n }\n }\n var ctx = this.canvas.getContext(\"2d\");\n function compare(a, b) {\n if (a.priority < b.priority)\n return -1;\n if (a.priority > b.priority)\n return 1;\n return 0;\n }\n var annotations = this.renderer.session.$annotations;\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n if (annotations) {\n var priorities = {\n \"info\": 1,\n \"warning\": 2,\n \"error\": 3\n };\n annotations.forEach(function (item) {\n item.priority = priorities[item.type] || null;\n });\n annotations = annotations.sort(compare);\n var foldData = this.renderer.session.$foldData;\n for (var i = 0; i < annotations.length; i++) {\n var row = annotations[i].row;\n var compensateFold = this.compensateFoldRows(row, foldData);\n var currentY = Math.round((row - compensateFold) * this.lineHeight * this.heightRatio);\n var y1 = Math.round(((row - compensateFold) * this.lineHeight * this.heightRatio));\n var y2 = Math.round((((row - compensateFold) * this.lineHeight + this.lineHeight) * this.heightRatio));\n var height = y2 - y1;\n if (height < this.minDecorationHeight) {\n var yCenter = ((y1 + y2) / 2) | 0;\n if (yCenter < this.halfMinDecorationHeight) {\n yCenter = this.halfMinDecorationHeight;\n }\n else if (yCenter + this.halfMinDecorationHeight > this.canvasHeight) {\n yCenter = this.canvasHeight - this.halfMinDecorationHeight;\n }\n y1 = Math.round(yCenter - this.halfMinDecorationHeight);\n y2 = Math.round(yCenter + this.halfMinDecorationHeight);\n }\n ctx.fillStyle = colors[annotations[i].type] || null;\n ctx.fillRect(0, currentY, this.canvasWidth, y2 - y1);\n }\n }\n var cursor = this.renderer.session.selection.getCursor();\n if (cursor) {\n var compensateFold = this.compensateFoldRows(cursor.row, foldData);\n var currentY = Math.round((cursor.row - compensateFold) * this.lineHeight * this.heightRatio);\n ctx.fillStyle = \"rgba(0, 0, 0, 0.5)\";\n ctx.fillRect(0, currentY, this.canvasWidth, 2);\n }\n };\n Decorator.prototype.compensateFoldRows = function (row, foldData) {\n var compensateFold = 0;\n if (foldData && foldData.length > 0) {\n for (var j = 0; j < foldData.length; j++) {\n if (row > foldData[j].start.row && row < foldData[j].end.row) {\n compensateFold += row - foldData[j].start.row;\n }\n else if (row >= foldData[j].end.row) {\n compensateFold += foldData[j].end.row - foldData[j].start.row;\n }\n }\n }\n return compensateFold;\n };\n return Decorator;\n}());\noop.implement(Decorator.prototype, EventEmitter);\nexports.Decorator = Decorator;\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/scrollbar_custom\",\"ace/scrollbar_custom\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\",\"ace/css/editor-css\",\"ace/layer/decorators\",\"ace/lib/useragent\",\"ace/layer/text_util\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar config = require(\"./config\");\nvar GutterLayer = require(\"./layer/gutter\").Gutter;\nvar MarkerLayer = require(\"./layer/marker\").Marker;\nvar TextLayer = require(\"./layer/text\").Text;\nvar CursorLayer = require(\"./layer/cursor\").Cursor;\nvar HScrollBar = require(\"./scrollbar\").HScrollBar;\nvar VScrollBar = require(\"./scrollbar\").VScrollBar;\nvar HScrollBarCustom = require(\"./scrollbar_custom\").HScrollBar;\nvar VScrollBarCustom = require(\"./scrollbar_custom\").VScrollBar;\nvar RenderLoop = require(\"./renderloop\").RenderLoop;\nvar FontMetrics = require(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = require(\"./css/editor-css\");\nvar Decorator = require(\"./layer/decorators\").Decorator;\nvar useragent = require(\"./lib/useragent\");\nvar isTextToken = require(\"./layer/text_util\").isTextToken;\ndom.importCssString(editorCss, \"ace_editor.css\", false);\nvar VirtualRenderer = /** @class */ (function () {\n function VirtualRenderer(container, theme) {\n var _self = this;\n this.container = container || dom.createElement(\"div\");\n dom.addCssClass(this.container, \"ace_editor\");\n if (dom.HI_DPI)\n dom.addCssClass(this.container, \"ace_hidpi\");\n this.setTheme(theme);\n if (config.get(\"useStrictCSP\") == null)\n config.set(\"useStrictCSP\", false);\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", \"true\");\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n this.container.appendChild(this.scroller);\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n this.$markerBack = new MarkerLayer(this.content);\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n this.$markerFront = new MarkerLayer(this.content);\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n this.scrollBar =\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.scrollTop = 0;\n this.scrollLeft = 0;\n this.cursorPos = {\n row: 0,\n column: 0\n };\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.on(\"changeCharacterSize\", function (e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n this.layerConfig = {\n width: 1,\n padding: 0,\n firstRow: 0,\n firstRowScreen: 0,\n lastRow: 0,\n lineHeight: 0,\n characterWidth: 0,\n minHeight: 1,\n maxHeight: 1,\n offset: 0,\n height: 1,\n gutterOffset: 1\n };\n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.margin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.$keepTextAreaAtCursor = !useragent.isIOS;\n this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView);\n this.$loop.schedule(this.CHANGE_FULL);\n this.updateCharacterSize();\n this.setPadding(4);\n this.$addResizeObserver();\n config.resetOptions(this);\n config._signal(\"renderer\", this);\n }\n VirtualRenderer.prototype.updateCharacterSize = function () {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n dom.setStyle(this.scroller.style, \"line-height\", this.lineHeight + \"px\");\n };\n VirtualRenderer.prototype.setSession = function (session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n VirtualRenderer.prototype.updateLines = function (firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n VirtualRenderer.prototype.onChangeNewLineMode = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n VirtualRenderer.prototype.onChangeTabSize = function () {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n VirtualRenderer.prototype.updateText = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n VirtualRenderer.prototype.updateFull = function (force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n VirtualRenderer.prototype.updateFontSize = function () {\n this.$textLayer.checkForSizeChanges();\n };\n VirtualRenderer.prototype.$updateSizeAsync = function () {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n VirtualRenderer.prototype.onResize = function (force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!height && this.$maxLines && this.lineHeight > 1) {\n if (!el.style.height || el.style.height == \"0px\") {\n el.style.height = \"1px\";\n height = el.clientHeight || el.scrollHeight;\n }\n }\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n if (this.$resizeTimer)\n this.$resizeTimer.cancel();\n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n if (force)\n this.$gutterLayer.$padding = null;\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n if (this.$customScrollbar) {\n this.$updateCustomScrollbar(true);\n }\n };\n VirtualRenderer.prototype.$updateCachedSize = function (force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.setHeight(size.scrollerHeight);\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n changes = changes | this.CHANGE_SCROLL;\n }\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n this.gutterWidth = gutterWidth;\n dom.setStyle(this.scrollBarH.element.style, \"left\", gutterWidth + \"px\");\n dom.setStyle(this.scroller.style, \"left\", gutterWidth + this.margin.left + \"px\");\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h);\n dom.setStyle(this.$gutter.style, \"left\", this.margin.left + \"px\");\n var right = this.scrollBarV.getWidth() + \"px\";\n dom.setStyle(this.scrollBarH.element.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"bottom\", this.scrollBarH.getHeight());\n this.scrollBarH.setWidth(size.scrollerWidth);\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) {\n changes |= this.CHANGE_FULL;\n }\n }\n size.$dirty = !width || !height;\n if (changes)\n this._signal(\"resize\", oldSize);\n return changes;\n };\n VirtualRenderer.prototype.onGutterResize = function (width) {\n var gutterWidth = this.$showGutter ? width : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else {\n this.$computeLayerConfig();\n }\n };\n VirtualRenderer.prototype.adjustWrapLimit = function () {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n VirtualRenderer.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n VirtualRenderer.prototype.getAnimatedScroll = function () {\n return this.$animatedScroll;\n };\n VirtualRenderer.prototype.setShowInvisibles = function (showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n VirtualRenderer.prototype.getShowInvisibles = function () {\n return this.getOption(\"showInvisibles\");\n };\n VirtualRenderer.prototype.getDisplayIndentGuides = function () {\n return this.getOption(\"displayIndentGuides\");\n };\n VirtualRenderer.prototype.setDisplayIndentGuides = function (display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n VirtualRenderer.prototype.getHighlightIndentGuides = function () {\n return this.getOption(\"highlightIndentGuides\");\n };\n VirtualRenderer.prototype.setHighlightIndentGuides = function (highlight) {\n this.setOption(\"highlightIndentGuides\", highlight);\n };\n VirtualRenderer.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n VirtualRenderer.prototype.getShowPrintMargin = function () {\n return this.getOption(\"showPrintMargin\");\n };\n VirtualRenderer.prototype.setPrintMarginColumn = function (printMarginColumn) {\n this.setOption(\"printMarginColumn\", printMarginColumn);\n };\n VirtualRenderer.prototype.getPrintMarginColumn = function () {\n return this.getOption(\"printMarginColumn\");\n };\n VirtualRenderer.prototype.getShowGutter = function () {\n return this.getOption(\"showGutter\");\n };\n VirtualRenderer.prototype.setShowGutter = function (show) {\n return this.setOption(\"showGutter\", show);\n };\n VirtualRenderer.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n VirtualRenderer.prototype.setFadeFoldWidgets = function (show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n VirtualRenderer.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n VirtualRenderer.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n VirtualRenderer.prototype.$updatePrintMargin = function () {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n var style = this.$printMarginEl.style;\n style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n VirtualRenderer.prototype.getContainerElement = function () {\n return this.container;\n };\n VirtualRenderer.prototype.getMouseEventTarget = function () {\n return this.scroller;\n };\n VirtualRenderer.prototype.getTextAreaContainer = function () {\n return this.container;\n };\n VirtualRenderer.prototype.$moveTextAreaToCursor = function () {\n if (this.$isMousePressed)\n return;\n var style = this.textarea.style;\n var composition = this.$composition;\n if (!this.$keepTextAreaAtCursor && !composition) {\n dom.translate(this.textarea, -100, 0);\n return;\n }\n var pixelPos = this.$cursorLayer.$pixelPos;\n if (!pixelPos)\n return;\n if (composition && composition.markerRange)\n pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true);\n var config = this.layerConfig;\n var posTop = pixelPos.top;\n var posLeft = pixelPos.left;\n posTop -= config.offset;\n var h = composition && composition.useTextareaForIME || useragent.isMobile ? this.lineHeight : 1;\n if (posTop < 0 || posTop > config.height - h) {\n dom.translate(this.textarea, 0, 0);\n return;\n }\n var w = 1;\n var maxTop = this.$size.height - h;\n if (!composition) {\n posTop += this.lineHeight;\n }\n else {\n if (composition.useTextareaForIME) {\n var val = this.textarea.value;\n w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]);\n }\n else {\n posTop += this.lineHeight + 2;\n }\n }\n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n posLeft += this.gutterWidth + this.margin.left;\n dom.setStyle(style, \"height\", h + \"px\");\n dom.setStyle(style, \"width\", w + \"px\");\n dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop));\n };\n VirtualRenderer.prototype.getFirstVisibleRow = function () {\n return this.layerConfig.firstRow;\n };\n VirtualRenderer.prototype.getFirstFullyVisibleRow = function () {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n VirtualRenderer.prototype.getLastFullyVisibleRow = function () {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n VirtualRenderer.prototype.getLastVisibleRow = function () {\n return this.layerConfig.lastRow;\n };\n VirtualRenderer.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n VirtualRenderer.prototype.setScrollMargin = function (top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n VirtualRenderer.prototype.setMargin = function (top, bottom, left, right) {\n var sm = this.margin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height);\n this.updateFull();\n };\n VirtualRenderer.prototype.getHScrollBarAlwaysVisible = function () {\n return this.$hScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setHScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.getVScrollBarAlwaysVisible = function () {\n return this.$vScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setVScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.$updateScrollBarV = function () {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n VirtualRenderer.prototype.$updateScrollBarH = function () {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n VirtualRenderer.prototype.freeze = function () {\n this.$frozen = true;\n };\n VirtualRenderer.prototype.unfreeze = function () {\n this.$frozen = false;\n };\n VirtualRenderer.prototype.$renderChanges = function (changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return;\n }\n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n this._signal(\"beforeRender\", changes);\n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL) {\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - Math.max(this.layerConfig.firstRow, 0)) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n var width = config.width + 2 * this.$padding + \"px\";\n var height = config.minHeight + \"px\";\n dom.setStyle(this.content.style, \"width\", width);\n dom.setStyle(this.content.style, \"height\", height);\n }\n if (changes & this.CHANGE_H_SCROLL) {\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller \" : \"ace_scroller ace_scroll-left \";\n if (this.enableKeyboardAccessibility)\n this.scroller.className += this.keyboardFocusClassName;\n }\n if (changes & this.CHANGE_FULL) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n this.$changedLines = null;\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n if (this.$showGutter) {\n if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES)\n this.$gutterLayer.update(config);\n else\n this.$gutterLayer.scrollLines(config);\n }\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_TEXT) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_CURSOR) {\n if (this.$highlightGutterLine)\n this.$gutterLayer.updateLineHighlight(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n this._signal(\"afterRender\", changes);\n };\n VirtualRenderer.prototype.$autosize = function () {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n var hideScrollbars = desiredHeight <= 2 * this.lineHeight;\n var vScroll = !hideScrollbars && height > maxHeight;\n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n this._signal(\"autosize\");\n }\n };\n VirtualRenderer.prototype.$computeLayerConfig = function () {\n var session = this.session;\n var size = this.$size;\n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n var longestLine = this.$getLongestLine();\n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n var minHeight = size.scrollerHeight + this.lineHeight;\n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var offset = this.scrollTop % this.lineHeight;\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n offset = this.scrollTop - firstRowScreen * lineHeight;\n var changes = 0;\n if (this.layerConfig.width != longestLine || hScrollChanged)\n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n this.layerConfig = {\n width: longestLine,\n padding: this.$padding,\n firstRow: firstRow,\n firstRowScreen: firstRowScreen,\n lastRow: lastRow,\n lineHeight: lineHeight,\n characterWidth: this.characterWidth,\n minHeight: minHeight,\n maxHeight: maxHeight,\n offset: offset,\n gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height: this.$size.scrollerHeight\n };\n if (this.session.$bidiHandler)\n this.session.$bidiHandler.setContentWidth(longestLine - this.$padding);\n return changes;\n };\n VirtualRenderer.prototype.$updateLines = function () {\n if (!this.$changedLines)\n return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n var layerConfig = this.layerConfig;\n if (firstRow > layerConfig.lastRow + 1) {\n return;\n }\n if (lastRow < layerConfig.firstRow) {\n return;\n }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n VirtualRenderer.prototype.$getLongestLine = function () {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH)\n charCount = this.$textLayer.MAX_LINE_LENGTH + 30;\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n VirtualRenderer.prototype.updateFrontMarkers = function () {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n VirtualRenderer.prototype.updateBackMarkers = function () {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n VirtualRenderer.prototype.addGutterDecoration = function (row, className) {\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.removeGutterDecoration = function (row, className) {\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.updateBreakpoints = function (rows) {\n this._rows = rows;\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.setAnnotations = function (annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.updateCursor = function () {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n VirtualRenderer.prototype.hideCursor = function () {\n this.$cursorLayer.hideCursor();\n };\n VirtualRenderer.prototype.showCursor = function () {\n this.$cursorLayer.showCursor();\n };\n VirtualRenderer.prototype.scrollSelectionIntoView = function (anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n VirtualRenderer.prototype.scrollCursorIntoView = function (cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var newLeft = pos.left;\n var newTop = pos.top;\n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n if (this.$scrollAnimation) {\n this.$stopAnimation = true;\n }\n var currentTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n if (currentTop + topMargin > newTop) {\n if (offset && currentTop + topMargin > newTop + this.lineHeight)\n newTop -= offset * this.$size.scrollerHeight;\n if (newTop === 0)\n newTop = -this.scrollMargin.top;\n this.session.setScrollTop(newTop);\n }\n else if (currentTop + this.$size.scrollerHeight - bottomMargin < newTop + this.lineHeight) {\n if (offset && currentTop + this.$size.scrollerHeight - bottomMargin < newTop - this.lineHeight)\n newTop += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(newTop + this.lineHeight + bottomMargin - this.$size.scrollerHeight);\n }\n var currentLeft = this.scrollLeft;\n var twoCharsWidth = 2 * this.layerConfig.characterWidth;\n if (newLeft - twoCharsWidth < currentLeft) {\n newLeft -= twoCharsWidth;\n if (newLeft < this.$padding + twoCharsWidth) {\n newLeft = -this.scrollMargin.left;\n }\n this.session.setScrollLeft(newLeft);\n }\n else {\n newLeft += twoCharsWidth;\n if (currentLeft + this.$size.scrollerWidth < newLeft + this.characterWidth) {\n this.session.setScrollLeft(Math.round(newLeft + this.characterWidth - this.$size.scrollerWidth));\n }\n else if (currentLeft <= this.$padding && newLeft - currentLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n }\n };\n VirtualRenderer.prototype.getScrollTop = function () {\n return this.session.getScrollTop();\n };\n VirtualRenderer.prototype.getScrollLeft = function () {\n return this.session.getScrollLeft();\n };\n VirtualRenderer.prototype.getScrollTopRow = function () {\n return this.scrollTop / this.lineHeight;\n };\n VirtualRenderer.prototype.getScrollBottomRow = function () {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n VirtualRenderer.prototype.scrollToRow = function (row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n VirtualRenderer.prototype.alignCursor = function (cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = { row: cursor, column: 0 };\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n this.session.setScrollTop(offset);\n return offset;\n };\n VirtualRenderer.prototype.$calcSteps = function (fromValue, toValue) {\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n var func = function (t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n return steps;\n };\n VirtualRenderer.prototype.scrollToLine = function (line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 });\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n VirtualRenderer.prototype.animateScrolling = function (fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n if (fromValue == toValue)\n return;\n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps };\n clearInterval(this.$timer);\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n function endAnimation() {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n _self.$stopAnimation = false;\n callback && callback();\n }\n this.$timer = setInterval(function () {\n if (_self.$stopAnimation) {\n endAnimation();\n return;\n }\n if (!_self.session)\n return clearInterval(_self.$timer);\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n }\n else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n }\n else {\n endAnimation();\n }\n }, 10);\n };\n VirtualRenderer.prototype.scrollToY = function (scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n VirtualRenderer.prototype.scrollToX = function (scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n VirtualRenderer.prototype.scrollTo = function (x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(x);\n };\n VirtualRenderer.prototype.scrollBy = function (deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n VirtualRenderer.prototype.isScrollableBy = function (deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n VirtualRenderer.prototype.pixelToScreenCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX };\n };\n VirtualRenderer.prototype.screenToTextCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n VirtualRenderer.prototype.textToScreenCoordinates = function (row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n var y = pos.row * this.lineHeight;\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n VirtualRenderer.prototype.visualizeFocus = function () {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.visualizeBlur = function () {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.showComposition = function (composition) {\n this.$composition = composition;\n if (!composition.cssText) {\n composition.cssText = this.textarea.style.cssText;\n }\n if (composition.useTextareaForIME == undefined)\n composition.useTextareaForIME = this.$useTextareaForIME;\n if (this.$useTextareaForIME) {\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n this.$cursorLayer.element.style.display = \"none\";\n }\n else {\n composition.markerId = this.session.addMarker(composition.markerRange, \"ace_composition_marker\", \"text\");\n }\n };\n VirtualRenderer.prototype.setCompositionText = function (text) {\n var cursor = this.session.selection.cursor;\n this.addToken(text, \"composition_placeholder\", cursor.row, cursor.column);\n this.$moveTextAreaToCursor();\n };\n VirtualRenderer.prototype.hideComposition = function () {\n if (!this.$composition)\n return;\n if (this.$composition.markerId)\n this.session.removeMarker(this.$composition.markerId);\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = this.$composition.cssText;\n var cursor = this.session.selection.cursor;\n this.removeExtraToken(cursor.row, cursor.column);\n this.$composition = null;\n this.$cursorLayer.element.style.display = \"\";\n };\n VirtualRenderer.prototype.setGhostText = function (text, position) {\n var cursor = this.session.selection.cursor;\n var insertPosition = position || { row: cursor.row, column: cursor.column };\n this.removeGhostText();\n var textChunks = this.$calculateWrappedTextChunks(text, insertPosition);\n this.addToken(textChunks[0].text, \"ghost_text\", insertPosition.row, insertPosition.column);\n this.$ghostText = {\n text: text,\n position: {\n row: insertPosition.row,\n column: insertPosition.column\n }\n };\n var widgetDiv = dom.createElement(\"div\");\n if (textChunks.length > 1) {\n var hiddenTokens = this.hideTokensAfterPosition(insertPosition.row, insertPosition.column);\n var lastLineDiv;\n textChunks.slice(1).forEach(function (el) {\n var chunkDiv = dom.createElement(\"div\");\n var chunkSpan = dom.createElement(\"span\");\n chunkSpan.className = \"ace_ghost_text\";\n if (el.wrapped)\n chunkDiv.className = \"ghost_text_line_wrapped\";\n if (el.text.length === 0)\n el.text = \" \";\n chunkSpan.appendChild(dom.createTextNode(el.text));\n chunkDiv.appendChild(chunkSpan);\n widgetDiv.appendChild(chunkDiv);\n lastLineDiv = chunkDiv;\n });\n hiddenTokens.forEach(function (token) {\n var element = dom.createElement(\"span\");\n if (!isTextToken(token.type))\n element.className = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n element.appendChild(dom.createTextNode(token.value));\n lastLineDiv.appendChild(element);\n });\n this.$ghostTextWidget = {\n el: widgetDiv,\n row: insertPosition.row,\n column: insertPosition.column,\n className: \"ace_ghost_text_container\"\n };\n this.session.widgetManager.addLineWidget(this.$ghostTextWidget);\n var pixelPosition = this.$cursorLayer.getPixelPosition(insertPosition, true);\n var el = this.container;\n var height = el.getBoundingClientRect().height;\n var ghostTextHeight = textChunks.length * this.lineHeight;\n var fitsY = ghostTextHeight < (height - pixelPosition.top);\n if (fitsY)\n return;\n if (ghostTextHeight < height) {\n this.scrollBy(0, (textChunks.length - 1) * this.lineHeight);\n }\n else {\n this.scrollToRow(insertPosition.row);\n }\n }\n };\n VirtualRenderer.prototype.$calculateWrappedTextChunks = function (text, position) {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth) - 2;\n limit = limit <= 0 ? 60 : limit; // this is a hack to prevent the editor from crashing when the window is too small\n var textLines = text.split(/\\r?\\n/);\n var textChunks = [];\n for (var i = 0; i < textLines.length; i++) {\n var displayTokens = this.session.$getDisplayTokens(textLines[i], position.column);\n var wrapSplits = this.session.$computeWrapSplits(displayTokens, limit, this.session.$tabSize);\n if (wrapSplits.length > 0) {\n var start = 0;\n wrapSplits.push(textLines[i].length);\n for (var j = 0; j < wrapSplits.length; j++) {\n var textSlice = textLines[i].slice(start, wrapSplits[j]);\n textChunks.push({ text: textSlice, wrapped: true });\n start = wrapSplits[j];\n }\n }\n else {\n textChunks.push({ text: textLines[i], wrapped: false });\n }\n }\n return textChunks;\n };\n VirtualRenderer.prototype.removeGhostText = function () {\n if (!this.$ghostText)\n return;\n var position = this.$ghostText.position;\n this.removeExtraToken(position.row, position.column);\n if (this.$ghostTextWidget) {\n this.session.widgetManager.removeLineWidget(this.$ghostTextWidget);\n this.$ghostTextWidget = null;\n }\n this.$ghostText = null;\n };\n VirtualRenderer.prototype.addToken = function (text, type, row, column) {\n var session = this.session;\n session.bgTokenizer.lines[row] = null;\n var newToken = { type: type, value: text };\n var tokens = session.getTokens(row);\n if (column == null || !tokens.length) {\n tokens.push(newToken);\n }\n else {\n var l = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (column <= l) {\n var diff = token.value.length - (l - column);\n var before = token.value.slice(0, diff);\n var after = token.value.slice(diff);\n tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after });\n break;\n }\n }\n }\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.hideTokensAfterPosition = function (row, column) {\n var tokens = this.session.getTokens(row);\n var l = 0;\n var hasPassedCursor = false;\n var hiddenTokens = [];\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (token.type === \"ghost_text\")\n continue;\n if (hasPassedCursor) {\n hiddenTokens.push({ type: token.type, value: token.value });\n token.type = \"hidden_token\";\n continue;\n }\n if (l === column) {\n hasPassedCursor = true;\n }\n }\n this.updateLines(row, row);\n return hiddenTokens;\n };\n VirtualRenderer.prototype.removeExtraToken = function (row, column) {\n this.session.bgTokenizer.lines[row] = null;\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.setTheme = function (theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange', { theme: theme });\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n }\n else {\n afterLoad(theme);\n }\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n if (module.$id)\n _self.$themeId = module.$id;\n dom.importCssString(module.cssText, module.cssClass, _self.container);\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n var padding = \"padding\" in module ? module.padding\n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n _self._dispatchEvent('themeLoaded', { theme: module });\n cb && cb();\n if (useragent.isSafari && _self.scroller) {\n _self.scroller.style.background = \"red\";\n _self.scroller.style.background = \"\";\n }\n }\n };\n VirtualRenderer.prototype.getTheme = function () {\n return this.$themeId;\n };\n VirtualRenderer.prototype.setStyle = function (style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n VirtualRenderer.prototype.unsetStyle = function (style) {\n dom.removeCssClass(this.container, style);\n };\n VirtualRenderer.prototype.setCursorStyle = function (style) {\n dom.setStyle(this.scroller.style, \"cursor\", style);\n };\n VirtualRenderer.prototype.setMouseCursor = function (cursorStyle) {\n dom.setStyle(this.scroller.style, \"cursor\", cursorStyle);\n };\n VirtualRenderer.prototype.attachToShadowRoot = function () {\n dom.importCssString(editorCss, \"ace_editor.css\", this.container);\n };\n VirtualRenderer.prototype.destroy = function () {\n this.freeze();\n this.$fontMetrics.destroy();\n this.$cursorLayer.destroy();\n this.removeAllListeners();\n this.container.textContent = \"\";\n this.setOption(\"useResizeObserver\", false);\n };\n VirtualRenderer.prototype.$updateCustomScrollbar = function (val) {\n var _self = this;\n this.$horizScroll = this.$vScroll = null;\n this.scrollBarV.element.remove();\n this.scrollBarH.element.remove();\n if (this.$scrollDecorator) {\n delete this.$scrollDecorator;\n }\n if (val === true) {\n this.scrollBarV = new VScrollBarCustom(this.container, this);\n this.scrollBarH = new HScrollBarCustom(this.container, this);\n this.scrollBarV.setHeight(this.$size.scrollerHeight);\n this.scrollBarH.setWidth(this.$size.scrollerWidth);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.$scrollDecorator = new Decorator(this.scrollBarV, this);\n this.$scrollDecorator.$updateDecorators();\n }\n else {\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n }\n };\n VirtualRenderer.prototype.$addResizeObserver = function () {\n if (!window.ResizeObserver || this.$resizeObserver)\n return;\n var self = this;\n this.$resizeTimer = lang.delayedCall(function () {\n if (!self.destroyed)\n self.onResize();\n }, 50);\n this.$resizeObserver = new window.ResizeObserver(function (e) {\n var w = e[0].contentRect.width;\n var h = e[0].contentRect.height;\n if (Math.abs(self.$size.width - w) > 1\n || Math.abs(self.$size.height - h) > 1) {\n self.$resizeTimer.delay();\n }\n else {\n self.$resizeTimer.cancel();\n }\n });\n this.$resizeObserver.observe(this.container);\n };\n return VirtualRenderer;\n}());\nVirtualRenderer.prototype.CHANGE_CURSOR = 1;\nVirtualRenderer.prototype.CHANGE_MARKER = 2;\nVirtualRenderer.prototype.CHANGE_GUTTER = 4;\nVirtualRenderer.prototype.CHANGE_SCROLL = 8;\nVirtualRenderer.prototype.CHANGE_LINES = 16;\nVirtualRenderer.prototype.CHANGE_TEXT = 32;\nVirtualRenderer.prototype.CHANGE_SIZE = 64;\nVirtualRenderer.prototype.CHANGE_MARKER_BACK = 128;\nVirtualRenderer.prototype.CHANGE_MARKER_FRONT = 256;\nVirtualRenderer.prototype.CHANGE_FULL = 512;\nVirtualRenderer.prototype.CHANGE_H_SCROLL = 1024;\nVirtualRenderer.prototype.$changes = 0;\nVirtualRenderer.prototype.$padding = null;\nVirtualRenderer.prototype.$frozen = false;\nVirtualRenderer.prototype.STEPS = 8;\noop.implement(VirtualRenderer.prototype, EventEmitter);\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n useResizeObserver: {\n set: function (value) {\n if (!value && this.$resizeObserver) {\n this.$resizeObserver.disconnect();\n this.$resizeTimer.cancel();\n this.$resizeTimer = this.$resizeObserver = null;\n }\n else if (value && !this.$resizeObserver) {\n this.$addResizeObserver();\n }\n }\n },\n animatedScroll: { initialValue: false },\n showInvisibles: {\n set: function (value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function (val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function () {\n return this.$showPrintMargin && this.$printMarginColumn;\n }\n },\n showGutter: {\n set: function (show) {\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n useSvgGutterIcons: {\n set: function (value) {\n this.$gutterLayer.$useSvgGutterIcons = value;\n },\n initialValue: false\n },\n showFoldedAnnotations: {\n set: function (value) {\n this.$gutterLayer.$showFoldedAnnotations = value;\n },\n initialValue: false\n },\n fadeFoldWidgets: {\n set: function (show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function (show) {\n this.$gutterLayer.setShowFoldWidgets(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setHighlightIndentGuides(show) == true) {\n this.$textLayer.$highlightIndentGuide();\n }\n else {\n this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells);\n }\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function (shouldHighlight) {\n this.$gutterLayer.setHighlightGutterLine(shouldHighlight);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n hScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function (size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function (name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function (val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function (val) {\n if (!(this.$minLines < 0x1ffffffffffff))\n this.$minLines = 0;\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function (val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function (val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function (val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n customScrollbar: {\n set: function (val) {\n this.$updateCustomScrollbar(val);\n },\n initialValue: false\n },\n theme: {\n set: function (val) { this.setTheme(val); },\n get: function () { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n },\n hasCssTransforms: {},\n useTextareaForIME: {\n initialValue: !useragent.isMobile && !useragent.isIE\n }\n});\nexports.VirtualRenderer = VirtualRenderer;\n\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar net = require(\"../lib/net\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar config = require(\"../config\");\n\nfunction $workerBlob(workerUrl) {\n var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl) {\n if (typeof Worker == \"undefined\")\n return { postMessage: function() {}, terminate: function() {} };\n if (config.get(\"loadWorkerFromBlob\")) {\n var blob = $workerBlob(workerUrl);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n }\n return new Worker(workerUrl);\n}\n\nvar WorkerClient = function(worker) {\n if (!worker.postMessage)\n worker = this.$createWorkerFromOldConfig.apply(this, arguments);\n\n this.$worker = worker;\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n if (require.nameToUrl && !require.toUrl)\n require.toUrl = require.nameToUrl;\n\n if (config.get(\"packaged\") || !require.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(require.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(require.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod,\n classname : classname\n });\n return this.$worker;\n };\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker.onerror = function(e) {\n e.preventDefault();\n };\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n if (data.data && data.data.err)\n data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code};\n this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener, true);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n\n var messageBuffer = [];\n var workerClient = new WorkerClient({\n messageBuffer: messageBuffer,\n terminate: function() {},\n postMessage: function(e) {\n messageBuffer.push(e);\n if (!main) return;\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n });\n\n workerClient.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n workerClient.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (messageBuffer.length)\n processNext();\n });\n\n return workerClient;\n};\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar oop = require(\"./lib/oop\");\nvar PlaceHolder = /** @class */ (function () {\n function PlaceHolder(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate, true);\n this.$others = others;\n this.$onCursorChange = function () {\n setTimeout(function () {\n _self.onCursorChange();\n });\n };\n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager()[\"$undostack\"] || { length: -1 };\n this.$undoStackDepth = undoStack.length;\n this.setup();\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n }\n PlaceHolder.prototype.setup = function () {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function (other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n PlaceHolder.prototype.showOtherMarkers = function () {\n if (this.othersActive)\n return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function (anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false);\n });\n };\n PlaceHolder.prototype.hideOtherMarkers = function () {\n if (!this.othersActive)\n return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n PlaceHolder.prototype.onUpdate = function (delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n var range = delta;\n if (range.start.row !== range.end.row)\n return;\n if (range.start.row !== this.pos.row)\n return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n this.updateAnchors(delta);\n if (inMainRange)\n this.length += lengthDiff;\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n }\n else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n this.$updating = false;\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateAnchors = function (delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateMarkers = function () {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function (pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n PlaceHolder.prototype.onCursorChange = function (event) {\n if (this.$updating || !this.session)\n return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n }\n else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n };\n PlaceHolder.prototype.detach = function () {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.off(\"change\", this.$onUpdate);\n this.session.selection.off(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n PlaceHolder.prototype.cancel = function () {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager[\"$undostack\"]).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(this.session, true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n return PlaceHolder;\n}());\noop.implement(PlaceHolder.prototype, EventEmitter);\nexports.PlaceHolder = PlaceHolder;\n\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){var event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n if (ctrl && useragent.isMac)\n button = ev.button;\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n if (button !== 0)\n return;\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function (e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n }\n else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n }\n else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n editor.inVirtualSelectionMode = true;\n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function () {\n var tmpSel = selection.toOrientedRange();\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n }\n else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.inVirtualSelectionMode = false;\n });\n }\n else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true;\n var initialRange;\n var rectSel = [];\n var blockSelect = function () {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n };\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n }\n else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead);\n else\n selection.moveToPosition(pos);\n screenCursor = { row: -1, column: -1 };\n var onMouseSelectionEnd = function (e) {\n blockSelect();\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n };\n var onSelectionInterval = blockSelect;\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function () { onSelectionInterval(); }, 20);\n return e.preventDefault();\n }\n}\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(require, exports, module){/**\n * commands to enter multiselect mode\n * @type {import(\"../../ace-internal\").Ace.Command[]}\n */\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n description: \"Add cursor above\",\n exec: function (editor) { editor.selectMoreLines(-1); },\n bindKey: { win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelow\",\n description: \"Add cursor below\",\n exec: function (editor) { editor.selectMoreLines(1); },\n bindKey: { win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorAboveSkipCurrent\",\n description: \"Add cursor above (skip current)\",\n exec: function (editor) { editor.selectMoreLines(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelowSkipCurrent\",\n description: \"Add cursor below (skip current)\",\n exec: function (editor) { editor.selectMoreLines(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreBefore\",\n description: \"Select more before\",\n exec: function (editor) { editor.selectMore(-1); },\n bindKey: { win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreAfter\",\n description: \"Select more after\",\n exec: function (editor) { editor.selectMore(1); },\n bindKey: { win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextBefore\",\n description: \"Select next before\",\n exec: function (editor) { editor.selectMore(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextAfter\",\n description: \"Select next after\",\n exec: function (editor) { editor.selectMore(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"toggleSplitSelectionIntoLines\",\n description: \"Split selection into lines\",\n exec: function (editor) {\n if (editor.multiSelect.rangeCount > 1)\n editor.multiSelect.joinSelections();\n else\n editor.multiSelect.splitIntoLines();\n },\n bindKey: { win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\" },\n readOnly: true\n }, {\n name: \"splitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function (editor) { editor.multiSelect.splitIntoLines(); },\n readOnly: true\n }, {\n name: \"alignCursors\",\n description: \"Align cursors\",\n exec: function (editor) { editor.alignCursors(); },\n bindKey: { win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\" },\n scrollIntoView: \"cursor\"\n }, {\n name: \"findAll\",\n description: \"Find all\",\n exec: function (editor) { editor.findAll(); },\n bindKey: { win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n description: \"Single selection\",\n bindKey: \"esc\",\n exec: function (editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function (editor) { return editor && editor.inMultiSelectMode; }\n }];\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(require, exports, module){/**\n * @typedef {import(\"./anchor\").Anchor} Anchor\n * @typedef {import(\"../ace-internal\").Ace.Point} Point\n * @typedef {import(\"../ace-internal\").Ace.ScreenCoordinates} ScreenCoordinates\n */\nvar RangeList = require(\"./range_list\").RangeList;\nvar Range = require(\"./range\").Range;\nvar Selection = require(\"./selection\").Selection;\nvar onMouseDown = require(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = require(\"./lib/event\");\nvar lang = require(\"./lib/lang\");\nvar commands = require(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require(\"./search\").Search;\nvar search = new Search();\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = require(\"./edit_session\").EditSession;\n(function () {\n this.getSelectionMarkers = function () {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function () {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function (range, $blockChangeEvents) {\n if (!range)\n return;\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n if (!range.cursor)\n range.cursor = range.end;\n var removed = this.rangeList.add(range);\n this.$onAddRange(range);\n if (removed.length)\n this.$onRemoveRange(removed);\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n this.toSingleRange = function (range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function (pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function () {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n };\n this.$onAddRange = function (range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", { range: range });\n };\n this.$onRemoveRange = function (removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n for (var i = removed.length; i--;) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n this._signal(\"removeRange\", { ranges: removed });\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function () {\n if (this.rangeList)\n return;\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function () {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n this.splitIntoLines = function () {\n var ranges = this.ranges.length ? this.ranges : [this.getRange()];\n var newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var row = range.start.row;\n var endRow = range.end.row;\n if (row === endRow) {\n newRanges.push(range.clone());\n }\n else {\n newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));\n while (++row < endRow)\n newRanges.push(this.getLineRange(row, true));\n newRanges.push(new Range(endRow, 0, endRow, range.end.column));\n }\n if (i == 0 && !this.isBackwards())\n newRanges = newRanges.reverse();\n }\n this.toSingleRange();\n for (var i = newRanges.length; i--;)\n this.addRange(newRanges[i]);\n };\n this.joinSelections = function () {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n }\n else {\n var cursor = this.session.documentToScreenPosition(this.cursor);\n var anchor = this.session.documentToScreenPosition(this.anchor);\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n }\n else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n }\n else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n if (startRow == endRow)\n includeEmptyLines = true;\n var docEnd;\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX));\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n if (yBackwards)\n rectSel.reverse();\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = require(\"./editor\").Editor;\n(function () {\n this.updateSelectionMarkers = function () {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function (orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function (range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n this.removeSelectionMarkers = function (ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n this.$onAddRange = function (e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onRemoveRange = function (e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onMultiSelect = function (e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onSingleSelect = function (e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n this.$onMultiSelectExec = function (e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n }\n else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n }\n else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n }\n else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n }\n else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n };\n this.forEachSelection = function (cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n if (selection.ranges[0])\n selection.fromOrientedRange(selection.ranges[0]);\n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n return result;\n };\n this.exitMultiSelectMode = function () {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n this.getSelectedText = function () {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n }\n else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n this.$checkMultiselectChange = function (e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row\n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n else\n this.multiSelect.mergeOverlappingRanges();\n }\n };\n this.findAll = function (needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n }\n this.$search.set(options);\n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n var selection = this.multiSelect;\n if (!additive)\n selection.toSingleRange(ranges[0]);\n for (var i = ranges.length; i--;)\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n return ranges.length;\n };\n this.selectMoreLines = function (dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n }\n else {\n var anchor = lead;\n }\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n }\n else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n }\n else {\n if (skip)\n var toRemove = range.cursor;\n }\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function (dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n for (var i = all.length; i--;) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp_1 = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp_1.start.row;\n range.start.column = tmp_1.start.column;\n range.end.row = tmp_1.end.row;\n range.end.column = tmp_1.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n var words = [];\n for (var i = all.length; i--;) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n for (var i = all.length; i--;) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n sel.fromOrientedRange(sel.ranges[0]);\n };\n this.selectMore = function (dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function () {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function (r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n if (fr < 0)\n fr = 0;\n if (lr >= max)\n lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({ row: fr, column: 0 }, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n }\n else {\n sameRowRanges.forEach(function (r) {\n sel.substractPoint(r.cursor);\n });\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function (r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function (r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n this.$reAlignText = function (lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n return lines.map(function (line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function (e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n addAltCursorListeners(editor);\n}\nfunction addAltCursorListeners(editor) {\n if (!editor.textInput)\n return;\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function (e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n }\n else if (altCursor) {\n reset();\n }\n }, editor);\n event.addListener(el, \"keyup\", reset, editor);\n event.addListener(el, \"blur\", reset, editor);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\nexports.MultiSelect = MultiSelect;\nrequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function (val) {\n MultiSelect(this);\n if (val) {\n this.on(\"mousedown\", onMouseDown);\n }\n else {\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function (val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../../range\").Range;\nvar FoldMode = exports.FoldMode = function () { };\n(function () {\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n return null;\n };\n this.indentationBlock = function (session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n if (level == -1)\n continue;\n if (level <= startLevel) {\n var token = session.getTokenAt(row, 0);\n if (!token || token.type !== \"string\")\n break;\n }\n endRow = row;\n }\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.openingBracketBlock = function (session, bracket, row, column, typeRe) {\n var start = { row: row, column: column + 1 };\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n if (fw == \"start\" && end.row > start.row) {\n end.row--;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n this.closingBracketBlock = function (session, bracket, row, column, typeRe) {\n var end = { row: row, column: column };\n var start = session.$findOpeningBracket(bracket, end);\n if (!start)\n return;\n start.column++;\n end.column--;\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/range\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Range = require(\"../range\").Range;\nvar nls = require(\"../config\").nls;\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\nexports.showErrorMarker = function (editor, dir) {\n var session = editor.session;\n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n }\n else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n }\n else if (oldWidget) {\n return;\n }\n else {\n gutterAnno = {\n displayText: [nls(\"error-marker.good-state\", \"Looks good!\")],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n var w = {\n row: pos.row,\n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n gutterAnno.displayText.forEach(function (annoTextLine, i) {\n el.appendChild(dom.createTextNode(annoTextLine));\n if (i < gutterAnno.displayText.length - 1) {\n el.appendChild(dom.createElement(\"br\"));\n }\n });\n el.appendChild(dom.createElement(\"div\"));\n var kb = function (_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return { command: \"null\" };\n }\n };\n w.destroy = function () {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n editor.session.widgetManager.addLineWidget(w);\n w.el.onmousedown = editor.focus.bind(editor);\n editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight });\n};\ndom.importCssString(\"\\n .error_widget_wrapper {\\n background: inherit;\\n color: inherit;\\n border:none\\n }\\n .error_widget {\\n border-top: solid 2px;\\n border-bottom: solid 2px;\\n margin: 5px 0;\\n padding: 10px 40px;\\n white-space: pre-wrap;\\n }\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\n border-color: #ff5a5a\\n }\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\n border-color: #F1D817\\n }\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\n border-color: #5a5a5a\\n }\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\n border-color: #5aaa5a\\n }\\n .error_widget_arrow {\\n position: absolute;\\n border: solid 5px;\\n border-top-color: transparent!important;\\n border-right-color: transparent!important;\\n border-left-color: transparent!important;\\n top: -5px;\\n }\\n\", \"error_marker.css\", false);\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/range\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\",\"ace/loader_build\"], function(require, exports, module){/**\n * The main class required to set up an Ace instance in the browser.\n *\n * @namespace Ace\n **/\n\"use strict\";\nrequire(\"./loader_build\")(exports)\nvar dom = require(\"./lib/dom\");\nvar Range = require(\"./range\").Range;\nvar Editor = require(\"./editor\").Editor;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nrequire(\"./worker/worker_client\");\nrequire(\"./keyboard/hash_handler\");\nrequire(\"./placeholder\");\nrequire(\"./multi_select\");\nrequire(\"./mode/folding/fold_mode\");\nrequire(\"./theme/textmate\");\nrequire(\"./ext/error_marker\");\nexports.config = require(\"./config\");\nexports.edit = function (el, options) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n }\n else if (el) {\n value = el.textContent;\n el.innerHTML = \"\";\n }\n var doc = exports.createEditSession(value);\n var editor = new Editor(new Renderer(el), doc, options);\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode)\n env.textarea = oldNode;\n editor.on(\"destroy\", function () {\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function (text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.Range = Range;\nexports.Editor = Editor;\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.VirtualRenderer = Renderer;\nvar version = exports.config.version;\nexports.version = version;\n\n}); (function() {\n ace.require([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n var global = (function () {\n return this;\n })();\n if (!global && typeof window != \"undefined\") global = window; // can happen in strict mode\n if (!global && typeof self != \"undefined\") global = self; // can happen in webworker\n \n if (!global.ace)\n global.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n global.ace[key] = a[key];\n global.ace[\"default\"] = global.ace;\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = global.ace;\n }\n });\n })();\n ","ace.define(\"ace/snippets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/lang\",\"ace/range\",\"ace/range_list\",\"ace/keyboard/hash_handler\",\"ace/tokenizer\",\"ace/clipboard\",\"ace/editor\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"./lib/dom\");\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar lang = require(\"./lib/lang\");\nvar Range = require(\"./range\").Range;\nvar RangeList = require(\"./range_list\").RangeList;\nvar HashHandler = require(\"./keyboard/hash_handler\").HashHandler;\nvar Tokenizer = require(\"./tokenizer\").Tokenizer;\nvar clipboard = require(\"./clipboard\");\nvar VARIABLES = {\n CURRENT_WORD: function (editor) {\n return editor.session.getTextRange(editor.session.getWordRange());\n },\n SELECTION: function (editor, name, indentation) {\n var text = editor.session.getTextRange();\n if (indentation)\n return text.replace(/\\n\\r?([ \\t]*\\S)/g, \"\\n\" + indentation + \"$1\");\n return text;\n },\n CURRENT_LINE: function (editor) {\n return editor.session.getLine(editor.getCursorPosition().row);\n },\n PREV_LINE: function (editor) {\n return editor.session.getLine(editor.getCursorPosition().row - 1);\n },\n LINE_INDEX: function (editor) {\n return editor.getCursorPosition().row;\n },\n LINE_NUMBER: function (editor) {\n return editor.getCursorPosition().row + 1;\n },\n SOFT_TABS: function (editor) {\n return editor.session.getUseSoftTabs() ? \"YES\" : \"NO\";\n },\n TAB_SIZE: function (editor) {\n return editor.session.getTabSize();\n },\n CLIPBOARD: function (editor) {\n return clipboard.getText && clipboard.getText();\n },\n FILENAME: function (editor) {\n return /[^/\\\\]*$/.exec(this.FILEPATH(editor))[0];\n },\n FILENAME_BASE: function (editor) {\n return /[^/\\\\]*$/.exec(this.FILEPATH(editor))[0].replace(/\\.[^.]*$/, \"\");\n },\n DIRECTORY: function (editor) {\n return this.FILEPATH(editor).replace(/[^/\\\\]*$/, \"\");\n },\n FILEPATH: function (editor) { return \"/not implemented.txt\"; },\n WORKSPACE_NAME: function () { return \"Unknown\"; },\n FULLNAME: function () { return \"Unknown\"; },\n BLOCK_COMMENT_START: function (editor) {\n var mode = editor.session.$mode || {};\n return mode.blockComment && mode.blockComment.start || \"\";\n },\n BLOCK_COMMENT_END: function (editor) {\n var mode = editor.session.$mode || {};\n return mode.blockComment && mode.blockComment.end || \"\";\n },\n LINE_COMMENT: function (editor) {\n var mode = editor.session.$mode || {};\n return mode.lineCommentStart || \"\";\n },\n CURRENT_YEAR: date.bind(null, { year: \"numeric\" }),\n CURRENT_YEAR_SHORT: date.bind(null, { year: \"2-digit\" }),\n CURRENT_MONTH: date.bind(null, { month: \"numeric\" }),\n CURRENT_MONTH_NAME: date.bind(null, { month: \"long\" }),\n CURRENT_MONTH_NAME_SHORT: date.bind(null, { month: \"short\" }),\n CURRENT_DATE: date.bind(null, { day: \"2-digit\" }),\n CURRENT_DAY_NAME: date.bind(null, { weekday: \"long\" }),\n CURRENT_DAY_NAME_SHORT: date.bind(null, { weekday: \"short\" }),\n CURRENT_HOUR: date.bind(null, { hour: \"2-digit\", hour12: false }),\n CURRENT_MINUTE: date.bind(null, { minute: \"2-digit\" }),\n CURRENT_SECOND: date.bind(null, { second: \"2-digit\" })\n};\nVARIABLES.SELECTED_TEXT = VARIABLES.SELECTION;\nfunction date(dateFormat) {\n var str = new Date().toLocaleString(\"en-us\", dateFormat);\n return str.length == 1 ? \"0\" + str : str;\n}\nvar SnippetManager = /** @class */ (function () {\n function SnippetManager() {\n this.snippetMap = {};\n this.snippetNameMap = {};\n this.variables = VARIABLES;\n }\n SnippetManager.prototype.getTokenizer = function () {\n return SnippetManager[\"$tokenizer\"] || this.createTokenizer();\n };\n SnippetManager.prototype.createTokenizer = function () {\n function TabstopToken(str) {\n str = str.substr(1);\n if (/^\\d+$/.test(str))\n return [{ tabstopId: parseInt(str, 10) }];\n return [{ text: str }];\n }\n function escape(ch) {\n return \"(?:[^\\\\\\\\\" + ch + \"]|\\\\\\\\.)\";\n }\n var formatMatcher = {\n regex: \"/(\" + escape(\"/\") + \"+)/\",\n onMatch: function (val, state, stack) {\n var ts = stack[0];\n ts.fmtString = true;\n ts.guard = val.slice(1, -1);\n ts.flag = \"\";\n return \"\";\n },\n next: \"formatString\"\n };\n SnippetManager[\"$tokenizer\"] = new Tokenizer({\n start: [\n { regex: /\\\\./, onMatch: function (val, state, stack) {\n var ch = val[1];\n if (ch == \"}\" && stack.length) {\n val = ch;\n }\n else if (\"`$\\\\\".indexOf(ch) != -1) {\n val = ch;\n }\n return [val];\n } },\n { regex: /}/, onMatch: function (val, state, stack) {\n return [stack.length ? stack.shift() : val];\n } },\n { regex: /\\$(?:\\d+|\\w+)/, onMatch: TabstopToken },\n { regex: /\\$\\{[\\dA-Z_a-z]+/, onMatch: function (str, state, stack) {\n var t = TabstopToken(str.substr(1));\n stack.unshift(t[0]);\n return t;\n }, next: \"snippetVar\" },\n { regex: /\\n/, token: \"newline\", merge: false }\n ],\n snippetVar: [\n { regex: \"\\\\|\" + escape(\"\\\\|\") + \"*\\\\|\", onMatch: function (val, state, stack) {\n var choices = val.slice(1, -1).replace(/\\\\[,|\\\\]|,/g, function (operator) {\n return operator.length == 2 ? operator[1] : \"\\x00\";\n }).split(\"\\x00\").map(function (value) {\n return { value: value };\n });\n stack[0].choices = choices;\n return [choices[0]];\n }, next: \"start\" },\n formatMatcher,\n { regex: \"([^:}\\\\\\\\]|\\\\\\\\.)*:?\", token: \"\", next: \"start\" }\n ],\n formatString: [\n { regex: /:/, onMatch: function (val, state, stack) {\n if (stack.length && stack[0].expectElse) {\n stack[0].expectElse = false;\n stack[0].ifEnd = { elseEnd: stack[0] };\n return [stack[0].ifEnd];\n }\n return \":\";\n } },\n { regex: /\\\\./, onMatch: function (val, state, stack) {\n var ch = val[1];\n if (ch == \"}\" && stack.length)\n val = ch;\n else if (\"`$\\\\\".indexOf(ch) != -1)\n val = ch;\n else if (ch == \"n\")\n val = \"\\n\";\n else if (ch == \"t\")\n val = \"\\t\";\n else if (\"ulULE\".indexOf(ch) != -1)\n val = { changeCase: ch, local: ch > \"a\" };\n return [val];\n } },\n { regex: \"/\\\\w*}\", onMatch: function (val, state, stack) {\n var next = stack.shift();\n if (next)\n next.flag = val.slice(1, -1);\n this.next = next && next.tabstopId ? \"start\" : \"\";\n return [next || val];\n }, next: \"start\" },\n { regex: /\\$(?:\\d+|\\w+)/, onMatch: function (val, state, stack) {\n return [{ text: val.slice(1) }];\n } },\n { regex: /\\${\\w+/, onMatch: function (val, state, stack) {\n var token = { text: val.slice(2) };\n stack.unshift(token);\n return [token];\n }, next: \"formatStringVar\" },\n { regex: /\\n/, token: \"newline\", merge: false },\n { regex: /}/, onMatch: function (val, state, stack) {\n var next = stack.shift();\n this.next = next && next.tabstopId ? \"start\" : \"\";\n return [next || val];\n }, next: \"start\" }\n ],\n formatStringVar: [\n { regex: /:\\/\\w+}/, onMatch: function (val, state, stack) {\n var ts = stack[0];\n ts.formatFunction = val.slice(2, -1);\n return [stack.shift()];\n }, next: \"formatString\" },\n formatMatcher,\n { regex: /:[\\?\\-+]?/, onMatch: function (val, state, stack) {\n if (val[1] == \"+\")\n stack[0].ifEnd = stack[0];\n if (val[1] == \"?\")\n stack[0].expectElse = true;\n }, next: \"formatString\" },\n { regex: \"([^:}\\\\\\\\]|\\\\\\\\.)*:?\", token: \"\", next: \"formatString\" }\n ]\n });\n return SnippetManager[\"$tokenizer\"];\n };\n SnippetManager.prototype.tokenizeTmSnippet = function (str, startState) {\n return this.getTokenizer().getLineTokens(str, startState).tokens.map(function (x) {\n return x.value || x;\n });\n };\n SnippetManager.prototype.getVariableValue = function (editor, name, indentation) {\n if (/^\\d+$/.test(name))\n return (this.variables.__ || {})[name] || \"\";\n if (/^[A-Z]\\d+$/.test(name))\n return (this.variables[name[0] + \"__\"] || {})[name.substr(1)] || \"\";\n name = name.replace(/^TM_/, \"\");\n if (!this.variables.hasOwnProperty(name))\n return \"\";\n var value = this.variables[name];\n if (typeof value == \"function\")\n value = this.variables[name](editor, name, indentation);\n return value == null ? \"\" : value;\n };\n SnippetManager.prototype.tmStrFormat = function (str, ch, editor) {\n if (!ch.fmt)\n return str;\n var flag = ch.flag || \"\";\n var re = ch.guard;\n re = new RegExp(re, flag.replace(/[^gim]/g, \"\"));\n var fmtTokens = typeof ch.fmt == \"string\" ? this.tokenizeTmSnippet(ch.fmt, \"formatString\") : ch.fmt;\n var _self = this;\n var formatted = str.replace(re, function () {\n var oldArgs = _self.variables.__;\n _self.variables.__ = [].slice.call(arguments);\n var fmtParts = _self.resolveVariables(fmtTokens, editor);\n var gChangeCase = \"E\";\n for (var i = 0; i < fmtParts.length; i++) {\n var ch = fmtParts[i];\n if (typeof ch == \"object\") {\n fmtParts[i] = \"\";\n if (ch.changeCase && ch.local) {\n var next = fmtParts[i + 1];\n if (next && typeof next == \"string\") {\n if (ch.changeCase == \"u\")\n fmtParts[i] = next[0].toUpperCase();\n else\n fmtParts[i] = next[0].toLowerCase();\n fmtParts[i + 1] = next.substr(1);\n }\n }\n else if (ch.changeCase) {\n gChangeCase = ch.changeCase;\n }\n }\n else if (gChangeCase == \"U\") {\n fmtParts[i] = ch.toUpperCase();\n }\n else if (gChangeCase == \"L\") {\n fmtParts[i] = ch.toLowerCase();\n }\n }\n _self.variables.__ = oldArgs;\n return fmtParts.join(\"\");\n });\n return formatted;\n };\n SnippetManager.prototype.tmFormatFunction = function (str, ch, editor) {\n if (ch.formatFunction == \"upcase\")\n return str.toUpperCase();\n if (ch.formatFunction == \"downcase\")\n return str.toLowerCase();\n return str;\n };\n SnippetManager.prototype.resolveVariables = function (snippet, editor) {\n var result = [];\n var indentation = \"\";\n var afterNewLine = true;\n for (var i = 0; i < snippet.length; i++) {\n var ch = snippet[i];\n if (typeof ch == \"string\") {\n result.push(ch);\n if (ch == \"\\n\") {\n afterNewLine = true;\n indentation = \"\";\n }\n else if (afterNewLine) {\n indentation = /^\\t*/.exec(ch)[0];\n afterNewLine = /\\S/.test(ch);\n }\n continue;\n }\n if (!ch)\n continue;\n afterNewLine = false;\n if (ch.fmtString) {\n var j = snippet.indexOf(ch, i + 1);\n if (j == -1)\n j = snippet.length;\n ch.fmt = snippet.slice(i + 1, j);\n i = j;\n }\n if (ch.text) {\n var value = this.getVariableValue(editor, ch.text, indentation) + \"\";\n if (ch.fmtString)\n value = this.tmStrFormat(value, ch, editor);\n if (ch.formatFunction)\n value = this.tmFormatFunction(value, ch, editor);\n if (value && !ch.ifEnd) {\n result.push(value);\n gotoNext(ch);\n }\n else if (!value && ch.ifEnd) {\n gotoNext(ch.ifEnd);\n }\n }\n else if (ch.elseEnd) {\n gotoNext(ch.elseEnd);\n }\n else if (ch.tabstopId != null) {\n result.push(ch);\n }\n else if (ch.changeCase != null) {\n result.push(ch);\n }\n }\n function gotoNext(ch) {\n var i1 = snippet.indexOf(ch, i + 1);\n if (i1 != -1)\n i = i1;\n }\n return result;\n };\n SnippetManager.prototype.getDisplayTextForSnippet = function (editor, snippetText) {\n var processedSnippet = processSnippetText.call(this, editor, snippetText);\n return processedSnippet.text;\n };\n SnippetManager.prototype.insertSnippetForSelection = function (editor, snippetText, options) {\n if (options === void 0) { options = {}; }\n var processedSnippet = processSnippetText.call(this, editor, snippetText, options);\n var range = editor.getSelectionRange();\n var end = editor.session.replace(range, processedSnippet.text);\n var tabstopManager = new TabstopManager(editor);\n var selectionId = editor.inVirtualSelectionMode && editor.selection.index;\n tabstopManager.addTabstops(processedSnippet.tabstops, range.start, end, selectionId);\n };\n SnippetManager.prototype.insertSnippet = function (editor, snippetText, options) {\n if (options === void 0) { options = {}; }\n var self = this;\n if (editor.inVirtualSelectionMode)\n return self.insertSnippetForSelection(editor, snippetText, options);\n editor.forEachSelection(function () {\n self.insertSnippetForSelection(editor, snippetText, options);\n }, null, { keepOrder: true });\n if (editor.tabstopManager)\n editor.tabstopManager.tabNext();\n };\n SnippetManager.prototype.$getScope = function (editor) {\n var scope = editor.session.$mode.$id || \"\";\n scope = scope.split(\"/\").pop();\n if (scope === \"html\" || scope === \"php\") {\n if (scope === \"php\" && !editor.session.$mode.inlinePhp)\n scope = \"html\";\n var c = editor.getCursorPosition();\n var state = editor.session.getState(c.row);\n if (typeof state === \"object\") {\n state = state[0];\n }\n if (state.substring) {\n if (state.substring(0, 3) == \"js-\")\n scope = \"javascript\";\n else if (state.substring(0, 4) == \"css-\")\n scope = \"css\";\n else if (state.substring(0, 4) == \"php-\")\n scope = \"php\";\n }\n }\n return scope;\n };\n SnippetManager.prototype.getActiveScopes = function (editor) {\n var scope = this.$getScope(editor);\n var scopes = [scope];\n var snippetMap = this.snippetMap;\n if (snippetMap[scope] && snippetMap[scope].includeScopes) {\n scopes.push.apply(scopes, snippetMap[scope].includeScopes);\n }\n scopes.push(\"_\");\n return scopes;\n };\n SnippetManager.prototype.expandWithTab = function (editor, options) {\n var self = this;\n var result = editor.forEachSelection(function () {\n return self.expandSnippetForSelection(editor, options);\n }, null, { keepOrder: true });\n if (result && editor.tabstopManager)\n editor.tabstopManager.tabNext();\n return result;\n };\n SnippetManager.prototype.expandSnippetForSelection = function (editor, options) {\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var before = line.substring(0, cursor.column);\n var after = line.substr(cursor.column);\n var snippetMap = this.snippetMap;\n var snippet;\n this.getActiveScopes(editor).some(function (scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = this.findMatchingSnippet(snippets, before, after);\n return !!snippet;\n }, this);\n if (!snippet)\n return false;\n if (options && options.dryRun)\n return true;\n editor.session.doc.removeInLine(cursor.row, cursor.column - snippet.replaceBefore.length, cursor.column + snippet.replaceAfter.length);\n this.variables.M__ = snippet.matchBefore;\n this.variables.T__ = snippet.matchAfter;\n this.insertSnippetForSelection(editor, snippet.content);\n this.variables.M__ = this.variables.T__ = null;\n return true;\n };\n SnippetManager.prototype.findMatchingSnippet = function (snippetList, before, after) {\n for (var i = snippetList.length; i--;) {\n var s = snippetList[i];\n if (s.startRe && !s.startRe.test(before))\n continue;\n if (s.endRe && !s.endRe.test(after))\n continue;\n if (!s.startRe && !s.endRe)\n continue;\n s.matchBefore = s.startRe ? s.startRe.exec(before) : [\"\"];\n s.matchAfter = s.endRe ? s.endRe.exec(after) : [\"\"];\n s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : \"\";\n s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : \"\";\n return s;\n }\n };\n SnippetManager.prototype.register = function (snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n var self = this;\n if (!snippets)\n snippets = [];\n function wrapRegexp(src) {\n if (src && !/^\\^?\\(.*\\)\\$?$|^\\\\b$/.test(src))\n src = \"(?:\" + src + \")\";\n return src || \"\";\n }\n function guardedRegexp(re, guard, opening) {\n re = wrapRegexp(re);\n guard = wrapRegexp(guard);\n if (opening) {\n re = guard + re;\n if (re && re[re.length - 1] != \"$\")\n re = re + \"$\";\n }\n else {\n re = re + guard;\n if (re && re[0] != \"^\")\n re = \"^\" + re;\n }\n return new RegExp(re);\n }\n function addSnippet(s) {\n if (!s.scope)\n s.scope = scope || \"_\";\n scope = s.scope;\n if (!snippetMap[scope]) {\n snippetMap[scope] = [];\n snippetNameMap[scope] = {};\n }\n var map = snippetNameMap[scope];\n if (s.name) {\n var old = map[s.name];\n if (old)\n self.unregister(old);\n map[s.name] = s;\n }\n snippetMap[scope].push(s);\n if (s.prefix)\n s.tabTrigger = s.prefix;\n if (!s.content && s.body)\n s.content = Array.isArray(s.body) ? s.body.join(\"\\n\") : s.body;\n if (s.tabTrigger && !s.trigger) {\n if (!s.guard && /^\\w/.test(s.tabTrigger))\n s.guard = \"\\\\b\";\n s.trigger = lang.escapeRegExp(s.tabTrigger);\n }\n if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard)\n return;\n s.startRe = guardedRegexp(s.trigger, s.guard, true);\n s.triggerRe = new RegExp(s.trigger);\n s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true);\n s.endTriggerRe = new RegExp(s.endTrigger);\n }\n if (Array.isArray(snippets)) {\n snippets.forEach(addSnippet);\n }\n else {\n Object.keys(snippets).forEach(function (key) {\n addSnippet(snippets[key]);\n });\n }\n this._signal(\"registerSnippets\", { scope: scope });\n };\n SnippetManager.prototype.unregister = function (snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n function removeSnippet(s) {\n var nameMap = snippetNameMap[s.scope || scope];\n if (nameMap && nameMap[s.name]) {\n delete nameMap[s.name];\n var map = snippetMap[s.scope || scope];\n var i = map && map.indexOf(s);\n if (i >= 0)\n map.splice(i, 1);\n }\n }\n if (snippets.content)\n removeSnippet(snippets);\n else if (Array.isArray(snippets))\n snippets.forEach(removeSnippet);\n };\n SnippetManager.prototype.parseSnippetFile = function (str) {\n str = str.replace(/\\r/g, \"\");\n var list = [], /**@type{Snippet}*/ snippet = {};\n var re = /^#.*|^({[\\s\\S]*})\\s*$|^(\\S+) (.*)$|^((?:\\n*\\t.*)+)/gm;\n var m;\n while (m = re.exec(str)) {\n if (m[1]) {\n try {\n snippet = JSON.parse(m[1]);\n list.push(snippet);\n }\n catch (e) { }\n }\n if (m[4]) {\n snippet.content = m[4].replace(/^\\t/gm, \"\");\n list.push(snippet);\n snippet = {};\n }\n else {\n var key = m[2], val = m[3];\n if (key == \"regex\") {\n var guardRe = /\\/((?:[^\\/\\\\]|\\\\.)*)|$/g;\n snippet.guard = guardRe.exec(val)[1];\n snippet.trigger = guardRe.exec(val)[1];\n snippet.endTrigger = guardRe.exec(val)[1];\n snippet.endGuard = guardRe.exec(val)[1];\n }\n else if (key == \"snippet\") {\n snippet.tabTrigger = val.match(/^\\S*/)[0];\n if (!snippet.name)\n snippet.name = val;\n }\n else if (key) {\n snippet[key] = val;\n }\n }\n }\n return list;\n };\n SnippetManager.prototype.getSnippetByName = function (name, editor) {\n var snippetMap = this.snippetNameMap;\n var snippet;\n this.getActiveScopes(editor).some(function (scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = snippets[name];\n return !!snippet;\n }, this);\n return snippet;\n };\n return SnippetManager;\n}());\noop.implement(SnippetManager.prototype, EventEmitter);\nvar processSnippetText = function (editor, snippetText, options) {\n if (options === void 0) { options = {}; }\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var tabString = editor.session.getTabString();\n var indentString = line.match(/^\\s*/)[0];\n if (cursor.column < indentString.length)\n indentString = indentString.slice(0, cursor.column);\n snippetText = snippetText.replace(/\\r/g, \"\");\n var tokens = this.tokenizeTmSnippet(snippetText);\n tokens = this.resolveVariables(tokens, editor);\n tokens = tokens.map(function (x) {\n if (x == \"\\n\" && !options.excludeExtraIndent)\n return x + indentString;\n if (typeof x == \"string\")\n return x.replace(/\\t/g, tabString);\n return x;\n });\n var tabstops = [];\n tokens.forEach(function (p, i) {\n if (typeof p != \"object\")\n return;\n var id = p.tabstopId;\n var ts = tabstops[id];\n if (!ts) {\n ts = tabstops[id] = [];\n ts.index = id;\n ts.value = \"\";\n ts.parents = {};\n }\n if (ts.indexOf(p) !== -1)\n return;\n if (p.choices && !ts.choices)\n ts.choices = p.choices;\n ts.push(p);\n var i1 = tokens.indexOf(p, i + 1);\n if (i1 === -1)\n return;\n var value = tokens.slice(i + 1, i1);\n var isNested = value.some(function (t) { return typeof t === \"object\"; });\n if (isNested && !ts.value) {\n ts.value = value;\n }\n else if (value.length && (!ts.value || typeof ts.value !== \"string\")) {\n ts.value = value.join(\"\");\n }\n });\n tabstops.forEach(function (ts) { ts.length = 0; });\n var expanding = {};\n function copyValue(val) {\n var copy = [];\n for (var i = 0; i < val.length; i++) {\n var p = val[i];\n if (typeof p == \"object\") {\n if (expanding[p.tabstopId])\n continue;\n var j = val.lastIndexOf(p, i - 1);\n p = copy[j] || { tabstopId: p.tabstopId };\n }\n copy[i] = p;\n }\n return copy;\n }\n for (var i = 0; i < tokens.length; i++) {\n var p = tokens[i];\n if (typeof p != \"object\")\n continue;\n var id = p.tabstopId;\n var ts = tabstops[id];\n var i1 = tokens.indexOf(p, i + 1);\n if (expanding[id]) {\n if (expanding[id] === p) {\n delete expanding[id];\n Object.keys(expanding).forEach(function (parentId) {\n ts.parents[parentId] = true;\n });\n }\n continue;\n }\n expanding[id] = p;\n var value = ts.value;\n if (typeof value !== \"string\")\n value = copyValue(value);\n else if (p.fmt)\n value = this.tmStrFormat(value, p, editor);\n tokens.splice.apply(tokens, [i + 1, Math.max(0, i1 - i)].concat(value, p));\n if (ts.indexOf(p) === -1)\n ts.push(p);\n }\n var row = 0, column = 0;\n var text = \"\";\n tokens.forEach(function (t) {\n if (typeof t === \"string\") {\n var lines = t.split(\"\\n\");\n if (lines.length > 1) {\n column = lines[lines.length - 1].length;\n row += lines.length - 1;\n }\n else\n column += t.length;\n text += t;\n }\n else if (t) {\n if (!t.start)\n t.start = { row: row, column: column };\n else\n t.end = { row: row, column: column };\n }\n });\n return {\n text: text,\n tabstops: tabstops,\n tokens: tokens\n };\n};\nvar TabstopManager = /** @class */ (function () {\n function TabstopManager(editor) {\n this.index = 0;\n this.ranges = [];\n this.tabstops = [];\n if (editor.tabstopManager)\n return editor.tabstopManager;\n editor.tabstopManager = this;\n this.$onChange = this.onChange.bind(this);\n this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule;\n this.$onChangeSession = this.onChangeSession.bind(this);\n this.$onAfterExec = this.onAfterExec.bind(this);\n this.attach(editor);\n }\n TabstopManager.prototype.attach = function (editor) {\n this.$openTabstops = null;\n this.selectedTabstop = null;\n this.editor = editor;\n this.session = editor.session;\n this.editor.on(\"change\", this.$onChange);\n this.editor.on(\"changeSelection\", this.$onChangeSelection);\n this.editor.on(\"changeSession\", this.$onChangeSession);\n this.editor.commands.on(\"afterExec\", this.$onAfterExec);\n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n };\n TabstopManager.prototype.detach = function () {\n this.tabstops.forEach(this.removeTabstopMarkers, this);\n this.ranges.length = 0;\n this.tabstops.length = 0;\n this.selectedTabstop = null;\n this.editor.off(\"change\", this.$onChange);\n this.editor.off(\"changeSelection\", this.$onChangeSelection);\n this.editor.off(\"changeSession\", this.$onChangeSession);\n this.editor.commands.off(\"afterExec\", this.$onAfterExec);\n this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);\n this.editor.tabstopManager = null;\n this.session = null;\n this.editor = null;\n };\n TabstopManager.prototype.onChange = function (delta) {\n var isRemove = delta.action[0] == \"r\";\n var selectedTabstop = this.selectedTabstop || {};\n var parents = selectedTabstop.parents || {};\n var tabstops = this.tabstops.slice();\n for (var i = 0; i < tabstops.length; i++) {\n var ts = tabstops[i];\n var active = ts == selectedTabstop || parents[ts.index];\n ts.rangeList.$bias = active ? 0 : 1;\n if (delta.action == \"remove\" && ts !== selectedTabstop) {\n var parentActive = ts.parents && ts.parents[selectedTabstop.index];\n var startIndex = ts.rangeList.pointIndex(delta.start, parentActive);\n startIndex = startIndex < 0 ? -startIndex - 1 : startIndex + 1;\n var endIndex = ts.rangeList.pointIndex(delta.end, parentActive);\n endIndex = endIndex < 0 ? -endIndex - 1 : endIndex - 1;\n var toRemove = ts.rangeList.ranges.slice(startIndex, endIndex);\n for (var j = 0; j < toRemove.length; j++)\n this.removeRange(toRemove[j]);\n }\n ts.rangeList.$onChange(delta);\n }\n var session = this.session;\n if (!this.$inChange && isRemove && session.getLength() == 1 && !session.getValue())\n this.detach();\n };\n TabstopManager.prototype.updateLinkedFields = function () {\n var ts = this.selectedTabstop;\n if (!ts || !ts.hasLinkedRanges || !ts.firstNonLinked)\n return;\n this.$inChange = true;\n var session = this.session;\n var text = session.getTextRange(ts.firstNonLinked);\n for (var i = 0; i < ts.length; i++) {\n var range = ts[i];\n if (!range.linked)\n continue;\n var original = range.original;\n var fmt = exports.snippetManager.tmStrFormat(text, original, this.editor);\n session.replace(range, fmt);\n }\n this.$inChange = false;\n };\n TabstopManager.prototype.onAfterExec = function (e) {\n if (e.command && !e.command.readOnly)\n this.updateLinkedFields();\n };\n TabstopManager.prototype.onChangeSelection = function () {\n if (!this.editor)\n return;\n var lead = this.editor.selection.lead;\n var anchor = this.editor.selection.anchor;\n var isEmpty = this.editor.selection.isEmpty();\n for (var i = 0; i < this.ranges.length; i++) {\n if (this.ranges[i].linked)\n continue;\n var containsLead = this.ranges[i].contains(lead.row, lead.column);\n var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column);\n if (containsLead && containsAnchor)\n return;\n }\n this.detach();\n };\n TabstopManager.prototype.onChangeSession = function () {\n this.detach();\n };\n TabstopManager.prototype.tabNext = function (dir) {\n var max = this.tabstops.length;\n var index = this.index + (dir || 1);\n index = Math.min(Math.max(index, 1), max);\n if (index == max)\n index = 0;\n this.selectTabstop(index);\n this.updateTabstopMarkers();\n if (index === 0) {\n this.detach();\n }\n };\n TabstopManager.prototype.selectTabstop = function (index) {\n this.$openTabstops = null;\n var ts = this.tabstops[this.index];\n if (ts)\n this.addTabstopMarkers(ts);\n this.index = index;\n ts = this.tabstops[this.index];\n if (!ts || !ts.length)\n return;\n this.selectedTabstop = ts;\n var range = ts.firstNonLinked || ts;\n if (ts.choices)\n range.cursor = range.start;\n if (!this.editor.inVirtualSelectionMode) {\n var sel = this.editor.multiSelect;\n sel.toSingleRange(range);\n for (var i = 0; i < ts.length; i++) {\n if (ts.hasLinkedRanges && ts[i].linked)\n continue;\n sel.addRange(ts[i].clone(), true);\n }\n }\n else {\n this.editor.selection.fromOrientedRange(range);\n }\n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n if (this.selectedTabstop && this.selectedTabstop.choices)\n this.editor.execCommand(\"startAutocomplete\", { matches: this.selectedTabstop.choices });\n };\n TabstopManager.prototype.addTabstops = function (tabstops, start, end) {\n var useLink = this.useLink || !this.editor.getOption(\"enableMultiselect\");\n if (!this.$openTabstops)\n this.$openTabstops = [];\n if (!tabstops[0]) {\n var p = Range.fromPoints(end, end);\n moveRelative(p.start, start);\n moveRelative(p.end, start);\n tabstops[0] = [p];\n tabstops[0].index = 0;\n }\n var i = this.index;\n var arg = [i + 1, 0];\n var ranges = this.ranges;\n var snippetId = this.snippetId = (this.snippetId || 0) + 1;\n tabstops.forEach(function (ts, index) {\n var dest = this.$openTabstops[index] || ts;\n dest.snippetId = snippetId;\n for (var i = 0; i < ts.length; i++) {\n var p = ts[i];\n var range = Range.fromPoints(p.start, p.end || p.start);\n movePoint(range.start, start);\n movePoint(range.end, start);\n range.original = p;\n range.tabstop = dest;\n ranges.push(range);\n if (dest != ts)\n dest.unshift(range);\n else\n dest[i] = range;\n if (p.fmtString || (dest.firstNonLinked && useLink)) {\n range.linked = true;\n dest.hasLinkedRanges = true;\n }\n else if (!dest.firstNonLinked)\n dest.firstNonLinked = range;\n }\n if (!dest.firstNonLinked)\n dest.hasLinkedRanges = false;\n if (dest === ts) {\n arg.push(dest);\n this.$openTabstops[index] = dest;\n }\n this.addTabstopMarkers(dest);\n dest.rangeList = dest.rangeList || new RangeList();\n dest.rangeList.$bias = 0;\n dest.rangeList.addList(dest);\n }, this);\n if (arg.length > 2) {\n if (this.tabstops.length)\n arg.push(arg.splice(2, 1)[0]);\n this.tabstops.splice.apply(this.tabstops, arg);\n }\n };\n TabstopManager.prototype.addTabstopMarkers = function (ts) {\n var session = this.session;\n ts.forEach(function (range) {\n if (!range.markerId)\n range.markerId = session.addMarker(range, \"ace_snippet-marker\", \"text\");\n });\n };\n TabstopManager.prototype.removeTabstopMarkers = function (ts) {\n var session = this.session;\n ts.forEach(function (range) {\n session.removeMarker(range.markerId);\n range.markerId = null;\n });\n };\n TabstopManager.prototype.updateTabstopMarkers = function () {\n if (!this.selectedTabstop)\n return;\n var currentSnippetId = this.selectedTabstop.snippetId;\n if (this.selectedTabstop.index === 0) {\n currentSnippetId--;\n }\n this.tabstops.forEach(function (ts) {\n if (ts.snippetId === currentSnippetId)\n this.addTabstopMarkers(ts);\n else\n this.removeTabstopMarkers(ts);\n }, this);\n };\n TabstopManager.prototype.removeRange = function (range) {\n var i = range.tabstop.indexOf(range);\n if (i != -1)\n range.tabstop.splice(i, 1);\n i = this.ranges.indexOf(range);\n if (i != -1)\n this.ranges.splice(i, 1);\n i = range.tabstop.rangeList.ranges.indexOf(range);\n if (i != -1)\n range.tabstop.splice(i, 1);\n this.session.removeMarker(range.markerId);\n if (!range.tabstop.length) {\n i = this.tabstops.indexOf(range.tabstop);\n if (i != -1)\n this.tabstops.splice(i, 1);\n if (!this.tabstops.length)\n this.detach();\n }\n };\n return TabstopManager;\n}());\nTabstopManager.prototype.keyboardHandler = new HashHandler();\nTabstopManager.prototype.keyboardHandler.bindKeys({\n \"Tab\": function (editor) {\n if (exports.snippetManager && exports.snippetManager.expandWithTab(editor))\n return;\n editor.tabstopManager.tabNext(1);\n editor.renderer.scrollCursorIntoView();\n },\n \"Shift-Tab\": function (editor) {\n editor.tabstopManager.tabNext(-1);\n editor.renderer.scrollCursorIntoView();\n },\n \"Esc\": function (editor) {\n editor.tabstopManager.detach();\n }\n});\nvar movePoint = function (point, diff) {\n if (point.row == 0)\n point.column += diff.column;\n point.row += diff.row;\n};\nvar moveRelative = function (point, start) {\n if (point.row == start.row)\n point.column -= start.column;\n point.row -= start.row;\n};\ndom.importCssString(\"\\n.ace_snippet-marker {\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n background: rgba(194, 193, 208, 0.09);\\n border: 1px dotted rgba(211, 208, 235, 0.62);\\n position: absolute;\\n}\", \"snippets.css\", false);\nexports.snippetManager = new SnippetManager();\nvar Editor = require(\"./editor\").Editor;\n(function () {\n this.insertSnippet = function (content, options) {\n return exports.snippetManager.insertSnippet(this, content, options);\n };\n this.expandSnippet = function (options) {\n return exports.snippetManager.expandWithTab(this, options);\n };\n}).call(Editor.prototype);\n\n});\n\nace.define(\"ace/autocomplete/popup\",[\"require\",\"exports\",\"module\",\"ace/virtual_renderer\",\"ace/editor\",\"ace/range\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/lib/dom\",\"ace/config\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar Renderer = require(\"../virtual_renderer\").VirtualRenderer;\nvar Editor = require(\"../editor\").Editor;\nvar Range = require(\"../range\").Range;\nvar event = require(\"../lib/event\");\nvar lang = require(\"../lib/lang\");\nvar dom = require(\"../lib/dom\");\nvar nls = require(\"../config\").nls;\nvar userAgent = require(\"./../lib/useragent\");\nvar getAriaId = function (index) {\n return \"suggest-aria-id:\".concat(index);\n};\nvar popupAriaRole = userAgent.isSafari ? \"menu\" : \"listbox\";\nvar optionAriaRole = userAgent.isSafari ? \"menuitem\" : \"option\";\nvar ariaActiveState = userAgent.isSafari ? \"aria-current\" : \"aria-selected\";\nvar $singleLineEditor = function (el) {\n var renderer = new Renderer(el);\n renderer.$maxLines = 4;\n var editor = new Editor(renderer);\n editor.setHighlightActiveLine(false);\n editor.setShowPrintMargin(false);\n editor.renderer.setShowGutter(false);\n editor.renderer.setHighlightGutterLine(false);\n editor.$mouseHandler.$focusTimeout = 0;\n editor.$highlightTagPending = true;\n return editor;\n};\nvar AcePopup = /** @class */ (function () {\n function AcePopup(parentNode) {\n var el = dom.createElement(\"div\");\n var popup = $singleLineEditor(el);\n if (parentNode) {\n parentNode.appendChild(el);\n }\n el.style.display = \"none\";\n popup.renderer.content.style.cursor = \"default\";\n popup.renderer.setStyle(\"ace_autocomplete\");\n popup.renderer.$textLayer.element.setAttribute(\"role\", popupAriaRole);\n popup.renderer.$textLayer.element.setAttribute(\"aria-roledescription\", nls(\"autocomplete.popup.aria-roledescription\", \"Autocomplete suggestions\"));\n popup.renderer.$textLayer.element.setAttribute(\"aria-label\", nls(\"autocomplete.popup.aria-label\", \"Autocomplete suggestions\"));\n popup.renderer.textarea.setAttribute(\"aria-hidden\", \"true\");\n popup.setOption(\"displayIndentGuides\", false);\n popup.setOption(\"dragDelay\", 150);\n var noop = function () { };\n popup.focus = noop;\n popup.$isFocused = true;\n popup.renderer.$cursorLayer.restartTimer = noop;\n popup.renderer.$cursorLayer.element.style.opacity = \"0\";\n popup.renderer.$maxLines = 8;\n popup.renderer.$keepTextAreaAtCursor = false;\n popup.setHighlightActiveLine(false);\n popup.session.highlight(\"\");\n popup.session.$searchHighlight.clazz = \"ace_highlight-marker\";\n popup.on(\"mousedown\", function (e) {\n var pos = e.getDocumentPosition();\n popup.selection.moveToPosition(pos);\n selectionMarker.start.row = selectionMarker.end.row = pos.row;\n e.stop();\n });\n var lastMouseEvent;\n var hoverMarker = new Range(-1, 0, -1, Infinity);\n var selectionMarker = new Range(-1, 0, -1, Infinity);\n selectionMarker.id = popup.session.addMarker(selectionMarker, \"ace_active-line\", \"fullLine\");\n popup.setSelectOnHover = function (val) {\n if (!val) {\n hoverMarker.id = popup.session.addMarker(hoverMarker, \"ace_line-hover\", \"fullLine\");\n }\n else if (hoverMarker.id) {\n popup.session.removeMarker(hoverMarker.id);\n hoverMarker.id = null;\n }\n };\n popup.setSelectOnHover(false);\n popup.on(\"mousemove\", function (e) {\n if (!lastMouseEvent) {\n lastMouseEvent = e;\n return;\n }\n if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) {\n return;\n }\n lastMouseEvent = e;\n lastMouseEvent.scrollTop = popup.renderer.scrollTop;\n popup.isMouseOver = true;\n var row = lastMouseEvent.getDocumentPosition().row;\n if (hoverMarker.start.row != row) {\n if (!hoverMarker.id)\n popup.setRow(row);\n setHoverMarker(row);\n }\n });\n popup.renderer.on(\"beforeRender\", function () {\n if (lastMouseEvent && hoverMarker.start.row != -1) {\n lastMouseEvent.$pos = null;\n var row = lastMouseEvent.getDocumentPosition().row;\n if (!hoverMarker.id)\n popup.setRow(row);\n setHoverMarker(row, true);\n }\n });\n popup.renderer.on(\"afterRender\", function () {\n var row = popup.getRow();\n var t = popup.renderer.$textLayer;\n var selected = /** @type {HTMLElement|null} */ (t.element.childNodes[row - t.config.firstRow]);\n var el = document.activeElement; // Active element is textarea of main editor\n if (selected !== popup.selectedNode && popup.selectedNode) {\n dom.removeCssClass(popup.selectedNode, \"ace_selected\");\n el.removeAttribute(\"aria-activedescendant\");\n popup.selectedNode.removeAttribute(ariaActiveState);\n popup.selectedNode.removeAttribute(\"id\");\n }\n popup.selectedNode = selected;\n if (selected) {\n dom.addCssClass(selected, \"ace_selected\");\n var ariaId = getAriaId(row);\n selected.id = ariaId;\n t.element.setAttribute(\"aria-activedescendant\", ariaId);\n el.setAttribute(\"aria-activedescendant\", ariaId);\n selected.setAttribute(\"role\", optionAriaRole);\n selected.setAttribute(\"aria-roledescription\", nls(\"autocomplete.popup.item.aria-roledescription\", \"item\"));\n selected.setAttribute(\"aria-label\", popup.getData(row).caption || popup.getData(row).value);\n selected.setAttribute(\"aria-setsize\", popup.data.length);\n selected.setAttribute(\"aria-posinset\", row + 1);\n selected.setAttribute(\"aria-describedby\", \"doc-tooltip\");\n selected.setAttribute(ariaActiveState, \"true\");\n }\n });\n var hideHoverMarker = function () { setHoverMarker(-1); };\n var setHoverMarker = function (row, suppressRedraw) {\n if (row !== hoverMarker.start.row) {\n hoverMarker.start.row = hoverMarker.end.row = row;\n if (!suppressRedraw)\n popup.session._emit(\"changeBackMarker\");\n popup._emit(\"changeHoverMarker\");\n }\n };\n popup.getHoveredRow = function () {\n return hoverMarker.start.row;\n };\n event.addListener(popup.container, \"mouseout\", function () {\n popup.isMouseOver = false;\n hideHoverMarker();\n });\n popup.on(\"hide\", hideHoverMarker);\n popup.on(\"changeSelection\", hideHoverMarker);\n popup.session.doc.getLength = function () {\n return popup.data.length;\n };\n popup.session.doc.getLine = function (i) {\n var data = popup.data[i];\n if (typeof data == \"string\")\n return data;\n return (data && data.value) || \"\";\n };\n var bgTokenizer = popup.session.bgTokenizer;\n bgTokenizer.$tokenizeRow = function (row) {\n var data = popup.data[row];\n var tokens = [];\n if (!data)\n return tokens;\n if (typeof data == \"string\")\n data = { value: data };\n var caption = data.caption || data.value || data.name;\n function addToken(value, className) {\n value && tokens.push({\n type: (data.className || \"\") + (className || \"\"),\n value: value\n });\n }\n var lower = caption.toLowerCase();\n var filterText = (popup.filterText || \"\").toLowerCase();\n var lastIndex = 0;\n var lastI = 0;\n for (var i = 0; i <= filterText.length; i++) {\n if (i != lastI && (data.matchMask & (1 << i) || i == filterText.length)) {\n var sub = filterText.slice(lastI, i);\n lastI = i;\n var index = lower.indexOf(sub, lastIndex);\n if (index == -1)\n continue;\n addToken(caption.slice(lastIndex, index), \"\");\n lastIndex = index + sub.length;\n addToken(caption.slice(index, lastIndex), \"completion-highlight\");\n }\n }\n addToken(caption.slice(lastIndex, caption.length), \"\");\n tokens.push({ type: \"completion-spacer\", value: \" \" });\n if (data.meta)\n tokens.push({ type: \"completion-meta\", value: data.meta });\n if (data.message)\n tokens.push({ type: \"completion-message\", value: data.message });\n return tokens;\n };\n bgTokenizer.$updateOnChange = noop;\n bgTokenizer.start = noop;\n popup.session.$computeWidth = function () {\n return this.screenWidth = 0;\n };\n popup.isOpen = false;\n popup.isTopdown = false;\n popup.autoSelect = true;\n popup.filterText = \"\";\n popup.isMouseOver = false;\n popup.data = [];\n popup.setData = function (list, filterText) {\n popup.filterText = filterText || \"\";\n popup.setValue(lang.stringRepeat(\"\\n\", list.length), -1);\n popup.data = list || [];\n popup.setRow(0);\n };\n popup.getData = function (row) {\n return popup.data[row];\n };\n popup.getRow = function () {\n return selectionMarker.start.row;\n };\n popup.setRow = function (line) {\n line = Math.max(this.autoSelect ? 0 : -1, Math.min(this.data.length - 1, line));\n if (selectionMarker.start.row != line) {\n popup.selection.clearSelection();\n selectionMarker.start.row = selectionMarker.end.row = line || 0;\n popup.session._emit(\"changeBackMarker\");\n popup.moveCursorTo(line || 0, 0);\n if (popup.isOpen)\n popup._signal(\"select\");\n }\n };\n popup.on(\"changeSelection\", function () {\n if (popup.isOpen)\n popup.setRow(popup.selection.lead.row);\n popup.renderer.scrollCursorIntoView();\n });\n popup.hide = function () {\n this.container.style.display = \"none\";\n popup.anchorPos = null;\n popup.anchor = null;\n if (popup.isOpen) {\n popup.isOpen = false;\n this._signal(\"hide\");\n }\n };\n popup.tryShow = function (pos, lineHeight, anchor, forceShow) {\n if (!forceShow && popup.isOpen && popup.anchorPos && popup.anchor &&\n popup.anchorPos.top === pos.top && popup.anchorPos.left === pos.left &&\n popup.anchor === anchor) {\n return true;\n }\n var el = this.container;\n var screenHeight = window.innerHeight;\n var screenWidth = window.innerWidth;\n var renderer = this.renderer;\n var maxH = renderer.$maxLines * lineHeight * 1.4;\n var dims = { top: 0, bottom: 0, left: 0 };\n var spaceBelow = screenHeight - pos.top - 3 * this.$borderSize - lineHeight;\n var spaceAbove = pos.top - 3 * this.$borderSize;\n if (!anchor) {\n if (spaceAbove <= spaceBelow || spaceBelow >= maxH) {\n anchor = \"bottom\";\n }\n else {\n anchor = \"top\";\n }\n }\n if (anchor === \"top\") {\n dims.bottom = pos.top - this.$borderSize;\n dims.top = dims.bottom - maxH;\n }\n else if (anchor === \"bottom\") {\n dims.top = pos.top + lineHeight + this.$borderSize;\n dims.bottom = dims.top + maxH;\n }\n var fitsX = dims.top >= 0 && dims.bottom <= screenHeight;\n if (!forceShow && !fitsX) {\n return false;\n }\n if (!fitsX) {\n if (anchor === \"top\") {\n renderer.$maxPixelHeight = spaceAbove;\n }\n else {\n renderer.$maxPixelHeight = spaceBelow;\n }\n }\n else {\n renderer.$maxPixelHeight = null;\n }\n if (anchor === \"top\") {\n el.style.top = \"\";\n el.style.bottom = (screenHeight - dims.bottom) + \"px\";\n popup.isTopdown = false;\n }\n else {\n el.style.top = dims.top + \"px\";\n el.style.bottom = \"\";\n popup.isTopdown = true;\n }\n el.style.display = \"\";\n var left = pos.left;\n if (left + el.offsetWidth > screenWidth)\n left = screenWidth - el.offsetWidth;\n el.style.left = left + \"px\";\n el.style.right = \"\";\n if (!popup.isOpen) {\n popup.isOpen = true;\n this._signal(\"show\");\n lastMouseEvent = null;\n }\n popup.anchorPos = pos;\n popup.anchor = anchor;\n return true;\n };\n popup.show = function (pos, lineHeight, topdownOnly) {\n this.tryShow(pos, lineHeight, topdownOnly ? \"bottom\" : undefined, true);\n };\n popup.goTo = function (where) {\n var row = this.getRow();\n var max = this.session.getLength() - 1;\n switch (where) {\n case \"up\":\n row = row <= 0 ? max : row - 1;\n break;\n case \"down\":\n row = row >= max ? -1 : row + 1;\n break;\n case \"start\":\n row = 0;\n break;\n case \"end\":\n row = max;\n break;\n }\n this.setRow(row);\n };\n popup.getTextLeftOffset = function () {\n return this.$borderSize + this.renderer.$padding + this.$imageSize;\n };\n popup.$imageSize = 0;\n popup.$borderSize = 1;\n return popup;\n }\n return AcePopup;\n}());\ndom.importCssString(\"\\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\\n background-color: #CAD6FA;\\n z-index: 1;\\n}\\n.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\\n background-color: #3a674e;\\n}\\n.ace_editor.ace_autocomplete .ace_line-hover {\\n border: 1px solid #abbffe;\\n margin-top: -1px;\\n background: rgba(233,233,253,0.4);\\n position: absolute;\\n z-index: 2;\\n}\\n.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\\n border: 1px solid rgba(109, 150, 13, 0.8);\\n background: rgba(58, 103, 78, 0.62);\\n}\\n.ace_completion-meta {\\n opacity: 0.5;\\n margin-left: 0.9em;\\n}\\n.ace_completion-message {\\n margin-left: 0.9em;\\n color: blue;\\n}\\n.ace_editor.ace_autocomplete .ace_completion-highlight{\\n color: #2d69c7;\\n}\\n.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\\n color: #93ca12;\\n}\\n.ace_editor.ace_autocomplete {\\n width: 300px;\\n z-index: 200000;\\n border: 1px lightgray solid;\\n position: fixed;\\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n line-height: 1.4;\\n background: #fefefe;\\n color: #111;\\n}\\n.ace_dark.ace_editor.ace_autocomplete {\\n border: 1px #484747 solid;\\n box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\\n line-height: 1.4;\\n background: #25282c;\\n color: #c1c1c1;\\n}\\n.ace_autocomplete .ace_text-layer {\\n width: calc(100% - 8px);\\n}\\n.ace_autocomplete .ace_line {\\n display: flex;\\n align-items: center;\\n}\\n.ace_autocomplete .ace_line > * {\\n min-width: 0;\\n flex: 0 0 auto;\\n}\\n.ace_autocomplete .ace_line .ace_ {\\n flex: 0 1 auto;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.ace_autocomplete .ace_completion-spacer {\\n flex: 1;\\n}\\n.ace_autocomplete.ace_loading:after {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0px;\\n height: 2px;\\n width: 8%;\\n background: blue;\\n z-index: 100;\\n animation: ace_progress 3s infinite linear;\\n animation-delay: 300ms;\\n transform: translateX(-100%) scaleX(1);\\n}\\n@keyframes ace_progress {\\n 0% { transform: translateX(-100%) scaleX(1) }\\n 50% { transform: translateX(625%) scaleX(2) } \\n 100% { transform: translateX(1500%) scaleX(3) } \\n}\\n@media (prefers-reduced-motion) {\\n .ace_autocomplete.ace_loading:after {\\n transform: translateX(625%) scaleX(2);\\n animation: none;\\n }\\n}\\n\", \"autocompletion.css\", false);\nexports.AcePopup = AcePopup;\nexports.$singleLineEditor = $singleLineEditor;\nexports.getAriaId = getAriaId;\n\n});\n\nace.define(\"ace/autocomplete/inline_screenreader\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar AceInlineScreenReader = /** @class */ (function () {\n function AceInlineScreenReader(editor) {\n this.editor = editor;\n this.screenReaderDiv = document.createElement(\"div\");\n this.screenReaderDiv.classList.add(\"ace_screenreader-only\");\n this.editor.container.appendChild(this.screenReaderDiv);\n }\n AceInlineScreenReader.prototype.setScreenReaderContent = function (content) {\n if (!this.popup && this.editor.completer && /**@type{import(\"../autocomplete\").Autocomplete}*/ (this.editor.completer).popup) {\n this.popup = /**@type{import(\"../autocomplete\").Autocomplete}*/ (this.editor.completer).popup;\n this.popup.renderer.on(\"afterRender\", function () {\n var row = this.popup.getRow();\n var t = this.popup.renderer.$textLayer;\n var selected = t.element.childNodes[row - t.config.firstRow];\n if (selected) {\n var idString = \"doc-tooltip \";\n for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) {\n idString += \"ace-inline-screenreader-line-\".concat(lineIndex, \" \");\n }\n selected.setAttribute(\"aria-describedby\", idString);\n }\n }.bind(this));\n }\n while (this.screenReaderDiv.firstChild) {\n this.screenReaderDiv.removeChild(this.screenReaderDiv.firstChild);\n }\n this._lines = content.split(/\\r\\n|\\r|\\n/);\n var codeElement = this.createCodeBlock();\n this.screenReaderDiv.appendChild(codeElement);\n };\n AceInlineScreenReader.prototype.destroy = function () {\n this.screenReaderDiv.remove();\n };\n AceInlineScreenReader.prototype.createCodeBlock = function () {\n var container = document.createElement(\"pre\");\n container.setAttribute(\"id\", \"ace-inline-screenreader\");\n for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) {\n var codeElement = document.createElement(\"code\");\n codeElement.setAttribute(\"id\", \"ace-inline-screenreader-line-\".concat(lineIndex));\n var line = document.createTextNode(this._lines[lineIndex]);\n codeElement.appendChild(line);\n container.appendChild(codeElement);\n }\n return container;\n };\n return AceInlineScreenReader;\n}());\nexports.AceInlineScreenReader = AceInlineScreenReader;\n\n});\n\nace.define(\"ace/autocomplete/inline\",[\"require\",\"exports\",\"module\",\"ace/snippets\",\"ace/autocomplete/inline_screenreader\"], function(require, exports, module){\"use strict\";\nvar snippetManager = require(\"../snippets\").snippetManager;\nvar AceInlineScreenReader = require(\"./inline_screenreader\").AceInlineScreenReader;\nvar AceInline = /** @class */ (function () {\n function AceInline() {\n this.editor = null;\n }\n AceInline.prototype.show = function (editor, completion, prefix) {\n prefix = prefix || \"\";\n if (editor && this.editor && this.editor !== editor) {\n this.hide();\n this.editor = null;\n this.inlineScreenReader = null;\n }\n if (!editor || !completion) {\n return false;\n }\n if (!this.inlineScreenReader) {\n this.inlineScreenReader = new AceInlineScreenReader(editor);\n }\n var displayText = completion.snippet ? snippetManager.getDisplayTextForSnippet(editor, completion.snippet) : completion.value;\n if (completion.hideInlinePreview || !displayText || !displayText.startsWith(prefix)) {\n return false;\n }\n this.editor = editor;\n this.inlineScreenReader.setScreenReaderContent(displayText);\n displayText = displayText.slice(prefix.length);\n if (displayText === \"\") {\n editor.removeGhostText();\n }\n else {\n editor.setGhostText(displayText);\n }\n return true;\n };\n AceInline.prototype.isOpen = function () {\n if (!this.editor) {\n return false;\n }\n return !!this.editor.renderer.$ghostText;\n };\n AceInline.prototype.hide = function () {\n if (!this.editor) {\n return false;\n }\n this.editor.removeGhostText();\n return true;\n };\n AceInline.prototype.destroy = function () {\n this.hide();\n this.editor = null;\n if (this.inlineScreenReader) {\n this.inlineScreenReader.destroy();\n this.inlineScreenReader = null;\n }\n };\n return AceInline;\n}());\nexports.AceInline = AceInline;\n\n});\n\nace.define(\"ace/autocomplete/util\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.parForEach = function (array, fn, callback) {\n var completed = 0;\n var arLength = array.length;\n if (arLength === 0)\n callback();\n for (var i = 0; i < arLength; i++) {\n fn(array[i], function (result, err) {\n completed++;\n if (completed === arLength)\n callback(result, err);\n });\n }\n};\nvar ID_REGEX = /[a-zA-Z_0-9\\$\\-\\u00A2-\\u2000\\u2070-\\uFFFF]/;\nexports.retrievePrecedingIdentifier = function (text, pos, regex) {\n regex = regex || ID_REGEX;\n var buf = [];\n for (var i = pos - 1; i >= 0; i--) {\n if (regex.test(text[i]))\n buf.push(text[i]);\n else\n break;\n }\n return buf.reverse().join(\"\");\n};\nexports.retrieveFollowingIdentifier = function (text, pos, regex) {\n regex = regex || ID_REGEX;\n var buf = [];\n for (var i = pos; i < text.length; i++) {\n if (regex.test(text[i]))\n buf.push(text[i]);\n else\n break;\n }\n return buf;\n};\nexports.getCompletionPrefix = function (editor) {\n var pos = editor.getCursorPosition();\n var line = editor.session.getLine(pos.row);\n var prefix;\n editor.completers.forEach(function (completer) {\n if (completer.identifierRegexps) {\n completer.identifierRegexps.forEach(function (identifierRegex) {\n if (!prefix && identifierRegex)\n prefix = this.retrievePrecedingIdentifier(line, pos.column, identifierRegex);\n }.bind(this));\n }\n }.bind(this));\n return prefix || this.retrievePrecedingIdentifier(line, pos.column);\n};\nexports.triggerAutocomplete = function (editor, previousChar) {\n var previousChar = previousChar == null\n ? editor.session.getPrecedingCharacter()\n : previousChar;\n return editor.completers.some(function (completer) {\n if (completer.triggerCharacters && Array.isArray(completer.triggerCharacters)) {\n return completer.triggerCharacters.includes(previousChar);\n }\n });\n};\n\n});\n\nace.define(\"ace/autocomplete\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\",\"ace/autocomplete/popup\",\"ace/autocomplete/inline\",\"ace/autocomplete/popup\",\"ace/autocomplete/util\",\"ace/lib/lang\",\"ace/lib/dom\",\"ace/snippets\",\"ace/config\",\"ace/lib/event\",\"ace/lib/scroll\"], function(require, exports, module){\"use strict\";\nvar HashHandler = require(\"./keyboard/hash_handler\").HashHandler;\nvar AcePopup = require(\"./autocomplete/popup\").AcePopup;\nvar AceInline = require(\"./autocomplete/inline\").AceInline;\nvar getAriaId = require(\"./autocomplete/popup\").getAriaId;\nvar util = require(\"./autocomplete/util\");\nvar lang = require(\"./lib/lang\");\nvar dom = require(\"./lib/dom\");\nvar snippetManager = require(\"./snippets\").snippetManager;\nvar config = require(\"./config\");\nvar event = require(\"./lib/event\");\nvar preventParentScroll = require(\"./lib/scroll\").preventParentScroll;\nvar destroyCompleter = function (e, editor) {\n editor.completer && editor.completer.destroy();\n};\nvar Autocomplete = /** @class */ (function () {\n function Autocomplete() {\n this.autoInsert = false;\n this.autoSelect = true;\n this.autoShown = false;\n this.exactMatch = false;\n this.inlineEnabled = false;\n this.keyboardHandler = new HashHandler();\n this.keyboardHandler.bindKeys(this.commands);\n this.parentNode = null;\n this.setSelectOnHover = false;\n this.hasSeen = new Set();\n this.showLoadingState = false;\n this.stickySelectionDelay = 500;\n this.blurListener = this.blurListener.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.mousedownListener = this.mousedownListener.bind(this);\n this.mousewheelListener = this.mousewheelListener.bind(this);\n this.onLayoutChange = this.onLayoutChange.bind(this);\n this.changeTimer = lang.delayedCall(function () {\n this.updateCompletions(true);\n }.bind(this));\n this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50);\n this.popupTimer = lang.delayedCall(this.$updatePopupPosition.bind(this), 50);\n this.stickySelectionTimer = lang.delayedCall(function () {\n this.stickySelection = true;\n }.bind(this), this.stickySelectionDelay);\n this.$firstOpenTimer = lang.delayedCall(/**@this{Autocomplete}*/ function () {\n var initialPosition = this.completionProvider && this.completionProvider.initialPosition;\n if (this.autoShown || (this.popup && this.popup.isOpen) || !initialPosition || this.editor.completers.length === 0)\n return;\n this.completions = new FilteredList(Autocomplete.completionsForLoading);\n this.openPopup(this.editor, initialPosition.prefix, false);\n this.popup.renderer.setStyle(\"ace_loading\", true);\n }.bind(this), this.stickySelectionDelay);\n }\n Object.defineProperty(Autocomplete, \"completionsForLoading\", {\n get: function () {\n return [{\n caption: config.nls(\"autocomplete.loading\", \"Loading...\"),\n value: \"\"\n }];\n },\n enumerable: false,\n configurable: true\n });\n Autocomplete.prototype.$init = function () {\n this.popup = new AcePopup(this.parentNode || document.body || document.documentElement);\n this.popup.on(\"click\", function (e) {\n this.insertMatch();\n e.stop();\n }.bind(this));\n this.popup.focus = this.editor.focus.bind(this.editor);\n this.popup.on(\"show\", this.$onPopupShow.bind(this));\n this.popup.on(\"hide\", this.$onHidePopup.bind(this));\n this.popup.on(\"select\", this.$onPopupChange.bind(this));\n event.addListener(this.popup.container, \"mouseout\", this.mouseOutListener.bind(this));\n this.popup.on(\"changeHoverMarker\", this.tooltipTimer.bind(null, null));\n this.popup.renderer.on(\"afterRender\", this.$onPopupRender.bind(this));\n return this.popup;\n };\n Autocomplete.prototype.$initInline = function () {\n if (!this.inlineEnabled || this.inlineRenderer)\n return;\n this.inlineRenderer = new AceInline();\n return this.inlineRenderer;\n };\n Autocomplete.prototype.getPopup = function () {\n return this.popup || this.$init();\n };\n Autocomplete.prototype.$onHidePopup = function () {\n if (this.inlineRenderer) {\n this.inlineRenderer.hide();\n }\n this.hideDocTooltip();\n this.stickySelectionTimer.cancel();\n this.popupTimer.cancel();\n this.stickySelection = false;\n };\n Autocomplete.prototype.$seen = function (completion) {\n if (!this.hasSeen.has(completion) && completion && completion.completer && completion.completer.onSeen && typeof completion.completer.onSeen === \"function\") {\n completion.completer.onSeen(this.editor, completion);\n this.hasSeen.add(completion);\n }\n };\n Autocomplete.prototype.$onPopupChange = function (hide) {\n if (this.inlineRenderer && this.inlineEnabled) {\n var completion = hide ? null : this.popup.getData(this.popup.getRow());\n this.$updateGhostText(completion);\n if (this.popup.isMouseOver && this.setSelectOnHover) {\n this.tooltipTimer.call(null, null);\n return;\n }\n this.popupTimer.schedule();\n this.tooltipTimer.schedule();\n }\n else {\n this.popupTimer.call(null, null);\n this.tooltipTimer.call(null, null);\n }\n };\n Autocomplete.prototype.$updateGhostText = function (completion) {\n var row = this.base.row;\n var column = this.base.column;\n var cursorColumn = this.editor.getCursorPosition().column;\n var prefix = this.editor.session.getLine(row).slice(column, cursorColumn);\n if (!this.inlineRenderer.show(this.editor, completion, prefix)) {\n this.inlineRenderer.hide();\n }\n else {\n this.$seen(completion);\n }\n };\n Autocomplete.prototype.$onPopupRender = function () {\n var inlineEnabled = this.inlineRenderer && this.inlineEnabled;\n if (this.completions && this.completions.filtered && this.completions.filtered.length > 0) {\n for (var i = this.popup.getFirstVisibleRow(); i <= this.popup.getLastVisibleRow(); i++) {\n var completion = this.popup.getData(i);\n if (completion && (!inlineEnabled || completion.hideInlinePreview)) {\n this.$seen(completion);\n }\n }\n }\n };\n Autocomplete.prototype.$onPopupShow = function (hide) {\n this.$onPopupChange(hide);\n this.stickySelection = false;\n if (this.stickySelectionDelay >= 0)\n this.stickySelectionTimer.schedule(this.stickySelectionDelay);\n };\n Autocomplete.prototype.observeLayoutChanges = function () {\n if (this.$elements || !this.editor)\n return;\n window.addEventListener(\"resize\", this.onLayoutChange, { passive: true });\n window.addEventListener(\"wheel\", this.mousewheelListener);\n var el = this.editor.container.parentNode;\n var elements = [];\n while (el) {\n elements.push(el);\n el.addEventListener(\"scroll\", this.onLayoutChange, { passive: true });\n el = el.parentNode;\n }\n this.$elements = elements;\n };\n Autocomplete.prototype.unObserveLayoutChanges = function () {\n var _this = this;\n window.removeEventListener(\"resize\", this.onLayoutChange, { passive: true });\n window.removeEventListener(\"wheel\", this.mousewheelListener);\n this.$elements && this.$elements.forEach(function (el) {\n el.removeEventListener(\"scroll\", _this.onLayoutChange, { passive: true });\n });\n this.$elements = null;\n };\n Autocomplete.prototype.onLayoutChange = function () {\n if (!this.popup.isOpen)\n return this.unObserveLayoutChanges();\n this.$updatePopupPosition();\n this.updateDocTooltip();\n };\n Autocomplete.prototype.$updatePopupPosition = function () {\n var editor = this.editor;\n var renderer = editor.renderer;\n var lineHeight = renderer.layerConfig.lineHeight;\n var pos = renderer.$cursorLayer.getPixelPosition(this.base, true);\n pos.left -= this.popup.getTextLeftOffset();\n var rect = editor.container.getBoundingClientRect();\n pos.top += rect.top - renderer.layerConfig.offset;\n pos.left += rect.left - editor.renderer.scrollLeft;\n pos.left += renderer.gutterWidth;\n var posGhostText = {\n top: pos.top,\n left: pos.left\n };\n if (renderer.$ghostText && renderer.$ghostTextWidget) {\n if (this.base.row === renderer.$ghostText.position.row) {\n posGhostText.top += renderer.$ghostTextWidget.el.offsetHeight;\n }\n }\n var editorContainerBottom = editor.container.getBoundingClientRect().bottom - lineHeight;\n var lowestPosition = editorContainerBottom < posGhostText.top ?\n { top: editorContainerBottom, left: posGhostText.left } :\n posGhostText;\n if (this.popup.tryShow(lowestPosition, lineHeight, \"bottom\")) {\n return;\n }\n if (this.popup.tryShow(pos, lineHeight, \"top\")) {\n return;\n }\n this.popup.show(pos, lineHeight);\n };\n Autocomplete.prototype.openPopup = function (editor, prefix, keepPopupPosition) {\n this.$firstOpenTimer.cancel();\n if (!this.popup)\n this.$init();\n if (this.inlineEnabled && !this.inlineRenderer)\n this.$initInline();\n this.popup.autoSelect = this.autoSelect;\n this.popup.setSelectOnHover(this.setSelectOnHover);\n var oldRow = this.popup.getRow();\n var previousSelectedItem = this.popup.data[oldRow];\n this.popup.setData(this.completions.filtered, this.completions.filterText);\n if (this.editor.textInput.setAriaOptions) {\n this.editor.textInput.setAriaOptions({\n activeDescendant: getAriaId(this.popup.getRow()),\n inline: this.inlineEnabled\n });\n }\n editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n var newRow;\n if (this.stickySelection)\n newRow = this.popup.data.indexOf(previousSelectedItem);\n if (!newRow || newRow === -1)\n newRow = 0;\n this.popup.setRow(this.autoSelect ? newRow : -1);\n if (newRow === oldRow && previousSelectedItem !== this.completions.filtered[newRow])\n this.$onPopupChange();\n var inlineEnabled = this.inlineRenderer && this.inlineEnabled;\n if (newRow === oldRow && inlineEnabled) {\n var completion = this.popup.getData(this.popup.getRow());\n this.$updateGhostText(completion);\n }\n if (!keepPopupPosition) {\n this.popup.setTheme(editor.getTheme());\n this.popup.setFontSize(editor.getFontSize());\n this.$updatePopupPosition();\n if (this.tooltipNode) {\n this.updateDocTooltip();\n }\n }\n this.changeTimer.cancel();\n this.observeLayoutChanges();\n };\n Autocomplete.prototype.detach = function () {\n if (this.editor) {\n this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);\n this.editor.off(\"changeSelection\", this.changeListener);\n this.editor.off(\"blur\", this.blurListener);\n this.editor.off(\"mousedown\", this.mousedownListener);\n this.editor.off(\"mousewheel\", this.mousewheelListener);\n }\n this.$firstOpenTimer.cancel();\n this.changeTimer.cancel();\n this.hideDocTooltip();\n if (this.completionProvider) {\n this.completionProvider.detach();\n }\n if (this.popup && this.popup.isOpen)\n this.popup.hide();\n if (this.popup && this.popup.renderer) {\n this.popup.renderer.off(\"afterRender\", this.$onPopupRender);\n }\n if (this.base)\n this.base.detach();\n this.activated = false;\n this.completionProvider = this.completions = this.base = null;\n this.unObserveLayoutChanges();\n };\n Autocomplete.prototype.changeListener = function (e) {\n var cursor = this.editor.selection.lead;\n if (cursor.row != this.base.row || cursor.column < this.base.column) {\n this.detach();\n }\n if (this.activated)\n this.changeTimer.schedule();\n else\n this.detach();\n };\n Autocomplete.prototype.blurListener = function (e) {\n var el = document.activeElement;\n var text = this.editor.textInput.getElement();\n var fromTooltip = e.relatedTarget && this.tooltipNode && this.tooltipNode.contains(e.relatedTarget);\n var container = this.popup && this.popup.container;\n if (el != text && el.parentNode != container && !fromTooltip\n && el != this.tooltipNode && e.relatedTarget != text) {\n this.detach();\n }\n };\n Autocomplete.prototype.mousedownListener = function (e) {\n this.detach();\n };\n Autocomplete.prototype.mousewheelListener = function (e) {\n if (this.popup && !this.popup.isMouseOver)\n this.detach();\n };\n Autocomplete.prototype.mouseOutListener = function (e) {\n if (this.popup.isOpen)\n this.$updatePopupPosition();\n };\n Autocomplete.prototype.goTo = function (where) {\n this.popup.goTo(where);\n };\n Autocomplete.prototype.insertMatch = function (data, options) {\n if (!data)\n data = this.popup.getData(this.popup.getRow());\n if (!data)\n return false;\n if (data.value === \"\") // Explicitly given nothing to insert, e.g. \"No suggestion state\"\n return this.detach();\n var completions = this.completions;\n var result = this.getCompletionProvider().insertMatch(this.editor, data, completions.filterText, options);\n if (this.completions == completions)\n this.detach();\n return result;\n };\n Autocomplete.prototype.showPopup = function (editor, options) {\n if (this.editor)\n this.detach();\n this.activated = true;\n this.editor = editor;\n if (editor.completer != this) {\n if (editor.completer)\n editor.completer.detach();\n editor.completer = this;\n }\n editor.on(\"changeSelection\", this.changeListener);\n editor.on(\"blur\", this.blurListener);\n editor.on(\"mousedown\", this.mousedownListener);\n editor.on(\"mousewheel\", this.mousewheelListener);\n this.updateCompletions(false, options);\n };\n Autocomplete.prototype.getCompletionProvider = function (initialPosition) {\n if (!this.completionProvider)\n this.completionProvider = new CompletionProvider(initialPosition);\n return this.completionProvider;\n };\n Autocomplete.prototype.gatherCompletions = function (editor, callback) {\n return this.getCompletionProvider().gatherCompletions(editor, callback);\n };\n Autocomplete.prototype.updateCompletions = function (keepPopupPosition, options) {\n if (keepPopupPosition && this.base && this.completions) {\n var pos = this.editor.getCursorPosition();\n var prefix = this.editor.session.getTextRange({ start: this.base, end: pos });\n if (prefix == this.completions.filterText)\n return;\n this.completions.setFilter(prefix);\n if (!this.completions.filtered.length)\n return this.detach();\n if (this.completions.filtered.length == 1\n && this.completions.filtered[0].value == prefix\n && !this.completions.filtered[0].snippet)\n return this.detach();\n this.openPopup(this.editor, prefix, keepPopupPosition);\n return;\n }\n if (options && options.matches) {\n var pos = this.editor.getSelectionRange().start;\n this.base = this.editor.session.doc.createAnchor(pos.row, pos.column);\n this.base.$insertRight = true;\n this.completions = new FilteredList(options.matches);\n this.getCompletionProvider().completions = this.completions;\n return this.openPopup(this.editor, \"\", keepPopupPosition);\n }\n var session = this.editor.getSession();\n var pos = this.editor.getCursorPosition();\n var prefix = util.getCompletionPrefix(this.editor);\n this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length);\n this.base.$insertRight = true;\n var completionOptions = {\n exactMatch: this.exactMatch,\n ignoreCaption: this.ignoreCaption\n };\n this.getCompletionProvider({\n prefix: prefix,\n pos: pos\n }).provideCompletions(this.editor, completionOptions, \n function (err, completions, finished) {\n var filtered = completions.filtered;\n var prefix = util.getCompletionPrefix(this.editor);\n this.$firstOpenTimer.cancel();\n if (finished) {\n if (!filtered.length) {\n var emptyMessage = !this.autoShown && this.emptyMessage;\n if (typeof emptyMessage == \"function\")\n emptyMessage = this.emptyMessage(prefix);\n if (emptyMessage) {\n var completionsForEmpty = [{\n caption: emptyMessage,\n value: \"\"\n }\n ];\n this.completions = new FilteredList(completionsForEmpty);\n this.openPopup(this.editor, prefix, keepPopupPosition);\n this.popup.renderer.setStyle(\"ace_loading\", false);\n this.popup.renderer.setStyle(\"ace_empty-message\", true);\n return;\n }\n return this.detach();\n }\n if (filtered.length == 1 && filtered[0].value == prefix\n && !filtered[0].snippet)\n return this.detach();\n if (this.autoInsert && !this.autoShown && filtered.length == 1)\n return this.insertMatch(filtered[0]);\n }\n this.completions = !finished && this.showLoadingState ?\n new FilteredList(Autocomplete.completionsForLoading.concat(filtered), completions.filterText) :\n completions;\n this.openPopup(this.editor, prefix, keepPopupPosition);\n this.popup.renderer.setStyle(\"ace_empty-message\", false);\n this.popup.renderer.setStyle(\"ace_loading\", !finished);\n }.bind(this));\n if (this.showLoadingState && !this.autoShown && !(this.popup && this.popup.isOpen)) {\n this.$firstOpenTimer.delay(this.stickySelectionDelay / 2);\n }\n };\n Autocomplete.prototype.cancelContextMenu = function () {\n this.editor.$mouseHandler.cancelContextMenu();\n };\n Autocomplete.prototype.updateDocTooltip = function () {\n var popup = this.popup;\n var all = this.completions.filtered;\n var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]);\n var doc = null;\n if (!selected || !this.editor || !this.popup.isOpen)\n return this.hideDocTooltip();\n var completersLength = this.editor.completers.length;\n for (var i = 0; i < completersLength; i++) {\n var completer = this.editor.completers[i];\n if (completer.getDocTooltip && selected.completerId === completer.id) {\n doc = completer.getDocTooltip(selected);\n break;\n }\n }\n if (!doc && typeof selected != \"string\")\n doc = selected;\n if (typeof doc == \"string\")\n doc = { docText: doc };\n if (!doc || !(doc.docHTML || doc.docText))\n return this.hideDocTooltip();\n this.showDocTooltip(doc);\n };\n Autocomplete.prototype.showDocTooltip = function (item) {\n if (!this.tooltipNode) {\n this.tooltipNode = dom.createElement(\"div\");\n this.tooltipNode.style.margin = \"0\";\n this.tooltipNode.style.pointerEvents = \"auto\";\n this.tooltipNode.style.overscrollBehavior = \"contain\";\n this.tooltipNode.tabIndex = -1;\n this.tooltipNode.onblur = this.blurListener.bind(this);\n this.tooltipNode.onclick = this.onTooltipClick.bind(this);\n this.tooltipNode.id = \"doc-tooltip\";\n this.tooltipNode.setAttribute(\"role\", \"tooltip\");\n this.tooltipNode.addEventListener(\"wheel\", preventParentScroll);\n }\n var theme = this.editor.renderer.theme;\n this.tooltipNode.className = \"ace_tooltip ace_doc-tooltip \" +\n (theme.isDark ? \"ace_dark \" : \"\") + (theme.cssClass || \"\");\n var tooltipNode = this.tooltipNode;\n if (item.docHTML) {\n tooltipNode.innerHTML = item.docHTML;\n }\n else if (item.docText) {\n tooltipNode.textContent = item.docText;\n }\n if (!tooltipNode.parentNode)\n this.popup.container.appendChild(this.tooltipNode);\n var popup = this.popup;\n var rect = popup.container.getBoundingClientRect();\n tooltipNode.style.top = popup.container.style.top;\n tooltipNode.style.bottom = popup.container.style.bottom;\n tooltipNode.style.display = \"block\";\n if (window.innerWidth - rect.right < 320) {\n if (rect.left < 320) {\n if (popup.isTopdown) {\n tooltipNode.style.top = rect.bottom + \"px\";\n tooltipNode.style.left = rect.left + \"px\";\n tooltipNode.style.right = \"\";\n tooltipNode.style.bottom = \"\";\n }\n else {\n tooltipNode.style.top = popup.container.offsetTop - tooltipNode.offsetHeight + \"px\";\n tooltipNode.style.left = rect.left + \"px\";\n tooltipNode.style.right = \"\";\n tooltipNode.style.bottom = \"\";\n }\n }\n else {\n tooltipNode.style.right = window.innerWidth - rect.left + \"px\";\n tooltipNode.style.left = \"\";\n }\n }\n else {\n tooltipNode.style.left = (rect.right + 1) + \"px\";\n tooltipNode.style.right = \"\";\n }\n };\n Autocomplete.prototype.hideDocTooltip = function () {\n this.tooltipTimer.cancel();\n if (!this.tooltipNode)\n return;\n var el = this.tooltipNode;\n if (!this.editor.isFocused() && document.activeElement == el)\n this.editor.focus();\n this.tooltipNode = null;\n if (el.parentNode)\n el.parentNode.removeChild(el);\n };\n Autocomplete.prototype.onTooltipClick = function (e) {\n var a = e.target;\n while (a && a != this.tooltipNode) {\n if (a.nodeName == \"A\" && a.href) {\n a.rel = \"noreferrer\";\n a.target = \"_blank\";\n break;\n }\n a = a.parentNode;\n }\n };\n Autocomplete.prototype.destroy = function () {\n this.detach();\n if (this.popup) {\n this.popup.destroy();\n var el = this.popup.container;\n if (el && el.parentNode)\n el.parentNode.removeChild(el);\n }\n if (this.editor && this.editor.completer == this) {\n this.editor.off(\"destroy\", destroyCompleter);\n this.editor.completer = null;\n }\n this.inlineRenderer = this.popup = this.editor = null;\n };\n Autocomplete.for = function (editor) {\n if (editor.completer instanceof Autocomplete) {\n return editor.completer;\n }\n if (editor.completer) {\n editor.completer.destroy();\n editor.completer = null;\n }\n if (config.get(\"sharedPopups\")) {\n if (!Autocomplete[\"$sharedInstance\"])\n Autocomplete[\"$sharedInstance\"] = new Autocomplete();\n editor.completer = Autocomplete[\"$sharedInstance\"];\n }\n else {\n editor.completer = new Autocomplete();\n editor.once(\"destroy\", destroyCompleter);\n }\n return editor.completer;\n };\n return Autocomplete;\n}());\nAutocomplete.prototype.commands = {\n \"Up\": function (editor) { editor.completer.goTo(\"up\"); },\n \"Down\": function (editor) { editor.completer.goTo(\"down\"); },\n \"Ctrl-Up|Ctrl-Home\": function (editor) { editor.completer.goTo(\"start\"); },\n \"Ctrl-Down|Ctrl-End\": function (editor) { editor.completer.goTo(\"end\"); },\n \"Esc\": function (editor) { editor.completer.detach(); },\n \"Return\": function (editor) { return editor.completer.insertMatch(); },\n \"Shift-Return\": function (editor) { editor.completer.insertMatch(null, { deleteSuffix: true }); },\n \"Tab\": function (editor) {\n var result = editor.completer.insertMatch();\n if (!result && !editor.tabstopManager)\n editor.completer.goTo(\"down\");\n else\n return result;\n },\n \"Backspace\": function (editor) {\n editor.execCommand(\"backspace\");\n var prefix = util.getCompletionPrefix(editor);\n if (!prefix && editor.completer)\n editor.completer.detach();\n },\n \"PageUp\": function (editor) { editor.completer.popup.gotoPageUp(); },\n \"PageDown\": function (editor) { editor.completer.popup.gotoPageDown(); }\n};\nAutocomplete.startCommand = {\n name: \"startAutocomplete\",\n exec: function (editor, options) {\n var completer = Autocomplete.for(editor);\n completer.autoInsert = false;\n completer.autoSelect = true;\n completer.autoShown = false;\n completer.showPopup(editor, options);\n completer.cancelContextMenu();\n },\n bindKey: \"Ctrl-Space|Ctrl-Shift-Space|Alt-Space\"\n};\nvar CompletionProvider = /** @class */ (function () {\n function CompletionProvider(initialPosition) {\n this.initialPosition = initialPosition;\n this.active = true;\n }\n CompletionProvider.prototype.insertByIndex = function (editor, index, options) {\n if (!this.completions || !this.completions.filtered) {\n return false;\n }\n return this.insertMatch(editor, this.completions.filtered[index], options);\n };\n CompletionProvider.prototype.insertMatch = function (editor, data, options) {\n if (!data)\n return false;\n editor.startOperation({ command: { name: \"insertMatch\" } });\n if (data.completer && data.completer.insertMatch) {\n data.completer.insertMatch(editor, data);\n }\n else {\n if (!this.completions)\n return false;\n var replaceBefore = this.completions.filterText.length;\n var replaceAfter = 0;\n if (data.range && data.range.start.row === data.range.end.row) {\n replaceBefore -= this.initialPosition.prefix.length;\n replaceBefore += this.initialPosition.pos.column - data.range.start.column;\n replaceAfter += data.range.end.column - this.initialPosition.pos.column;\n }\n if (replaceBefore || replaceAfter) {\n var ranges;\n if (editor.selection.getAllRanges) {\n ranges = editor.selection.getAllRanges();\n }\n else {\n ranges = [editor.getSelectionRange()];\n }\n for (var i = 0, range; range = ranges[i]; i++) {\n range.start.column -= replaceBefore;\n range.end.column += replaceAfter;\n editor.session.remove(range);\n }\n }\n if (data.snippet) {\n snippetManager.insertSnippet(editor, data.snippet);\n }\n else {\n this.$insertString(editor, data);\n }\n if (data.completer && data.completer.onInsert && typeof data.completer.onInsert == \"function\") {\n data.completer.onInsert(editor, data);\n }\n if (data.command && data.command === \"startAutocomplete\") {\n editor.execCommand(data.command);\n }\n }\n editor.endOperation();\n return true;\n };\n CompletionProvider.prototype.$insertString = function (editor, data) {\n var text = data.value || data;\n editor.execCommand(\"insertstring\", text);\n };\n CompletionProvider.prototype.gatherCompletions = function (editor, callback) {\n var session = editor.getSession();\n var pos = editor.getCursorPosition();\n var prefix = util.getCompletionPrefix(editor);\n var matches = [];\n this.completers = editor.completers;\n var total = editor.completers.length;\n editor.completers.forEach(function (completer, i) {\n completer.getCompletions(editor, session, pos, prefix, function (err, results) {\n if (completer.hideInlinePreview)\n results = results.map(function (result) {\n return Object.assign(result, { hideInlinePreview: completer.hideInlinePreview });\n });\n if (!err && results)\n matches = matches.concat(results);\n callback(null, {\n prefix: util.getCompletionPrefix(editor),\n matches: matches,\n finished: (--total === 0)\n });\n });\n });\n return true;\n };\n CompletionProvider.prototype.provideCompletions = function (editor, options, callback) {\n var processResults = function (results) {\n var prefix = results.prefix;\n var matches = results.matches;\n this.completions = new FilteredList(matches);\n if (options.exactMatch)\n this.completions.exactMatch = true;\n if (options.ignoreCaption)\n this.completions.ignoreCaption = true;\n this.completions.setFilter(prefix);\n if (results.finished || this.completions.filtered.length)\n callback(null, this.completions, results.finished);\n }.bind(this);\n var isImmediate = true;\n var immediateResults = null;\n this.gatherCompletions(editor, function (err, results) {\n if (!this.active) {\n return;\n }\n if (err) {\n callback(err, [], true);\n this.detach();\n }\n var prefix = results.prefix;\n if (prefix.indexOf(results.prefix) !== 0)\n return;\n if (isImmediate) {\n immediateResults = results;\n return;\n }\n processResults(results);\n }.bind(this));\n isImmediate = false;\n if (immediateResults) {\n var results = immediateResults;\n immediateResults = null;\n processResults(results);\n }\n };\n CompletionProvider.prototype.detach = function () {\n this.active = false;\n this.completers && this.completers.forEach(function (completer) {\n if (typeof completer.cancel === \"function\") {\n completer.cancel();\n }\n });\n };\n return CompletionProvider;\n}());\nvar FilteredList = /** @class */ (function () {\n function FilteredList(array, filterText) {\n this.all = array;\n this.filtered = array;\n this.filterText = filterText || \"\";\n this.exactMatch = false;\n this.ignoreCaption = false;\n }\n FilteredList.prototype.setFilter = function (str) {\n if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0)\n var matches = this.filtered;\n else\n var matches = this.all;\n this.filterText = str;\n matches = this.filterCompletions(matches, this.filterText);\n matches = matches.sort(function (a, b) {\n return b.exactMatch - a.exactMatch || b.$score - a.$score\n || (a.caption || a.value).localeCompare(b.caption || b.value);\n });\n var prev = null;\n matches = matches.filter(function (item) {\n var caption = item.snippet || item.caption || item.value;\n if (caption === prev)\n return false;\n prev = caption;\n return true;\n });\n this.filtered = matches;\n };\n FilteredList.prototype.filterCompletions = function (items, needle) {\n var results = [];\n var upper = needle.toUpperCase();\n var lower = needle.toLowerCase();\n loop: for (var i = 0, item; item = items[i]; i++) {\n var caption = (!this.ignoreCaption && item.caption) || item.value || item.snippet;\n if (!caption)\n continue;\n var lastIndex = -1;\n var matchMask = 0;\n var penalty = 0;\n var index, distance;\n if (this.exactMatch) {\n if (needle !== caption.substr(0, needle.length))\n continue loop;\n }\n else {\n var fullMatchIndex = caption.toLowerCase().indexOf(lower);\n if (fullMatchIndex > -1) {\n penalty = fullMatchIndex;\n }\n else {\n for (var j = 0; j < needle.length; j++) {\n var i1 = caption.indexOf(lower[j], lastIndex + 1);\n var i2 = caption.indexOf(upper[j], lastIndex + 1);\n index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2;\n if (index < 0)\n continue loop;\n distance = index - lastIndex - 1;\n if (distance > 0) {\n if (lastIndex === -1)\n penalty += 10;\n penalty += distance;\n matchMask = matchMask | (1 << j);\n }\n lastIndex = index;\n }\n }\n }\n item.matchMask = matchMask;\n item.exactMatch = penalty ? 0 : 1;\n item.$score = (item.score || 0) - penalty;\n results.push(item);\n }\n return results;\n };\n return FilteredList;\n}());\nexports.Autocomplete = Autocomplete;\nexports.CompletionProvider = CompletionProvider;\nexports.FilteredList = FilteredList;\n\n});\n\nace.define(\"ace/autocomplete/text_completer\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){var Range = require(\"../range\").Range;\nvar splitRegex = /[^a-zA-Z_0-9\\$\\-\\u00C0-\\u1FFF\\u2C00-\\uD7FF\\w]+/;\nfunction getWordIndex(doc, pos) {\n var textBefore = doc.getTextRange(Range.fromPoints({\n row: 0,\n column: 0\n }, pos));\n return textBefore.split(splitRegex).length - 1;\n}\nfunction wordDistance(doc, pos) {\n var prefixPos = getWordIndex(doc, pos);\n var words = doc.getValue().split(splitRegex);\n var wordScores = Object.create(null);\n var currentWord = words[prefixPos];\n words.forEach(function (word, idx) {\n if (!word || word === currentWord)\n return;\n var distance = Math.abs(prefixPos - idx);\n var score = words.length - distance;\n if (wordScores[word]) {\n wordScores[word] = Math.max(score, wordScores[word]);\n }\n else {\n wordScores[word] = score;\n }\n });\n return wordScores;\n}\nexports.getCompletions = function (editor, session, pos, prefix, callback) {\n var wordScore = wordDistance(session, pos);\n var wordList = Object.keys(wordScore);\n callback(null, wordList.map(function (word) {\n return {\n caption: word,\n value: word,\n score: wordScore[word],\n meta: \"local\"\n };\n }));\n};\n\n});\n\nace.define(\"ace/ext/language_tools\",[\"require\",\"exports\",\"module\",\"ace/snippets\",\"ace/autocomplete\",\"ace/config\",\"ace/lib/lang\",\"ace/autocomplete/util\",\"ace/autocomplete/text_completer\",\"ace/editor\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar snippetManager = require(\"../snippets\").snippetManager;\nvar Autocomplete = require(\"../autocomplete\").Autocomplete;\nvar config = require(\"../config\");\nvar lang = require(\"../lib/lang\");\nvar util = require(\"../autocomplete/util\");\nvar textCompleter = require(\"../autocomplete/text_completer\");\nvar keyWordCompleter = {\n getCompletions: function (editor, session, pos, prefix, callback) {\n if (session.$mode.completer) {\n return session.$mode.completer.getCompletions(editor, session, pos, prefix, callback);\n }\n var state = editor.session.getState(pos.row);\n var completions = session.$mode.getCompletions(state, session, pos, prefix);\n completions = completions.map(function (el) {\n el.completerId = keyWordCompleter.id;\n return el;\n });\n callback(null, completions);\n },\n id: \"keywordCompleter\"\n};\nvar transformSnippetTooltip = function (str) {\n var record = {};\n return str.replace(/\\${(\\d+)(:(.*?))?}/g, function (_, p1, p2, p3) {\n return (record[p1] = p3 || '');\n }).replace(/\\$(\\d+?)/g, function (_, p1) {\n return record[p1];\n });\n};\nvar snippetCompleter = {\n getCompletions: function (editor, session, pos, prefix, callback) {\n var scopes = [];\n var token = session.getTokenAt(pos.row, pos.column);\n if (token && token.type.match(/(tag-name|tag-open|tag-whitespace|attribute-name|attribute-value)\\.xml$/))\n scopes.push('html-tag');\n else\n scopes = snippetManager.getActiveScopes(editor);\n var snippetMap = snippetManager.snippetMap;\n var completions = [];\n scopes.forEach(function (scope) {\n var snippets = snippetMap[scope] || [];\n for (var i = snippets.length; i--;) {\n var s = snippets[i];\n var caption = s.name || s.tabTrigger;\n if (!caption)\n continue;\n completions.push({\n caption: caption,\n snippet: s.content,\n meta: s.tabTrigger && !s.name ? s.tabTrigger + \"\\u21E5 \" : \"snippet\",\n completerId: snippetCompleter.id\n });\n }\n }, this);\n callback(null, completions);\n },\n getDocTooltip: function (item) {\n if (item.snippet && !item.docHTML) {\n item.docHTML = [\n \"\", lang.escapeHTML(item.caption), \"\", \"
\",\n lang.escapeHTML(transformSnippetTooltip(item.snippet))\n ].join(\"\");\n }\n },\n id: \"snippetCompleter\"\n};\nvar completers = [snippetCompleter, textCompleter, keyWordCompleter];\nexports.setCompleters = function (val) {\n completers.length = 0;\n if (val)\n completers.push.apply(completers, val);\n};\nexports.addCompleter = function (completer) {\n completers.push(completer);\n};\nexports.textCompleter = textCompleter;\nexports.keyWordCompleter = keyWordCompleter;\nexports.snippetCompleter = snippetCompleter;\nvar expandSnippet = {\n name: \"expandSnippet\",\n exec: function (editor) {\n return snippetManager.expandWithTab(editor);\n },\n bindKey: \"Tab\"\n};\nvar onChangeMode = function (e, editor) {\n loadSnippetsForMode(editor.session.$mode);\n};\nvar loadSnippetsForMode = function (mode) {\n if (typeof mode == \"string\")\n mode = config.$modes[mode];\n if (!mode)\n return;\n if (!snippetManager.files)\n snippetManager.files = {};\n loadSnippetFile(mode.$id, mode.snippetFileId);\n if (mode.modes)\n mode.modes.forEach(loadSnippetsForMode);\n};\nvar loadSnippetFile = function (id, snippetFilePath) {\n if (!snippetFilePath || !id || snippetManager.files[id])\n return;\n snippetManager.files[id] = {};\n config.loadModule(snippetFilePath, function (m) {\n if (!m)\n return;\n snippetManager.files[id] = m;\n if (!m.snippets && m.snippetText)\n m.snippets = snippetManager.parseSnippetFile(m.snippetText);\n snippetManager.register(m.snippets || [], m.scope);\n if (m.includeScopes) {\n snippetManager.snippetMap[m.scope].includeScopes = m.includeScopes;\n m.includeScopes.forEach(function (x) {\n loadSnippetsForMode(\"ace/mode/\" + x);\n });\n }\n });\n};\nvar doLiveAutocomplete = function (e) {\n var editor = e.editor;\n var hasCompleter = editor.completer && editor.completer.activated;\n if (e.command.name === \"backspace\") {\n if (hasCompleter && !util.getCompletionPrefix(editor))\n editor.completer.detach();\n }\n else if (e.command.name === \"insertstring\" && !hasCompleter) {\n lastExecEvent = e;\n var delay = e.editor.$liveAutocompletionDelay;\n if (delay) {\n liveAutocompleteTimer.delay(delay);\n }\n else {\n showLiveAutocomplete(e);\n }\n }\n};\nvar lastExecEvent;\nvar liveAutocompleteTimer = lang.delayedCall(function () {\n showLiveAutocomplete(lastExecEvent);\n}, 0);\nvar showLiveAutocomplete = function (e) {\n var editor = e.editor;\n var prefix = util.getCompletionPrefix(editor);\n var previousChar = e.args;\n var triggerAutocomplete = util.triggerAutocomplete(editor, previousChar);\n if (prefix && prefix.length >= editor.$liveAutocompletionThreshold || triggerAutocomplete) {\n var completer = Autocomplete.for(editor);\n completer.autoShown = true;\n completer.showPopup(editor);\n }\n};\nvar Editor = require(\"../editor\").Editor;\nrequire(\"../config\").defineOptions(Editor.prototype, \"editor\", {\n enableBasicAutocompletion: {\n set: function (val) {\n if (val) {\n if (!this.completers)\n this.completers = Array.isArray(val) ? val : completers;\n this.commands.addCommand(Autocomplete.startCommand);\n }\n else {\n this.commands.removeCommand(Autocomplete.startCommand);\n }\n },\n value: false\n },\n enableLiveAutocompletion: {\n set: function (val) {\n if (val) {\n if (!this.completers)\n this.completers = Array.isArray(val) ? val : completers;\n this.commands.on('afterExec', doLiveAutocomplete);\n }\n else {\n this.commands.off('afterExec', doLiveAutocomplete);\n }\n },\n value: false\n },\n liveAutocompletionDelay: {\n initialValue: 0\n },\n liveAutocompletionThreshold: {\n initialValue: 0\n },\n enableSnippets: {\n set: function (val) {\n if (val) {\n this.commands.addCommand(expandSnippet);\n this.on(\"changeMode\", onChangeMode);\n onChangeMode(null, this);\n }\n else {\n this.commands.removeCommand(expandSnippet);\n this.off(\"changeMode\", onChangeMode);\n }\n },\n value: false\n }\n});\n\n}); (function() {\n ace.require([\"ace/ext/language_tools\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc.body\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\", // doc comment\n regex: /\\/\\*\\*(?!\\/)/,\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\", // closing comment\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/perl_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar PerlHighlightRules = function () {\n var keywords = (\"base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|\" +\n \"no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars\");\n var buildinConstants = (\"ARGV|ENV|INC|SIG\");\n var builtinFunctions = (\"getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|\" +\n \"gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|\" +\n \"getpeername|setpriority|getprotoent|setprotoent|getpriority|\" +\n \"endprotoent|getservent|setservent|endservent|sethostent|socketpair|\" +\n \"getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|\" +\n \"localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|\" +\n \"closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|\" +\n \"shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|\" +\n \"dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|\" +\n \"setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|\" +\n \"lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|\" +\n \"waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|\" +\n \"chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|\" +\n \"unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|\" +\n \"length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|\" +\n \"undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|\" +\n \"sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|\" +\n \"BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|\" +\n \"join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|\" +\n \"keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|\" +\n \"eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|\" +\n \"map|die|uc|lc|do\");\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": buildinConstants,\n \"support.function\": builtinFunctions\n }, \"identifier\");\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc\",\n regex: \"^=(?:begin|item)\\\\b\",\n next: \"block_comment\"\n }, {\n token: \"string.regexp\",\n regex: \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, {\n token: \"string\", // single line\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token: \"string\", // multi line string start\n regex: '[\"].*\\\\\\\\$',\n next: \"qqstring\"\n }, {\n token: \"string\", // single line\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"string\", // multi line string start\n regex: \"['].*\\\\\\\\$\",\n next: \"qstring\"\n }, {\n token: \"constant.numeric\", // hex\n regex: \"0x[0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\", // float\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token: \"keyword.operator\",\n regex: \"%#|\\\\$#|\\\\.\\\\.\\\\.|\\\\|\\\\|=|>>=|<<=|<=>|&&=|=>|!~|\\\\^=|&=|\\\\|=|\\\\.=|x=|%=|\\\\/=|\\\\*=|\\\\-=|\\\\+=|=~|\\\\*\\\\*|\\\\-\\\\-|\\\\.\\\\.|\\\\|\\\\||&&|\\\\+\\\\+|\\\\->|!=|==|>=|<=|>>|<<|,|=|\\\\?\\\\:|\\\\^|\\\\||x|%|\\\\/|\\\\*|<|&|\\\\\\\\|~|!|>|\\\\.|\\\\-|\\\\+|\\\\-C|\\\\-b|\\\\-S|\\\\-u|\\\\-t|\\\\-p|\\\\-l|\\\\-d|\\\\-f|\\\\-g|\\\\-s|\\\\-z|\\\\-k|\\\\-e|\\\\-O|\\\\-T|\\\\-B|\\\\-M|\\\\-A|\\\\-X|\\\\-W|\\\\-c|\\\\-R|\\\\-o|\\\\-x|\\\\-w|\\\\-r|\\\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)\"\n }, {\n token: \"comment\",\n regex: \"#.*$\"\n }, {\n token: \"lparen\",\n regex: \"[[({]\"\n }, {\n token: \"rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"qqstring\": [\n {\n token: \"string\",\n regex: '(?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?\"',\n next: \"start\"\n }, {\n token: \"string\",\n regex: '.+'\n }\n ],\n \"qstring\": [\n {\n token: \"string\",\n regex: \"(?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?'\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: '.+'\n }\n ],\n \"block_comment\": [\n {\n token: \"comment.doc\",\n regex: \"^=cut\\\\b\",\n next: \"start\"\n },\n {\n defaultToken: \"comment.doc\"\n }\n ]\n };\n};\noop.inherits(PerlHighlightRules, TextHighlightRules);\nexports.PerlHighlightRules = PerlHighlightRules;\n\n});\n\nace.define(\"ace/mode/python_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){/*\n * TODO: python delimiters\n */\n\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar PythonHighlightRules = function () {\n var keywords = (\"and|as|assert|break|class|continue|def|del|elif|else|except|exec|\" +\n \"finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|\" +\n \"raise|return|try|while|with|yield|async|await|nonlocal\");\n var builtinConstants = (\"True|False|None|NotImplemented|Ellipsis|__debug__\");\n var builtinFunctions = (\"abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|\" +\n \"eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|\" +\n \"binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|\" +\n \"float|list|raw_input|unichr|callable|format|locals|reduce|unicode|\" +\n \"chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|\" +\n \"cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|\" +\n \"__import__|complex|hash|min|apply|delattr|help|next|setattr|set|\" +\n \"buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|\" +\n \"ascii|breakpoint|bytes\");\n var keywordMapper = this.createKeywordMapper({\n \"invalid.deprecated\": \"debugger\",\n \"support.function\": builtinFunctions,\n \"variable.language\": \"self|cls\",\n \"constant.language\": builtinConstants,\n \"keyword\": keywords\n }, \"identifier\");\n var strPre = \"[uU]?\";\n var strRawPre = \"[rR]\";\n var strFormatPre = \"[fF]\";\n var strRawFormatPre = \"(?:[rR][fF]|[fF][rR])\";\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var octInteger = \"(?:0[oO]?[0-7]+)\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var binInteger = \"(?:0[bB][01]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + octInteger + \"|\" + hexInteger + \"|\" + binInteger + \")\";\n var exponent = \"(?:[eE][+-]?\\\\d+)\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + exponent + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n var stringEscape = \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\\\\\abfnrtv'\\\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})\";\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: \"#.*$\"\n }, {\n token: \"string\", // multi line \"\"\" string start\n regex: strPre + '\"{3}',\n next: \"qqstring3\"\n }, {\n token: \"string\", // \" string\n regex: strPre + '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"string\", // multi line ''' string start\n regex: strPre + \"'{3}\",\n next: \"qstring3\"\n }, {\n token: \"string\", // ' string\n regex: strPre + \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"{3}',\n next: \"rawqqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"(?=.)',\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'{3}\",\n next: \"rawqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'(?=.)\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"{3}',\n next: \"fqqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"(?=.)',\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'{3}\",\n next: \"fqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'(?=.)\",\n next: \"fqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"{3}',\n next: \"rfqqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"(?=.)',\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'{3}\",\n next: \"rfqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'(?=.)\",\n next: \"rfqstring\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|%|@|<<|>>|&|\\\\||\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token: \"punctuation\",\n regex: \",|:|;|\\\\->|\\\\+=|\\\\-=|\\\\*=|\\\\/=|\\\\/\\\\/=|%=|@=|&=|\\\\|=|^=|>>=|<<=|\\\\*\\\\*=\"\n }, {\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(\\\\{]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)\\\\}]\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(def|class)(\\\\s+)([\\\\u00BF-\\\\u1FFF\\\\u2C00-\\\\uD7FF\\\\w]+)\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n include: \"constants\"\n }],\n \"qqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\", // multi line \"\"\" string end\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\", // multi line ''' string end\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring3\": [{\n token: \"string\", // multi line \"\"\" string end\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring3\": [{\n token: \"string\", // multi line ''' string end\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\", // multi line \"\"\" string end\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\", // multi line ''' string end\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring3\": [{\n token: \"string\", // multi line \"\"\" string end\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring3\": [{\n token: \"string\", // multi line ''' string end\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring\": [{\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstringParRules\": [{\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)]\"\n }, {\n token: \"string\",\n regex: \"\\\\s+\"\n }, {\n token: \"string\",\n regex: \"'[^']*'\"\n }, {\n token: \"string\",\n regex: '\"[^\"]*\"'\n }, {\n token: \"function.support\",\n regex: \"(!s|!r|!a)\"\n }, {\n include: \"constants\"\n }, {\n token: 'paren.rparen',\n regex: \"}\",\n next: 'pop'\n }, {\n token: 'paren.lparen',\n regex: \"{\",\n push: \"fqstringParRules\"\n }],\n \"constants\": [{\n token: \"constant.numeric\", // imaginary\n regex: \"(?:\" + floatNumber + \"|\\\\d+)[jJ]\\\\b\"\n }, {\n token: \"constant.numeric\", // float\n regex: floatNumber\n }, {\n token: \"constant.numeric\", // long integer\n regex: integer + \"[lL]\\\\b\"\n }, {\n token: \"constant.numeric\", // integer\n regex: integer + \"\\\\b\"\n }, {\n token: [\"punctuation\", \"function.support\"], // method\n regex: \"(\\\\.)([a-zA-Z_]+)\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }]\n };\n this.normalizeRules();\n};\noop.inherits(PythonHighlightRules, TextHighlightRules);\nexports.PythonHighlightRules = PythonHighlightRules;\n\n});\n\nace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsonHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"variable\", // single line\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n }, {\n token: \"string\", // single line\n regex: '\"',\n next: \"string\"\n }, {\n token: \"constant.numeric\", // hex\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\", // float\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: \"text\", // single quoted strings are not allowed\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"comment\", // comments are not allowed, but who cares?\n regex: \"\\\\/\\\\/.*$\"\n }, {\n token: \"comment.start\", // comments are not allowed, but who cares?\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"punctuation.operator\",\n regex: /[,]/\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"string\": [\n {\n token: \"constant.language.escape\",\n regex: /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\", // comments are not allowed, but who cares?\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n};\noop.inherits(JsonHighlightRules, TextHighlightRules);\nexports.JsonHighlightRules = JsonHighlightRules;\n\n});\n\nace.define(\"ace/mode/jsdoc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsDocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: [\"comment.doc.tag\", \"comment.doc.text\", \"lparen.doc\"],\n regex: \"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: [\"rparen.doc\", \"text.doc\", \"variable.parameter.doc\", \"lparen.doc\", \"variable.parameter.doc\", \"rparen.doc\"],\n regex: /(})(\\s*)(?:([\\w=:\\/\\.]+)|(?:(\\[)([\\w=:\\/\\.\\-\\'\\\" ]+)(\\])))/,\n next: \"pop\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"lparen.doc\"],\n regex: \"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|\"\n + \"implements|external|exception|throws|enum|define|extends))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|\"\n + \"requires|param|implements|function|extends|typedef|mixes|constructor|var|\"\n + \"memberof\\\\!|event|listens|exports|class|constructs|interface|emits|fires|\"\n + \"throws|const|callback|borrows|augments))(\\\\s+)(\\\\w[\\\\w#\\.:\\/~\\\"\\\\-]*)?\"\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@method)(\\\\s+)(\\\\w[\\\\w\\.\\\\(\\\\)]*)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@access\\\\s+(?:private|public|protected)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@kind\\\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n },\n JsDocCommentHighlightRules.getTagRule(),\n {\n defaultToken: \"comment.doc.body\",\n caseInsensitive: true\n }\n ],\n \"doc-syntax\": [{\n token: \"operator.doc\",\n regex: /[|:]/\n }, {\n token: \"paren.doc\",\n regex: /[\\[\\]]/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(JsDocCommentHighlightRules, TextHighlightRules);\nJsDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nJsDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\", // doc comment\n regex: /\\/\\*\\*(?!\\/)/,\n next: start\n };\n};\nJsDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\", // closing comment\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.JsDocCommentHighlightRules = JsDocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/jsdoc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./jsdoc_comment_highlight_rules\").JsDocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\nvar JavaScriptHighlightRules = function (options) {\n var keywords = {\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\", // Pseudo\n \"keyword\": \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n };\n var keywordMapper = this.createKeywordMapper(keywords, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n var anonymousFunctionRe = \"(function)(\\\\s*)(\\\\*?)\";\n var functionCallStartRule = {\n token: [\"identifier\", \"text\", \"paren.lparen\"],\n regex: \"(\\\\b(?!\" + Object.values(keywords).join(\"|\") + \"\\\\b)\" + identifierRe + \")(\\\\s*)(\\\\()\"\n };\n this.$rules = {\n \"no_regex\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n functionCallStartRule,\n {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\", // hexadecimal, octal and binary\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\", // decimal integers and floats\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)\" + anonymousFunctionRe + \"(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"text\", \"storage.type\", \"text\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(function)(?:(?:(\\\\s*)(\\\\*)(\\\\s*))|(\\\\s+))(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)\" + anonymousFunctionRe + \"(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"text\", \"text\", \"storage.type\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(:)(\\\\s*)\" + anonymousFunctionRe + \"(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: \"support.constant\",\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/,\n next: \"start\"\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"keyword.operator\",\n regex: /=/\n }, {\n token: [\n \"storage.type\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: anonymousFunctionRe + \"(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"text\", \"storage.type\", \"text\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(function)(?:(?:(\\\\s*)(\\\\*)(\\\\s*))|(\\\\s+))(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: \"prototype\"\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"default_parameter\": [\n {\n token: \"string\",\n regex: \"'(?=.)\",\n push: [\n {\n token: \"string\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"qstring\"\n }\n ]\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n push: [\n {\n token: \"string\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"qqstring\"\n }\n ]\n }, {\n token: \"constant.language\",\n regex: \"null|Infinity|NaN|undefined\"\n }, {\n token: \"constant.numeric\", // hexadecimal, octal and binary\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\", // decimal integers and floats\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: \"punctuation.operator\",\n regex: \",\",\n next: \"function_arguments\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"function_arguments\": [\n comments(\"function_arguments\"),\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \",\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function (val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n }, {\n token: [\"variable.parameter\", \"text\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(?=\\\\=>)\"\n }, {\n token: \"paren.lparen\",\n regex: \"(\\\\()(?=[^\\\\(]+\\\\s*=>)\",\n next: \"function_arguments\"\n }, {\n token: \"variable.language\",\n regex: \"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\\\b\"\n });\n this.$rules[\"function_arguments\"].unshift({\n token: \"keyword.operator\",\n regex: \"=\",\n next: \"default_parameter\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\.{3}\"\n });\n this.$rules[\"property\"].unshift({\n token: \"support.function\",\n regex: \"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|\"\n + \"finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\\\b(?=\\\\()\"\n }, {\n token: \"constant.language\",\n regex: \"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\\\b\"\n });\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n};\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function (val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n }\n else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"))\",\n next: \"jsxAttributes\",\n nextState: \"jsx\"\n };\n this.$rules.start.unshift(jsxTag);\n var jsxJsRule = {\n regex: \"{\",\n token: \"paren.quasi.start\",\n push: \"start\"\n };\n this.$rules.jsx = [\n jsxJsRule,\n jsxTag,\n { include: \"reference\" }, { defaultToken: \"string.xml\" }\n ];\n this.$rules.jsxAttributes = [{\n token: \"meta.tag.punctuation.tag-close.xml\",\n regex: \"/?>\",\n onMatch: function (value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{ type: this.token, value: value }];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\nfunction comments(next) {\n return [\n {\n token: \"comment\", // multi line comment\n regex: /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"\\\\*\\\\/\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"$|^\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n\n});\n\nace.define(\"ace/mode/pgsql_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\",\"ace/mode/perl_highlight_rules\",\"ace/mode/python_highlight_rules\",\"ace/mode/json_highlight_rules\",\"ace/mode/javascript_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar PerlHighlightRules = require(\"./perl_highlight_rules\").PerlHighlightRules;\nvar PythonHighlightRules = require(\"./python_highlight_rules\").PythonHighlightRules;\nvar JsonHighlightRules = require(\"./json_highlight_rules\").JsonHighlightRules;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar PgsqlHighlightRules = function () {\n var keywords = (\"abort|absolute|abstime|access|aclitem|action|add|admin|after|aggregate|all|also|alter|always|\" +\n \"analyse|analyze|and|any|anyarray|anyelement|anyenum|anynonarray|anyrange|array|as|asc|\" +\n \"assertion|assignment|asymmetric|at|attribute|authorization|backward|before|begin|between|\" +\n \"bigint|binary|bit|bool|boolean|both|box|bpchar|by|bytea|cache|called|cascade|cascaded|case|cast|\" +\n \"catalog|chain|char|character|characteristics|check|checkpoint|cid|cidr|circle|class|close|\" +\n \"cluster|coalesce|collate|collation|column|comment|comments|commit|committed|concurrently|\" +\n \"configuration|connection|constraint|constraints|content|continue|conversion|copy|cost|\" +\n \"create|cross|cstring|csv|current|current_catalog|current_date|current_role|\" +\n \"current_schema|current_time|current_timestamp|current_user|cursor|cycle|data|database|\" +\n \"date|daterange|day|deallocate|dec|decimal|declare|default|defaults|deferrable|deferred|\" +\n \"definer|delete|delimiter|delimiters|desc|dictionary|disable|discard|distinct|do|document|\" +\n \"domain|double|drop|each|else|enable|encoding|encrypted|end|enum|escape|event|event_trigger|\" +\n \"except|exclude|excluding|exclusive|execute|exists|explain|extension|external|extract|false|\" +\n \"family|fdw_handler|fetch|first|float|float4|float8|following|for|force|foreign|forward|\" +\n \"freeze|from|full|function|functions|global|grant|granted|greatest|group|gtsvector|handler|\" +\n \"having|header|hold|hour|identity|if|ilike|immediate|immutable|implicit|in|including|\" +\n \"increment|index|indexes|inet|inherit|inherits|initially|inline|inner|inout|input|\" +\n \"insensitive|insert|instead|int|int2|int2vector|int4|int4range|int8|int8range|integer|\" +\n \"internal|intersect|interval|into|invoker|is|isnull|isolation|join|json|key|label|language|\" +\n \"language_handler|large|last|lateral|lc_collate|lc_ctype|leading|leakproof|least|left|level|\" +\n \"like|limit|line|listen|load|local|localtime|localtimestamp|location|lock|lseg|macaddr|\" +\n \"mapping|match|materialized|maxvalue|minute|minvalue|mode|money|month|move|name|names|\" +\n \"national|natural|nchar|next|no|none|not|nothing|notify|notnull|nowait|null|nullif|nulls|\" +\n \"numeric|numrange|object|of|off|offset|oid|oids|oidvector|on|only|opaque|operator|option|\" +\n \"options|or|order|out|outer|over|overlaps|overlay|owned|owner|parser|partial|partition|passing|\" +\n \"password|path|pg_attribute|pg_auth_members|pg_authid|pg_class|pg_database|pg_node_tree|\" +\n \"pg_proc|pg_type|placing|plans|point|polygon|position|preceding|precision|prepare|prepared|\" +\n \"preserve|primary|prior|privileges|procedural|procedure|program|quote|range|read|real|\" +\n \"reassign|recheck|record|recursive|ref|refcursor|references|refresh|regclass|regconfig|\" +\n \"regdictionary|regoper|regoperator|regproc|regprocedure|regtype|reindex|relative|release|\" +\n \"reltime|rename|repeatable|replace|replica|reset|restart|restrict|returning|returns|revoke|\" +\n \"right|role|rollback|row|rows|rule|savepoint|schema|scroll|search|second|security|select|\" +\n \"sequence|sequences|serializable|server|session|session_user|set|setof|share|show|similar|\" +\n \"simple|smallint|smgr|snapshot|some|stable|standalone|start|statement|statistics|stdin|\" +\n \"stdout|storage|strict|strip|substring|symmetric|sysid|system|table|tables|tablespace|temp|\" +\n \"template|temporary|text|then|tid|time|timestamp|timestamptz|timetz|tinterval|to|trailing|\" +\n \"transaction|treat|trigger|trim|true|truncate|trusted|tsquery|tsrange|tstzrange|tsvector|\" +\n \"txid_snapshot|type|types|unbounded|uncommitted|unencrypted|union|unique|unknown|unlisten|\" +\n \"unlogged|until|update|user|using|uuid|vacuum|valid|validate|validator|value|values|varbit|\" +\n \"varchar|variadic|varying|verbose|version|view|void|volatile|when|where|whitespace|window|\" +\n \"with|without|work|wrapper|write|xid|xml|xmlattributes|xmlconcat|xmlelement|xmlexists|\" +\n \"xmlforest|xmlparse|xmlpi|xmlroot|xmlserialize|year|yes|zone|ties\");\n var builtinFunctions = (\"RI_FKey_cascade_del|RI_FKey_cascade_upd|RI_FKey_check_ins|RI_FKey_check_upd|\" +\n \"RI_FKey_noaction_del|RI_FKey_noaction_upd|RI_FKey_restrict_del|RI_FKey_restrict_upd|\" +\n \"RI_FKey_setdefault_del|RI_FKey_setdefault_upd|RI_FKey_setnull_del|\" +\n \"RI_FKey_setnull_upd|abbrev|abs|abstime|abstimeeq|abstimege|abstimegt|abstimein|abstimele|\" +\n \"abstimelt|abstimene|abstimeout|abstimerecv|abstimesend|aclcontains|acldefault|\" +\n \"aclexplode|aclinsert|aclitemeq|aclitemin|aclitemout|aclremove|acos|age|any_in|any_out|\" +\n \"anyarray_in|anyarray_out|anyarray_recv|anyarray_send|anyelement_in|anyelement_out|\" +\n \"anyenum_in|anyenum_out|anynonarray_in|anynonarray_out|anyrange_in|anyrange_out|\" +\n \"anytextcat|area|areajoinsel|areasel|array_agg|array_agg_finalfn|array_agg_transfn|\" +\n \"array_append|array_cat|array_dims|array_eq|array_fill|array_ge|array_gt|array_in|\" +\n \"array_larger|array_le|array_length|array_lower|array_lt|array_ndims|array_ne|array_out|\" +\n \"array_prepend|array_recv|array_remove|array_replace|array_send|array_smaller|\" +\n \"array_to_json|array_to_string|array_typanalyze|array_upper|arraycontained|\" +\n \"arraycontains|arraycontjoinsel|arraycontsel|arrayoverlap|ascii|ascii_to_mic|\" +\n \"ascii_to_utf8|asin|atan|atan2|avg|big5_to_euc_tw|big5_to_mic|big5_to_utf8|bit_and|bit_in|\" +\n \"bit_length|bit_or|bit_out|bit_recv|bit_send|bitand|bitcat|bitcmp|biteq|bitge|bitgt|bitle|\" +\n \"bitlt|bitne|bitnot|bitor|bitshiftleft|bitshiftright|bittypmodin|bittypmodout|bitxor|bool|\" +\n \"bool_and|bool_or|booland_statefunc|booleq|boolge|boolgt|boolin|boolle|boollt|boolne|\" +\n \"boolor_statefunc|boolout|boolrecv|boolsend|box|box_above|box_above_eq|box_add|box_below|\" +\n \"box_below_eq|box_center|box_contain|box_contain_pt|box_contained|box_distance|box_div|\" +\n \"box_eq|box_ge|box_gt|box_in|box_intersect|box_le|box_left|box_lt|box_mul|box_out|\" +\n \"box_overabove|box_overbelow|box_overlap|box_overleft|box_overright|box_recv|box_right|\" +\n \"box_same|box_send|box_sub|bpchar_larger|bpchar_pattern_ge|bpchar_pattern_gt|\" +\n \"bpchar_pattern_le|bpchar_pattern_lt|bpchar_smaller|bpcharcmp|bpchareq|bpcharge|\" +\n \"bpchargt|bpchariclike|bpcharicnlike|bpcharicregexeq|bpcharicregexne|bpcharin|bpcharle|\" +\n \"bpcharlike|bpcharlt|bpcharne|bpcharnlike|bpcharout|bpcharrecv|bpcharregexeq|\" +\n \"bpcharregexne|bpcharsend|bpchartypmodin|bpchartypmodout|broadcast|btabstimecmp|\" +\n \"btarraycmp|btbeginscan|btboolcmp|btbpchar_pattern_cmp|btbuild|btbuildempty|\" +\n \"btbulkdelete|btcanreturn|btcharcmp|btcostestimate|btendscan|btfloat48cmp|btfloat4cmp|\" +\n \"btfloat4sortsupport|btfloat84cmp|btfloat8cmp|btfloat8sortsupport|btgetbitmap|\" +\n \"btgettuple|btinsert|btint24cmp|btint28cmp|btint2cmp|btint2sortsupport|btint42cmp|\" +\n \"btint48cmp|btint4cmp|btint4sortsupport|btint82cmp|btint84cmp|btint8cmp|\" +\n \"btint8sortsupport|btmarkpos|btnamecmp|btnamesortsupport|btoidcmp|btoidsortsupport|\" +\n \"btoidvectorcmp|btoptions|btrecordcmp|btreltimecmp|btrescan|btrestrpos|btrim|\" +\n \"bttext_pattern_cmp|bttextcmp|bttidcmp|bttintervalcmp|btvacuumcleanup|\" +\n \"bytea_string_agg_finalfn|bytea_string_agg_transfn|byteacat|byteacmp|byteaeq|byteage|\" +\n \"byteagt|byteain|byteale|bytealike|bytealt|byteane|byteanlike|byteaout|bytearecv|byteasend|\" +\n \"cash_cmp|cash_div_cash|cash_div_flt4|cash_div_flt8|cash_div_int2|cash_div_int4|cash_eq|\" +\n \"cash_ge|cash_gt|cash_in|cash_le|cash_lt|cash_mi|cash_mul_flt4|cash_mul_flt8|\" +\n \"cash_mul_int2|cash_mul_int4|cash_ne|cash_out|cash_pl|cash_recv|cash_send|cash_words|\" +\n \"cashlarger|cashsmaller|cbrt|ceil|ceiling|center|char|char_length|character_length|chareq|\" +\n \"charge|chargt|charin|charle|charlt|charne|charout|charrecv|charsend|chr|cideq|cidin|cidout|\" +\n \"cidr|cidr_in|cidr_out|cidr_recv|cidr_send|cidrecv|cidsend|circle|circle_above|\" +\n \"circle_add_pt|circle_below|circle_center|circle_contain|circle_contain_pt|\" +\n \"circle_contained|circle_distance|circle_div_pt|circle_eq|circle_ge|circle_gt|circle_in|\" +\n \"circle_le|circle_left|circle_lt|circle_mul_pt|circle_ne|circle_out|circle_overabove|\" +\n \"circle_overbelow|circle_overlap|circle_overleft|circle_overright|circle_recv|\" +\n \"circle_right|circle_same|circle_send|circle_sub_pt|clock_timestamp|close_lb|close_ls|\" +\n \"close_lseg|close_pb|close_pl|close_ps|close_sb|close_sl|col_description|concat|concat_ws|\" +\n \"contjoinsel|contsel|convert|convert_from|convert_to|corr|cos|cot|count|covar_pop|\" +\n \"covar_samp|cstring_in|cstring_out|cstring_recv|cstring_send|cume_dist|current_database|\" +\n \"current_query|current_schema|current_schemas|current_setting|current_user|currtid|\" +\n \"currtid2|currval|cursor_to_xml|cursor_to_xmlschema|database_to_xml|\" +\n \"database_to_xml_and_xmlschema|database_to_xmlschema|date|date_cmp|date_cmp_timestamp|\" +\n \"date_cmp_timestamptz|date_eq|date_eq_timestamp|date_eq_timestamptz|date_ge|\" +\n \"date_ge_timestamp|date_ge_timestamptz|date_gt|date_gt_timestamp|date_gt_timestamptz|\" +\n \"date_in|date_larger|date_le|date_le_timestamp|date_le_timestamptz|date_lt|\" +\n \"date_lt_timestamp|date_lt_timestamptz|date_mi|date_mi_interval|date_mii|date_ne|\" +\n \"date_ne_timestamp|date_ne_timestamptz|date_out|date_part|date_pl_interval|date_pli|\" +\n \"date_recv|date_send|date_smaller|date_sortsupport|date_trunc|daterange|\" +\n \"daterange_canonical|daterange_subdiff|datetime_pl|datetimetz_pl|dcbrt|decode|degrees|\" +\n \"dense_rank|dexp|diagonal|diameter|dispell_init|dispell_lexize|dist_cpoly|dist_lb|dist_pb|\" +\n \"dist_pc|dist_pl|dist_ppath|dist_ps|dist_sb|dist_sl|div|dlog1|dlog10|domain_in|domain_recv|\" +\n \"dpow|dround|dsimple_init|dsimple_lexize|dsnowball_init|dsnowball_lexize|dsqrt|\" +\n \"dsynonym_init|dsynonym_lexize|dtrunc|elem_contained_by_range|encode|enum_cmp|enum_eq|\" +\n \"enum_first|enum_ge|enum_gt|enum_in|enum_larger|enum_last|enum_le|enum_lt|enum_ne|enum_out|\" +\n \"enum_range|enum_recv|enum_send|enum_smaller|eqjoinsel|eqsel|euc_cn_to_mic|\" +\n \"euc_cn_to_utf8|euc_jis_2004_to_shift_jis_2004|euc_jis_2004_to_utf8|euc_jp_to_mic|\" +\n \"euc_jp_to_sjis|euc_jp_to_utf8|euc_kr_to_mic|euc_kr_to_utf8|euc_tw_to_big5|\" +\n \"euc_tw_to_mic|euc_tw_to_utf8|event_trigger_in|event_trigger_out|every|exp|factorial|\" +\n \"family|fdw_handler_in|fdw_handler_out|first_value|float4|float48div|float48eq|float48ge|\" +\n \"float48gt|float48le|float48lt|float48mi|float48mul|float48ne|float48pl|float4_accum|\" +\n \"float4abs|float4div|float4eq|float4ge|float4gt|float4in|float4larger|float4le|float4lt|\" +\n \"float4mi|float4mul|float4ne|float4out|float4pl|float4recv|float4send|float4smaller|\" +\n \"float4um|float4up|float8|float84div|float84eq|float84ge|float84gt|float84le|float84lt|\" +\n \"float84mi|float84mul|float84ne|float84pl|float8_accum|float8_avg|float8_corr|\" +\n \"float8_covar_pop|float8_covar_samp|float8_regr_accum|float8_regr_avgx|\" +\n \"float8_regr_avgy|float8_regr_intercept|float8_regr_r2|float8_regr_slope|\" +\n \"float8_regr_sxx|float8_regr_sxy|float8_regr_syy|float8_stddev_pop|float8_stddev_samp|\" +\n \"float8_var_pop|float8_var_samp|float8abs|float8div|float8eq|float8ge|float8gt|float8in|\" +\n \"float8larger|float8le|float8lt|float8mi|float8mul|float8ne|float8out|float8pl|float8recv|\" +\n \"float8send|float8smaller|float8um|float8up|floor|flt4_mul_cash|flt8_mul_cash|\" +\n \"fmgr_c_validator|fmgr_internal_validator|fmgr_sql_validator|format|format_type|\" +\n \"gb18030_to_utf8|gbk_to_utf8|generate_series|generate_subscripts|get_bit|get_byte|\" +\n \"get_current_ts_config|getdatabaseencoding|getpgusername|gin_cmp_prefix|\" +\n \"gin_cmp_tslexeme|gin_extract_tsquery|gin_extract_tsvector|gin_tsquery_consistent|\" +\n \"ginarrayconsistent|ginarrayextract|ginbeginscan|ginbuild|ginbuildempty|ginbulkdelete|\" +\n \"gincostestimate|ginendscan|gingetbitmap|gininsert|ginmarkpos|ginoptions|\" +\n \"ginqueryarrayextract|ginrescan|ginrestrpos|ginvacuumcleanup|gist_box_compress|\" +\n \"gist_box_consistent|gist_box_decompress|gist_box_penalty|gist_box_picksplit|\" +\n \"gist_box_same|gist_box_union|gist_circle_compress|gist_circle_consistent|\" +\n \"gist_point_compress|gist_point_consistent|gist_point_distance|gist_poly_compress|\" +\n \"gist_poly_consistent|gistbeginscan|gistbuild|gistbuildempty|gistbulkdelete|\" +\n \"gistcostestimate|gistendscan|gistgetbitmap|gistgettuple|gistinsert|gistmarkpos|\" +\n \"gistoptions|gistrescan|gistrestrpos|gistvacuumcleanup|gtsquery_compress|\" +\n \"gtsquery_consistent|gtsquery_decompress|gtsquery_penalty|gtsquery_picksplit|\" +\n \"gtsquery_same|gtsquery_union|gtsvector_compress|gtsvector_consistent|\" +\n \"gtsvector_decompress|gtsvector_penalty|gtsvector_picksplit|gtsvector_same|\" +\n \"gtsvector_union|gtsvectorin|gtsvectorout|has_any_column_privilege|\" +\n \"has_column_privilege|has_database_privilege|has_foreign_data_wrapper_privilege|\" +\n \"has_function_privilege|has_language_privilege|has_schema_privilege|\" +\n \"has_sequence_privilege|has_server_privilege|has_table_privilege|\" +\n \"has_tablespace_privilege|has_type_privilege|hash_aclitem|hash_array|hash_numeric|\" +\n \"hash_range|hashbeginscan|hashbpchar|hashbuild|hashbuildempty|hashbulkdelete|hashchar|\" +\n \"hashcostestimate|hashendscan|hashenum|hashfloat4|hashfloat8|hashgetbitmap|hashgettuple|\" +\n \"hashinet|hashinsert|hashint2|hashint2vector|hashint4|hashint8|hashmacaddr|hashmarkpos|\" +\n \"hashname|hashoid|hashoidvector|hashoptions|hashrescan|hashrestrpos|hashtext|\" +\n \"hashvacuumcleanup|hashvarlena|height|host|hostmask|iclikejoinsel|iclikesel|\" +\n \"icnlikejoinsel|icnlikesel|icregexeqjoinsel|icregexeqsel|icregexnejoinsel|icregexnesel|\" +\n \"inet_client_addr|inet_client_port|inet_in|inet_out|inet_recv|inet_send|\" +\n \"inet_server_addr|inet_server_port|inetand|inetmi|inetmi_int8|inetnot|inetor|inetpl|\" +\n \"initcap|int2|int24div|int24eq|int24ge|int24gt|int24le|int24lt|int24mi|int24mul|int24ne|\" +\n \"int24pl|int28div|int28eq|int28ge|int28gt|int28le|int28lt|int28mi|int28mul|int28ne|int28pl|\" +\n \"int2_accum|int2_avg_accum|int2_mul_cash|int2_sum|int2abs|int2and|int2div|int2eq|int2ge|\" +\n \"int2gt|int2in|int2larger|int2le|int2lt|int2mi|int2mod|int2mul|int2ne|int2not|int2or|int2out|\" +\n \"int2pl|int2recv|int2send|int2shl|int2shr|int2smaller|int2um|int2up|int2vectoreq|\" +\n \"int2vectorin|int2vectorout|int2vectorrecv|int2vectorsend|int2xor|int4|int42div|int42eq|\" +\n \"int42ge|int42gt|int42le|int42lt|int42mi|int42mul|int42ne|int42pl|int48div|int48eq|int48ge|\" +\n \"int48gt|int48le|int48lt|int48mi|int48mul|int48ne|int48pl|int4_accum|int4_avg_accum|\" +\n \"int4_mul_cash|int4_sum|int4abs|int4and|int4div|int4eq|int4ge|int4gt|int4in|int4inc|\" +\n \"int4larger|int4le|int4lt|int4mi|int4mod|int4mul|int4ne|int4not|int4or|int4out|int4pl|\" +\n \"int4range|int4range_canonical|int4range_subdiff|int4recv|int4send|int4shl|int4shr|\" +\n \"int4smaller|int4um|int4up|int4xor|int8|int82div|int82eq|int82ge|int82gt|int82le|int82lt|\" +\n \"int82mi|int82mul|int82ne|int82pl|int84div|int84eq|int84ge|int84gt|int84le|int84lt|int84mi|\" +\n \"int84mul|int84ne|int84pl|int8_accum|int8_avg|int8_avg_accum|int8_sum|int8abs|int8and|\" +\n \"int8div|int8eq|int8ge|int8gt|int8in|int8inc|int8inc_any|int8inc_float8_float8|int8larger|\" +\n \"int8le|int8lt|int8mi|int8mod|int8mul|int8ne|int8not|int8or|int8out|int8pl|int8pl_inet|\" +\n \"int8range|int8range_canonical|int8range_subdiff|int8recv|int8send|int8shl|int8shr|\" +\n \"int8smaller|int8um|int8up|int8xor|integer_pl_date|inter_lb|inter_sb|inter_sl|internal_in|\" +\n \"internal_out|interval_accum|interval_avg|interval_cmp|interval_div|interval_eq|\" +\n \"interval_ge|interval_gt|interval_hash|interval_in|interval_larger|interval_le|\" +\n \"interval_lt|interval_mi|interval_mul|interval_ne|interval_out|interval_pl|\" +\n \"interval_pl_date|interval_pl_time|interval_pl_timestamp|interval_pl_timestamptz|\" +\n \"interval_pl_timetz|interval_recv|interval_send|interval_smaller|interval_transform|\" +\n \"interval_um|intervaltypmodin|intervaltypmodout|intinterval|isclosed|isempty|isfinite|\" +\n \"ishorizontal|iso8859_1_to_utf8|iso8859_to_utf8|iso_to_koi8r|iso_to_mic|iso_to_win1251|\" +\n \"iso_to_win866|isopen|isparallel|isperp|isvertical|johab_to_utf8|json_agg|\" +\n \"json_agg_finalfn|json_agg_transfn|json_array_element|json_array_element_text|\" +\n \"json_array_elements|json_array_length|json_each|json_each_text|json_extract_path|\" +\n \"json_extract_path_op|json_extract_path_text|json_extract_path_text_op|json_in|\" +\n \"json_object_field|json_object_field_text|json_object_keys|json_out|\" +\n \"json_populate_record|json_populate_recordset|json_recv|json_send|justify_days|\" +\n \"justify_hours|justify_interval|koi8r_to_iso|koi8r_to_mic|koi8r_to_utf8|\" +\n \"koi8r_to_win1251|koi8r_to_win866|koi8u_to_utf8|lag|language_handler_in|\" +\n \"language_handler_out|last_value|lastval|latin1_to_mic|latin2_to_mic|latin2_to_win1250|\" +\n \"latin3_to_mic|latin4_to_mic|lead|left|length|like|like_escape|likejoinsel|likesel|line|\" +\n \"line_distance|line_eq|line_horizontal|line_in|line_interpt|line_intersect|line_out|\" +\n \"line_parallel|line_perp|line_recv|line_send|line_vertical|ln|lo_close|lo_creat|lo_create|\" +\n \"lo_export|lo_import|lo_lseek|lo_lseek64|lo_open|lo_tell|lo_tell64|lo_truncate|\" +\n \"lo_truncate64|lo_unlink|log|loread|lower|lower_inc|lower_inf|lowrite|lpad|lseg|lseg_center|\" +\n \"lseg_distance|lseg_eq|lseg_ge|lseg_gt|lseg_horizontal|lseg_in|lseg_interpt|\" +\n \"lseg_intersect|lseg_le|lseg_length|lseg_lt|lseg_ne|lseg_out|lseg_parallel|lseg_perp|\" +\n \"lseg_recv|lseg_send|lseg_vertical|ltrim|macaddr_and|macaddr_cmp|macaddr_eq|macaddr_ge|\" +\n \"macaddr_gt|macaddr_in|macaddr_le|macaddr_lt|macaddr_ne|macaddr_not|macaddr_or|\" +\n \"macaddr_out|macaddr_recv|macaddr_send|makeaclitem|masklen|max|md5|mic_to_ascii|\" +\n \"mic_to_big5|mic_to_euc_cn|mic_to_euc_jp|mic_to_euc_kr|mic_to_euc_tw|mic_to_iso|\" +\n \"mic_to_koi8r|mic_to_latin1|mic_to_latin2|mic_to_latin3|mic_to_latin4|mic_to_sjis|\" +\n \"mic_to_win1250|mic_to_win1251|mic_to_win866|min|mktinterval|mod|money|mul_d_interval|\" +\n \"name|nameeq|namege|namegt|nameiclike|nameicnlike|nameicregexeq|nameicregexne|namein|\" +\n \"namele|namelike|namelt|namene|namenlike|nameout|namerecv|nameregexeq|nameregexne|namesend|\" +\n \"neqjoinsel|neqsel|netmask|network|network_cmp|network_eq|network_ge|network_gt|\" +\n \"network_le|network_lt|network_ne|network_sub|network_subeq|network_sup|network_supeq|\" +\n \"nextval|nlikejoinsel|nlikesel|notlike|now|npoints|nth_value|ntile|numeric_abs|\" +\n \"numeric_accum|numeric_add|numeric_avg|numeric_avg_accum|numeric_cmp|numeric_div|\" +\n \"numeric_div_trunc|numeric_eq|numeric_exp|numeric_fac|numeric_ge|numeric_gt|numeric_in|\" +\n \"numeric_inc|numeric_larger|numeric_le|numeric_ln|numeric_log|numeric_lt|numeric_mod|\" +\n \"numeric_mul|numeric_ne|numeric_out|numeric_power|numeric_recv|numeric_send|\" +\n \"numeric_smaller|numeric_sqrt|numeric_stddev_pop|numeric_stddev_samp|numeric_sub|\" +\n \"numeric_transform|numeric_uminus|numeric_uplus|numeric_var_pop|numeric_var_samp|\" +\n \"numerictypmodin|numerictypmodout|numnode|numrange|numrange_subdiff|obj_description|\" +\n \"octet_length|oid|oideq|oidge|oidgt|oidin|oidlarger|oidle|oidlt|oidne|oidout|oidrecv|oidsend|\" +\n \"oidsmaller|oidvectoreq|oidvectorge|oidvectorgt|oidvectorin|oidvectorle|oidvectorlt|\" +\n \"oidvectorne|oidvectorout|oidvectorrecv|oidvectorsend|oidvectortypes|on_pb|on_pl|\" +\n \"on_ppath|on_ps|on_sb|on_sl|opaque_in|opaque_out|overlaps|overlay|path|path_add|path_add_pt|\" +\n \"path_center|path_contain_pt|path_distance|path_div_pt|path_in|path_inter|path_length|\" +\n \"path_mul_pt|path_n_eq|path_n_ge|path_n_gt|path_n_le|path_n_lt|path_npoints|path_out|\" +\n \"path_recv|path_send|path_sub_pt|pclose|percent_rank|pg_advisory_lock|\" +\n \"pg_advisory_lock_shared|pg_advisory_unlock|pg_advisory_unlock_all|\" +\n \"pg_advisory_unlock_shared|pg_advisory_xact_lock|pg_advisory_xact_lock_shared|\" +\n \"pg_available_extension_versions|pg_available_extensions|pg_backend_pid|\" +\n \"pg_backup_start_time|pg_cancel_backend|pg_char_to_encoding|pg_client_encoding|\" +\n \"pg_collation_for|pg_collation_is_visible|pg_column_is_updatable|pg_column_size|\" +\n \"pg_conf_load_time|pg_conversion_is_visible|pg_create_restore_point|\" +\n \"pg_current_xlog_insert_location|pg_current_xlog_location|pg_cursor|pg_database_size|\" +\n \"pg_describe_object|pg_encoding_max_length|pg_encoding_to_char|\" +\n \"pg_event_trigger_dropped_objects|pg_export_snapshot|pg_extension_config_dump|\" +\n \"pg_extension_update_paths|pg_function_is_visible|pg_get_constraintdef|pg_get_expr|\" +\n \"pg_get_function_arguments|pg_get_function_identity_arguments|\" +\n \"pg_get_function_result|pg_get_functiondef|pg_get_indexdef|pg_get_keywords|\" +\n \"pg_get_multixact_members|pg_get_ruledef|pg_get_serial_sequence|pg_get_triggerdef|\" +\n \"pg_get_userbyid|pg_get_viewdef|pg_has_role|pg_identify_object|pg_indexes_size|\" +\n \"pg_is_in_backup|pg_is_in_recovery|pg_is_other_temp_schema|pg_is_xlog_replay_paused|\" +\n \"pg_last_xact_replay_timestamp|pg_last_xlog_receive_location|\" +\n \"pg_last_xlog_replay_location|pg_listening_channels|pg_lock_status|pg_ls_dir|\" +\n \"pg_my_temp_schema|pg_node_tree_in|pg_node_tree_out|pg_node_tree_recv|\" +\n \"pg_node_tree_send|pg_notify|pg_opclass_is_visible|pg_operator_is_visible|\" +\n \"pg_opfamily_is_visible|pg_options_to_table|pg_postmaster_start_time|\" +\n \"pg_prepared_statement|pg_prepared_xact|pg_read_binary_file|pg_read_file|\" +\n \"pg_relation_filenode|pg_relation_filepath|pg_relation_is_updatable|pg_relation_size|\" +\n \"pg_reload_conf|pg_rotate_logfile|pg_sequence_parameters|pg_show_all_settings|\" +\n \"pg_size_pretty|pg_sleep|pg_start_backup|pg_stat_clear_snapshot|pg_stat_file|\" +\n \"pg_stat_get_activity|pg_stat_get_analyze_count|pg_stat_get_autoanalyze_count|\" +\n \"pg_stat_get_autovacuum_count|pg_stat_get_backend_activity|\" +\n \"pg_stat_get_backend_activity_start|pg_stat_get_backend_client_addr|\" +\n \"pg_stat_get_backend_client_port|pg_stat_get_backend_dbid|pg_stat_get_backend_idset|\" +\n \"pg_stat_get_backend_pid|pg_stat_get_backend_start|pg_stat_get_backend_userid|\" +\n \"pg_stat_get_backend_waiting|pg_stat_get_backend_xact_start|\" +\n \"pg_stat_get_bgwriter_buf_written_checkpoints|\" +\n \"pg_stat_get_bgwriter_buf_written_clean|pg_stat_get_bgwriter_maxwritten_clean|\" +\n \"pg_stat_get_bgwriter_requested_checkpoints|pg_stat_get_bgwriter_stat_reset_time|\" +\n \"pg_stat_get_bgwriter_timed_checkpoints|pg_stat_get_blocks_fetched|\" +\n \"pg_stat_get_blocks_hit|pg_stat_get_buf_alloc|pg_stat_get_buf_fsync_backend|\" +\n \"pg_stat_get_buf_written_backend|pg_stat_get_checkpoint_sync_time|\" +\n \"pg_stat_get_checkpoint_write_time|pg_stat_get_db_blk_read_time|\" +\n \"pg_stat_get_db_blk_write_time|pg_stat_get_db_blocks_fetched|\" +\n \"pg_stat_get_db_blocks_hit|pg_stat_get_db_conflict_all|\" +\n \"pg_stat_get_db_conflict_bufferpin|pg_stat_get_db_conflict_lock|\" +\n \"pg_stat_get_db_conflict_snapshot|pg_stat_get_db_conflict_startup_deadlock|\" +\n \"pg_stat_get_db_conflict_tablespace|pg_stat_get_db_deadlocks|\" +\n \"pg_stat_get_db_numbackends|pg_stat_get_db_stat_reset_time|\" +\n \"pg_stat_get_db_temp_bytes|pg_stat_get_db_temp_files|pg_stat_get_db_tuples_deleted|\" +\n \"pg_stat_get_db_tuples_fetched|pg_stat_get_db_tuples_inserted|\" +\n \"pg_stat_get_db_tuples_returned|pg_stat_get_db_tuples_updated|\" +\n \"pg_stat_get_db_xact_commit|pg_stat_get_db_xact_rollback|pg_stat_get_dead_tuples|\" +\n \"pg_stat_get_function_calls|pg_stat_get_function_self_time|\" +\n \"pg_stat_get_function_total_time|pg_stat_get_last_analyze_time|\" +\n \"pg_stat_get_last_autoanalyze_time|pg_stat_get_last_autovacuum_time|\" +\n \"pg_stat_get_last_vacuum_time|pg_stat_get_live_tuples|pg_stat_get_numscans|\" +\n \"pg_stat_get_tuples_deleted|pg_stat_get_tuples_fetched|\" +\n \"pg_stat_get_tuples_hot_updated|pg_stat_get_tuples_inserted|\" +\n \"pg_stat_get_tuples_returned|pg_stat_get_tuples_updated|pg_stat_get_vacuum_count|\" +\n \"pg_stat_get_wal_senders|pg_stat_get_xact_blocks_fetched|\" +\n \"pg_stat_get_xact_blocks_hit|pg_stat_get_xact_function_calls|\" +\n \"pg_stat_get_xact_function_self_time|pg_stat_get_xact_function_total_time|\" +\n \"pg_stat_get_xact_numscans|pg_stat_get_xact_tuples_deleted|\" +\n \"pg_stat_get_xact_tuples_fetched|pg_stat_get_xact_tuples_hot_updated|\" +\n \"pg_stat_get_xact_tuples_inserted|pg_stat_get_xact_tuples_returned|\" +\n \"pg_stat_get_xact_tuples_updated|pg_stat_reset|pg_stat_reset_shared|\" +\n \"pg_stat_reset_single_function_counters|pg_stat_reset_single_table_counters|\" +\n \"pg_stop_backup|pg_switch_xlog|pg_table_is_visible|pg_table_size|\" +\n \"pg_tablespace_databases|pg_tablespace_location|pg_tablespace_size|\" +\n \"pg_terminate_backend|pg_timezone_abbrevs|pg_timezone_names|pg_total_relation_size|\" +\n \"pg_trigger_depth|pg_try_advisory_lock|pg_try_advisory_lock_shared|\" +\n \"pg_try_advisory_xact_lock|pg_try_advisory_xact_lock_shared|pg_ts_config_is_visible|\" +\n \"pg_ts_dict_is_visible|pg_ts_parser_is_visible|pg_ts_template_is_visible|\" +\n \"pg_type_is_visible|pg_typeof|pg_xlog_location_diff|pg_xlog_replay_pause|\" +\n \"pg_xlog_replay_resume|pg_xlogfile_name|pg_xlogfile_name_offset|pi|plainto_tsquery|\" +\n \"plpgsql_call_handler|plpgsql_inline_handler|plpgsql_validator|point|point_above|\" +\n \"point_add|point_below|point_distance|point_div|point_eq|point_horiz|point_in|point_left|\" +\n \"point_mul|point_ne|point_out|point_recv|point_right|point_send|point_sub|point_vert|\" +\n \"poly_above|poly_below|poly_center|poly_contain|poly_contain_pt|poly_contained|\" +\n \"poly_distance|poly_in|poly_left|poly_npoints|poly_out|poly_overabove|poly_overbelow|\" +\n \"poly_overlap|poly_overleft|poly_overright|poly_recv|poly_right|poly_same|poly_send|\" +\n \"polygon|popen|position|positionjoinsel|positionsel|postgresql_fdw_validator|pow|power|\" +\n \"prsd_end|prsd_headline|prsd_lextype|prsd_nexttoken|prsd_start|pt_contained_circle|\" +\n \"pt_contained_poly|query_to_xml|query_to_xml_and_xmlschema|query_to_xmlschema|\" +\n \"querytree|quote_ident|quote_literal|quote_nullable|radians|radius|random|range_adjacent|\" +\n \"range_after|range_before|range_cmp|range_contained_by|range_contains|\" +\n \"range_contains_elem|range_eq|range_ge|range_gist_compress|range_gist_consistent|\" +\n \"range_gist_decompress|range_gist_penalty|range_gist_picksplit|range_gist_same|\" +\n \"range_gist_union|range_gt|range_in|range_intersect|range_le|range_lt|range_minus|\" +\n \"range_ne|range_out|range_overlaps|range_overleft|range_overright|range_recv|range_send|\" +\n \"range_typanalyze|range_union|rangesel|rank|record_eq|record_ge|record_gt|record_in|\" +\n \"record_le|record_lt|record_ne|record_out|record_recv|record_send|regclass|regclassin|\" +\n \"regclassout|regclassrecv|regclasssend|regconfigin|regconfigout|regconfigrecv|\" +\n \"regconfigsend|regdictionaryin|regdictionaryout|regdictionaryrecv|regdictionarysend|\" +\n \"regexeqjoinsel|regexeqsel|regexnejoinsel|regexnesel|regexp_matches|regexp_replace|\" +\n \"regexp_split_to_array|regexp_split_to_table|regoperatorin|regoperatorout|\" +\n \"regoperatorrecv|regoperatorsend|regoperin|regoperout|regoperrecv|regopersend|\" +\n \"regprocedurein|regprocedureout|regprocedurerecv|regproceduresend|regprocin|regprocout|\" +\n \"regprocrecv|regprocsend|regr_avgx|regr_avgy|regr_count|regr_intercept|regr_r2|\" +\n \"regr_slope|regr_sxx|regr_sxy|regr_syy|regtypein|regtypeout|regtyperecv|regtypesend|\" +\n \"reltime|reltimeeq|reltimege|reltimegt|reltimein|reltimele|reltimelt|reltimene|reltimeout|\" +\n \"reltimerecv|reltimesend|repeat|replace|reverse|right|round|row_number|row_to_json|rpad|\" +\n \"rtrim|scalargtjoinsel|scalargtsel|scalarltjoinsel|scalarltsel|schema_to_xml|\" +\n \"schema_to_xml_and_xmlschema|schema_to_xmlschema|session_user|set_bit|set_byte|\" +\n \"set_config|set_masklen|setseed|setval|setweight|shell_in|shell_out|\" +\n \"shift_jis_2004_to_euc_jis_2004|shift_jis_2004_to_utf8|shobj_description|sign|\" +\n \"similar_escape|sin|sjis_to_euc_jp|sjis_to_mic|sjis_to_utf8|slope|smgreq|smgrin|smgrne|\" +\n \"smgrout|spg_kd_choose|spg_kd_config|spg_kd_inner_consistent|spg_kd_picksplit|\" +\n \"spg_quad_choose|spg_quad_config|spg_quad_inner_consistent|spg_quad_leaf_consistent|\" +\n \"spg_quad_picksplit|spg_range_quad_choose|spg_range_quad_config|\" +\n \"spg_range_quad_inner_consistent|spg_range_quad_leaf_consistent|\" +\n \"spg_range_quad_picksplit|spg_text_choose|spg_text_config|spg_text_inner_consistent|\" +\n \"spg_text_leaf_consistent|spg_text_picksplit|spgbeginscan|spgbuild|spgbuildempty|\" +\n \"spgbulkdelete|spgcanreturn|spgcostestimate|spgendscan|spggetbitmap|spggettuple|\" +\n \"spginsert|spgmarkpos|spgoptions|spgrescan|spgrestrpos|spgvacuumcleanup|split_part|sqrt|\" +\n \"statement_timestamp|stddev|stddev_pop|stddev_samp|string_agg|string_agg_finalfn|\" +\n \"string_agg_transfn|string_to_array|strip|strpos|substr|substring|sum|\" +\n \"suppress_redundant_updates_trigger|table_to_xml|table_to_xml_and_xmlschema|\" +\n \"table_to_xmlschema|tan|text|text_ge|text_gt|text_larger|text_le|text_lt|text_pattern_ge|\" +\n \"text_pattern_gt|text_pattern_le|text_pattern_lt|text_smaller|textanycat|textcat|texteq|\" +\n \"texticlike|texticnlike|texticregexeq|texticregexne|textin|textlen|textlike|textne|\" +\n \"textnlike|textout|textrecv|textregexeq|textregexne|textsend|thesaurus_init|\" +\n \"thesaurus_lexize|tideq|tidge|tidgt|tidin|tidlarger|tidle|tidlt|tidne|tidout|tidrecv|tidsend|\" +\n \"tidsmaller|time_cmp|time_eq|time_ge|time_gt|time_hash|time_in|time_larger|time_le|time_lt|\" +\n \"time_mi_interval|time_mi_time|time_ne|time_out|time_pl_interval|time_recv|time_send|\" +\n \"time_smaller|time_transform|timedate_pl|timemi|timenow|timeofday|timepl|timestamp_cmp|\" +\n \"timestamp_cmp_date|timestamp_cmp_timestamptz|timestamp_eq|timestamp_eq_date|\" +\n \"timestamp_eq_timestamptz|timestamp_ge|timestamp_ge_date|timestamp_ge_timestamptz|\" +\n \"timestamp_gt|timestamp_gt_date|timestamp_gt_timestamptz|timestamp_hash|timestamp_in|\" +\n \"timestamp_larger|timestamp_le|timestamp_le_date|timestamp_le_timestamptz|\" +\n \"timestamp_lt|timestamp_lt_date|timestamp_lt_timestamptz|timestamp_mi|\" +\n \"timestamp_mi_interval|timestamp_ne|timestamp_ne_date|timestamp_ne_timestamptz|\" +\n \"timestamp_out|timestamp_pl_interval|timestamp_recv|timestamp_send|timestamp_smaller|\" +\n \"timestamp_sortsupport|timestamp_transform|timestamptypmodin|timestamptypmodout|\" +\n \"timestamptz_cmp|timestamptz_cmp_date|timestamptz_cmp_timestamp|timestamptz_eq|\" +\n \"timestamptz_eq_date|timestamptz_eq_timestamp|timestamptz_ge|timestamptz_ge_date|\" +\n \"timestamptz_ge_timestamp|timestamptz_gt|timestamptz_gt_date|\" +\n \"timestamptz_gt_timestamp|timestamptz_in|timestamptz_larger|timestamptz_le|\" +\n \"timestamptz_le_date|timestamptz_le_timestamp|timestamptz_lt|timestamptz_lt_date|\" +\n \"timestamptz_lt_timestamp|timestamptz_mi|timestamptz_mi_interval|timestamptz_ne|\" +\n \"timestamptz_ne_date|timestamptz_ne_timestamp|timestamptz_out|\" +\n \"timestamptz_pl_interval|timestamptz_recv|timestamptz_send|timestamptz_smaller|\" +\n \"timestamptztypmodin|timestamptztypmodout|timetypmodin|timetypmodout|timetz_cmp|\" +\n \"timetz_eq|timetz_ge|timetz_gt|timetz_hash|timetz_in|timetz_larger|timetz_le|timetz_lt|\" +\n \"timetz_mi_interval|timetz_ne|timetz_out|timetz_pl_interval|timetz_recv|timetz_send|\" +\n \"timetz_smaller|timetzdate_pl|timetztypmodin|timetztypmodout|timezone|tinterval|\" +\n \"tintervalct|tintervalend|tintervaleq|tintervalge|tintervalgt|tintervalin|tintervalle|\" +\n \"tintervalleneq|tintervallenge|tintervallengt|tintervallenle|tintervallenlt|\" +\n \"tintervallenne|tintervallt|tintervalne|tintervalout|tintervalov|tintervalrecv|\" +\n \"tintervalrel|tintervalsame|tintervalsend|tintervalstart|to_ascii|to_char|to_date|to_hex|\" +\n \"to_json|to_number|to_timestamp|to_tsquery|to_tsvector|transaction_timestamp|translate|\" +\n \"trigger_in|trigger_out|trunc|ts_debug|ts_headline|ts_lexize|ts_match_qv|ts_match_tq|\" +\n \"ts_match_tt|ts_match_vq|ts_parse|ts_rank|ts_rank_cd|ts_rewrite|ts_stat|ts_token_type|\" +\n \"ts_typanalyze|tsmatchjoinsel|tsmatchsel|tsq_mcontained|tsq_mcontains|tsquery_and|\" +\n \"tsquery_cmp|tsquery_eq|tsquery_ge|tsquery_gt|tsquery_le|tsquery_lt|tsquery_ne|\" +\n \"tsquery_not|tsquery_or|tsqueryin|tsqueryout|tsqueryrecv|tsquerysend|tsrange|\" +\n \"tsrange_subdiff|tstzrange|tstzrange_subdiff|tsvector_cmp|tsvector_concat|tsvector_eq|\" +\n \"tsvector_ge|tsvector_gt|tsvector_le|tsvector_lt|tsvector_ne|tsvector_update_trigger|\" +\n \"tsvector_update_trigger_column|tsvectorin|tsvectorout|tsvectorrecv|tsvectorsend|\" +\n \"txid_current|txid_current_snapshot|txid_snapshot_in|txid_snapshot_out|\" +\n \"txid_snapshot_recv|txid_snapshot_send|txid_snapshot_xip|txid_snapshot_xmax|\" +\n \"txid_snapshot_xmin|txid_visible_in_snapshot|uhc_to_utf8|unique_key_recheck|unknownin|\" +\n \"unknownout|unknownrecv|unknownsend|unnest|upper|upper_inc|upper_inf|utf8_to_ascii|\" +\n \"utf8_to_big5|utf8_to_euc_cn|utf8_to_euc_jis_2004|utf8_to_euc_jp|utf8_to_euc_kr|\" +\n \"utf8_to_euc_tw|utf8_to_gb18030|utf8_to_gbk|utf8_to_iso8859|utf8_to_iso8859_1|\" +\n \"utf8_to_johab|utf8_to_koi8r|utf8_to_koi8u|utf8_to_shift_jis_2004|utf8_to_sjis|\" +\n \"utf8_to_uhc|utf8_to_win|uuid_cmp|uuid_eq|uuid_ge|uuid_gt|uuid_hash|uuid_in|uuid_le|\" +\n \"uuid_lt|uuid_ne|uuid_out|uuid_recv|uuid_send|var_pop|var_samp|varbit_in|varbit_out|\" +\n \"varbit_recv|varbit_send|varbit_transform|varbitcmp|varbiteq|varbitge|varbitgt|varbitle|\" +\n \"varbitlt|varbitne|varbittypmodin|varbittypmodout|varchar_transform|varcharin|\" +\n \"varcharout|varcharrecv|varcharsend|varchartypmodin|varchartypmodout|variance|version|\" +\n \"void_in|void_out|void_recv|void_send|width|width_bucket|win1250_to_latin2|\" +\n \"win1250_to_mic|win1251_to_iso|win1251_to_koi8r|win1251_to_mic|win1251_to_win866|\" +\n \"win866_to_iso|win866_to_koi8r|win866_to_mic|win866_to_win1251|win_to_utf8|xideq|\" +\n \"xideqint4|xidin|xidout|xidrecv|xidsend|xml|xml_in|xml_is_well_formed|\" +\n \"xml_is_well_formed_content|xml_is_well_formed_document|xml_out|xml_recv|xml_send|\" +\n \"xmlagg|xmlcomment|xmlconcat2|xmlexists|xmlvalidate|xpath|xpath_exists\");\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": builtinFunctions,\n \"keyword\": keywords\n }, \"identifier\", true);\n var sqlRules = [{\n token: \"string\", // single line string -- assume dollar strings if multi-line for now\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"variable.language\", // pg identifier\n regex: '\".*?\"'\n }, {\n token: \"constant.numeric\", // float\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_][a-zA-Z0-9_$]*\\\\b\" // TODO - Unicode in identifiers\n }, {\n token: \"keyword.operator\",\n regex: \"!|!!|!~|!~\\\\*|!~~|!~~\\\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\\\&|\\\\&\\\\&|\\\\&<|\\\\&<\\\\||\\\\&>|\\\\*|\\\\+|\" +\n \"\\\\-|/|<|<#>|<\\\\->|<<|<<=|<<\\\\||<=|<>|<\\\\?>|<@|<\\\\^|=|>|>=|>>|>>=|>\\\\^|\\\\?#|\\\\?\\\\-|\\\\?\\\\-\\\\||\" +\n \"\\\\?\\\\||\\\\?\\\\|\\\\||@|@\\\\-@|@>|@@|@@@|\\\\^|\\\\||\\\\|\\\\&>|\\\\|/|\\\\|>>|\\\\|\\\\||\\\\|\\\\|/|~|~\\\\*|~<=~|~<~|\" +\n \"~=|~>=~|~>~|~~|~~\\\\*\"\n }, {\n token: \"paren.lparen\",\n regex: \"[\\\\(]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\)]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ];\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: \"--.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment\", // multi-line comment\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"keyword.statementBegin\",\n regex: \"[a-zA-Z]+\", // Could enumerate starting keywords but this allows things to work when new statements are added.\n next: \"statement\"\n }, {\n token: \"support.buildin\", // psql directive\n regex: \"^\\\\\\\\[\\\\S]+.*$\"\n }\n ],\n \"statement\": [{\n token: \"comment\",\n regex: \"--.*$\"\n }, {\n token: \"comment\", // multi-line comment\n regex: \"\\\\/\\\\*\",\n next: \"commentStatement\"\n }, {\n token: \"statementEnd\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \"\\\\$perl\\\\$\",\n next: \"perl-start\"\n }, {\n token: \"string\",\n regex: \"\\\\$python\\\\$\",\n next: \"python-start\"\n }, {\n token: \"string\",\n regex: \"\\\\$json\\\\$\",\n next: \"json-start\"\n }, {\n token: \"string\",\n regex: \"\\\\$(js|javascript)\\\\$\",\n next: \"javascript-start\"\n }, {\n token: \"string\",\n regex: \"\\\\$\\\\$$\",\n next: \"dollarSql\"\n }, {\n token: \"string\",\n regex: \"\\\\$[\\\\w_0-9]*\\\\$\",\n next: \"dollarStatementString\"\n }\n ].concat(sqlRules),\n \"dollarSql\": [{\n token: \"comment\",\n regex: \"--.*$\"\n }, {\n token: \"comment\", // multi-line comment\n regex: \"\\\\/\\\\*\",\n next: \"commentDollarSql\"\n }, {\n token: [\"keyword\", \"statementEnd\", \"text\", \"string\"], // end quoting with dollar at the start of a line\n regex: \"(^|END)(;)?(\\\\s*)(\\\\$\\\\$)\",\n next: \"statement\"\n }, {\n token: \"string\",\n regex: \"\\\\$[\\\\w_0-9]*\\\\$\",\n next: \"dollarSqlString\"\n }\n ].concat(sqlRules),\n \"comment\": [{\n token: \"comment\", // closing comment\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"commentStatement\": [{\n token: \"comment\", // closing comment\n regex: \"\\\\*\\\\/\",\n next: \"statement\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"commentDollarSql\": [{\n token: \"comment\", // closing comment\n regex: \"\\\\*\\\\/\",\n next: \"dollarSql\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"dollarStatementString\": [{\n token: \"string\", // closing dollarstring\n regex: \".*?\\\\$[\\\\w_0-9]*\\\\$\",\n next: \"statement\"\n }, {\n token: \"string\", // dollarstring spanning whole line\n regex: \".+\"\n }\n ],\n \"dollarSqlString\": [{\n token: \"string\", // closing dollarstring\n regex: \".*?\\\\$[\\\\w_0-9]*\\\\$\",\n next: \"dollarSql\"\n }, {\n token: \"string\", // dollarstring spanning whole line\n regex: \".+\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n this.embedRules(PerlHighlightRules, \"perl-\", [{ token: \"string\", regex: \"\\\\$perl\\\\$\", next: \"statement\" }]);\n this.embedRules(PythonHighlightRules, \"python-\", [{ token: \"string\", regex: \"\\\\$python\\\\$\", next: \"statement\" }]);\n this.embedRules(JsonHighlightRules, \"json-\", [{ token: \"string\", regex: \"\\\\$json\\\\$\", next: \"statement\" }]);\n this.embedRules(JavaScriptHighlightRules, \"javascript-\", [{ token: \"string\", regex: \"\\\\$(js|javascript)\\\\$\", next: \"statement\" }]);\n};\noop.inherits(PgsqlHighlightRules, TextHighlightRules);\nexports.PgsqlHighlightRules = PgsqlHighlightRules;\n\n});\n\nace.define(\"ace/mode/pgsql\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/pgsql_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar TextMode = require(\"../mode/text\").Mode;\nvar PgsqlHighlightRules = require(\"./pgsql_highlight_rules\").PgsqlHighlightRules;\nvar Mode = function () {\n this.HighlightRules = PgsqlHighlightRules;\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"--\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n if (state == \"start\" || state == \"keyword.statementEnd\") {\n return \"\";\n }\n else {\n return this.$getIndent(line); // Keep whatever indent the previous line has\n }\n };\n this.$id = \"ace/mode/pgsql\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/pgsql\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/theme/sqlserver-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \".ace-sqlserver .ace_gutter {\\n background: #ebebeb;\\n color: #333;\\n overflow: hidden;\\n}\\n\\n.ace-sqlserver .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-sqlserver {\\n background-color: #FFFFFF;\\n color: black;\\n}\\n\\n.ace-sqlserver .ace_identifier {\\n color: black;\\n}\\n\\n.ace-sqlserver .ace_keyword {\\n color: #0000FF;\\n}\\n\\n.ace-sqlserver .ace_numeric {\\n color: black;\\n}\\n\\n.ace-sqlserver .ace_storage {\\n color: #11B7BE;\\n}\\n\\n.ace-sqlserver .ace_keyword.ace_operator,\\n.ace-sqlserver .ace_lparen,\\n.ace-sqlserver .ace_rparen,\\n.ace-sqlserver .ace_punctuation {\\n color: #808080;\\n}\\n\\n.ace-sqlserver .ace_set.ace_statement {\\n color: #0000FF;\\n text-decoration: underline;\\n}\\n\\n.ace-sqlserver .ace_cursor {\\n color: black;\\n}\\n\\n.ace-sqlserver .ace_invisible {\\n color: rgb(191, 191, 191);\\n}\\n\\n.ace-sqlserver .ace_constant.ace_buildin {\\n color: rgb(88, 72, 246);\\n}\\n\\n.ace-sqlserver .ace_constant.ace_language {\\n color: #979797;\\n}\\n\\n.ace-sqlserver .ace_constant.ace_library {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-sqlserver .ace_invalid {\\n background-color: rgb(153, 0, 0);\\n color: white;\\n}\\n\\n.ace-sqlserver .ace_support.ace_function {\\n color: #FF00FF;\\n}\\n\\n.ace-sqlserver .ace_support.ace_constant {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-sqlserver .ace_class {\\n color: #008080;\\n}\\n\\n.ace-sqlserver .ace_support.ace_other {\\n color: #6D79DE;\\n}\\n\\n.ace-sqlserver .ace_variable.ace_parameter {\\n font-style: italic;\\n color: #FD971F;\\n}\\n\\n.ace-sqlserver .ace_comment {\\n color: #008000;\\n}\\n\\n.ace-sqlserver .ace_constant.ace_numeric {\\n color: black;\\n}\\n\\n.ace-sqlserver .ace_variable {\\n color: rgb(49, 132, 149);\\n}\\n\\n.ace-sqlserver .ace_xml-pe {\\n color: rgb(104, 104, 91);\\n}\\n\\n.ace-sqlserver .ace_support.ace_storedprocedure {\\n color: #800000;\\n}\\n\\n.ace-sqlserver .ace_heading {\\n color: rgb(12, 7, 255);\\n}\\n\\n.ace-sqlserver .ace_list {\\n color: rgb(185, 6, 144);\\n}\\n\\n.ace-sqlserver .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n\\n.ace-sqlserver .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-sqlserver .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-sqlserver .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-sqlserver .ace_marker-layer .ace_active-line {\\n background: rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-sqlserver .ace_gutter-active-line {\\n background-color: #dcdcdc;\\n}\\n\\n.ace-sqlserver .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-sqlserver .ace_meta.ace_tag {\\n color: #0000FF;\\n}\\n\\n.ace-sqlserver .ace_string.ace_regex {\\n color: #FF0000;\\n}\\n\\n.ace-sqlserver .ace_string {\\n color: #FF0000;\\n}\\n\\n.ace-sqlserver .ace_entity.ace_other.ace_attribute-name {\\n color: #994409;\\n}\\n\\n.ace-sqlserver .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-sqlserver .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n} \\n\";\n\n});\n\nace.define(\"ace/theme/sqlserver\",[\"require\",\"exports\",\"module\",\"ace/theme/sqlserver-css\",\"ace/lib/dom\"], function(require, exports, module){exports.isDark = false;\nexports.cssClass = \"ace-sqlserver\";\nexports.cssText = require(\"./sqlserver-css\");\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n}); (function() {\n ace.require([\"ace/theme/sqlserver\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","module.exports = {\n \"version\": \"0.24.0\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"viewBox\":\"0 0 384 512\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"m336 0h-288c-26.51 0-48 21.49-48 48v464l192-112 192 112v-464c0-26.51-21.49-48-48-48zm16 456.287-160-93.333-160 93.333v-408.287c0-8.822 7.178-16 16-16h288c8.822 0 16 7.178 16 16z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"viewBox\":\"0 0 384 512\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"m0 512v-464c0-26.51 21.49-48 48-48h288c26.51 0 48 21.49 48 48v464l-192-112z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [\"svg-inline--fa fa-chart-bar fa-w-16\",classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"aria-hidden\":\"true\",\"data-prefix\":\"fal\",\"data-icon\":\"chart-bar\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 512 512\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"fill\":\"currentColor\",\"d\":\"M424 352h16c4.4 0 8-3.6 8-8V104c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8zm-96 0h16c4.4 0 8-3.6 8-8V200c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm-192 0h16c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8zm96 0h16c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v208c0 4.4 3.6 8 8 8zm272 64H32V72c0-4.42-3.58-8-8-8H8c-4.42 0-8 3.58-8 8v360c0 8.84 7.16 16 16 16h488c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"fill\":\"none\",\"viewBox\":\"0 0 512 385\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"m503.5 352.5h-472v-344c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v360c0 8.84 7.16 16 16 16h488c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm-405.66-152.97c-3.12 3.12-3.12 8.19 0 11.31l11.31 11.31c3.12 3.12 8.19 3.12 11.31 0l72.69-72.01 84.69 84.69c6.25 6.25 16.38 6.25 22.63 0l93.53-93.53 23.5-23.8 27-28 21-21.5 13.5-15c10-10-9-30-20-20.5l-33.5 32.5-31.5 30.5-22.62 23.17-82.22 82.22-84.63-84.63c-6.23-6.23-16.32-6.25-22.57-.05z\",\"fill\":\"#000\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [\"svg-inline--fa fa-chart-pie fa-w-17\",classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"aria-hidden\":\"true\",\"data-prefix\":\"fal\",\"data-icon\":\"chart-pie\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 544 512\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"fill\":\"currentColor\",\"d\":\"M527.79 288H290.5l158.03 158.03a16.51 16.51 0 0 0 11.62 4.81c3.82 0 7.62-1.35 10.57-4.13 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-67.91 124.12L367.76 320h140.88c-8.12 34.16-24.96 66-48.76 92.12zM224 288V50.71c0-8.83-7.18-16.21-15.74-16.21-.69 0-1.4.05-2.11.15C86.99 51.49-4.1 155.6.14 280.37 4.47 407.53 113.18 512 240.13 512c.98 0 1.93-.01 2.91-.02 50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288zm18.63 191.98l-2.51.02c-109.04 0-204.3-91.92-208-200.72C28.72 179.15 96.33 92.25 192 69.83v231.42l9.37 9.37 141.84 141.84c-30.56 17.62-64.96 27.08-100.58 27.52zM511.96 223.2C503.72 103.74 408.26 8.28 288.8.04c-.35-.03-.7-.04-1.04-.04C279.1 0 272 7.45 272 16.23V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM304 208V33.9c89.25 13.81 160.28 84.85 174.1 174.1H304z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [\"svg-inline--fa fa-chevron-down fa-w-14\",classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"aria-hidden\":\"true\",\"data-prefix\":\"fal\",\"data-icon\":\"chevron-down\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 448 512\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"fill\":\"currentColor\",\"d\":\"M443.5 162.6l-7.1-7.1c-4.7-4.7-12.3-4.7-17 0L224 351 28.5 155.5c-4.7-4.7-12.3-4.7-17 0l-7.1 7.1c-4.7 4.7-4.7 12.3 0 17l211 211.1c4.7 4.7 12.3 4.7 17 0l211-211.1c4.8-4.7 4.8-12.3.1-17z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [\"svg-inline--fa fa-code fa-w-18\",classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"aria-hidden\":\"true\",\"data-prefix\":\"fal\",\"data-icon\":\"code\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 576 512\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"fill\":\"currentColor\",\"d\":\"M228.5 511.8l-25-7.1c-3.2-.9-5-4.2-4.1-7.4L340.1 4.4c.9-3.2 4.2-5 7.4-4.1l25 7.1c3.2.9 5 4.2 4.1 7.4L235.9 507.6c-.9 3.2-4.3 5.1-7.4 4.2zm-75.6-125.3l18.5-20.9c1.9-2.1 1.6-5.3-.5-7.1L49.9 256l121-102.5c2.1-1.8 2.4-5 .5-7.1l-18.5-20.9c-1.8-2.1-5-2.3-7.1-.4L1.7 252.3c-2.3 2-2.3 5.5 0 7.5L145.8 387c2.1 1.8 5.3 1.6 7.1-.5zm277.3.4l144.1-127.2c2.3-2 2.3-5.5 0-7.5L430.2 125.1c-2.1-1.8-5.2-1.6-7.1.4l-18.5 20.9c-1.9 2.1-1.6 5.3.5 7.1l121 102.5-121 102.5c-2.1 1.8-2.4 5-.5 7.1l18.5 20.9c1.8 2.1 5 2.3 7.1.4z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [\"svg-inline--fa fa-database fa-w-14\",classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"aria-hidden\":\"true\",\"data-prefix\":\"fal\",\"data-icon\":\"database\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 448 512\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"fill\":\"currentColor\",\"d\":\"M224 32c106 0 192 28.75 192 64v32c0 35.25-86 64-192 64S32 163.25 32 128V96c0-35.25 86-64 192-64m192 149.5V224c0 35.25-86 64-192 64S32 259.25 32 224v-42.5c41.25 29 116.75 42.5 192 42.5s150.749-13.5 192-42.5m0 96V320c0 35.25-86 64-192 64S32 355.25 32 320v-42.5c41.25 29 116.75 42.5 192 42.5s150.749-13.5 192-42.5m0 96V416c0 35.25-86 64-192 64S32 451.25 32 416v-42.5c41.25 29 116.75 42.5 192 42.5s150.749-13.5 192-42.5M224 0C145.858 0 0 18.801 0 96v320c0 77.338 146.096 96 224 96 78.142 0 224-18.801 224-96V96c0-77.338-146.096-96-224-96z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [\"svg-inline--fa fa-lock-alt fa-w-14\",classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"aria-hidden\":\"true\",\"data-prefix\":\"fal\",\"data-icon\":\"lock-alt\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 448 512\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"fill\":\"currentColor\",\"d\":\"M224 420c-11 0-20-9-20-20v-64c0-11 9-20 20-20s20 9 20 20v64c0 11-9 20-20 20zm224-148v192c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48h16v-64C64 71.6 136-.3 224.5 0 312.9.3 384 73.1 384 161.5V224h16c26.5 0 48 21.5 48 48zM96 224h256v-64c0-70.6-57.4-128-128-128S96 89.4 96 160v64zm320 240V272c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h352c8.8 0 16-7.2 16-16z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"fill\":\"none\",\"viewBox\":\"0 0 448 512\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"m136.97 131.515 7.071 7.07c4.686 4.686 4.686 12.284 0 16.971l-83.928 83.444h375.887c6.627 0 12 5.373 12 12v10c0 6.627-5.373 12-12 12h-375.887l83.928 83.444c4.686 4.686 4.686 12.284 0 16.971l-7.071 7.07c-4.686 4.686-12.284 4.686-16.97 0l-116.48499-116c-4.686-4.686-4.686-12.284 0-16.971l116.48499-115.999c4.686-4.687 12.284-4.687 16.97 0z\",\"fill\":\"#000\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [\"svg-inline--fa fa-redo fa-w-16\",classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"aria-hidden\":\"true\",\"data-prefix\":\"fal\",\"data-icon\":\"redo\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 512 512\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"fill\":\"currentColor\",\"d\":\"M492 8h-10c-6.627 0-12 5.373-12 12v110.625C426.804 57.047 346.761 7.715 255.207 8.001 118.82 8.428 7.787 120.009 8 256.396 8.214 393.181 119.166 504 256 504c63.926 0 122.202-24.187 166.178-63.908 5.113-4.618 5.354-12.561.482-17.433l-7.069-7.069c-4.503-4.503-11.749-4.714-16.482-.454C361.218 449.238 311.065 470 256 470c-117.744 0-214-95.331-214-214 0-117.744 95.331-214 214-214 82.862 0 154.737 47.077 190.289 116H332c-6.627 0-12 5.373-12 12v10c0 6.627 5.373 12 12 12h160c6.627 0 12-5.373 12-12V20c0-6.627-5.373-12-12-12z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [\"svg-inline--fa fa-star fa-w-18\",classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"aria-hidden\":\"true\",\"data-prefix\":\"fal\",\"data-icon\":\"star\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 576 512\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"fill\":\"currentColor\",\"d\":\"M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM405.8 317.9l27.8 162L288 403.5 142.5 480l27.8-162L52.5 203.1l162.7-23.6L288 32l72.8 147.5 162.7 23.6-117.7 114.8z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"viewBox\":\"0 0 576 512\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"m259.3 17.8-65.3 132.4-146.1 21.3c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7l130.7-68.7 130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6l-146.1-21.3-65.3-132.4c-11.7-23.6-45.6-23.9-57.4 0z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"fill\":\"none\",\"viewBox\":\"0 0 512 448\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"m464 0h-416c-26.51 0-48 21.49-48 48v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48v-352c0-26.51-21.49-48-48-48zm-304 416h-112c-8.837 0-16-7.163-16-16v-80h128zm0-128h-128v-96h128zm0-128h-128v-96h128zm160 256h-128v-96h128zm0-128h-128v-96h128zm0-128h-128v-96h128zm160 160v80c0 8.837-7.163 16-16 16h-112v-96zm0-32h-128v-96h128zm0-128h-128v-96h128z\",\"fill\":\"#000\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [\"svg-inline--fa fa-times fa-w-10\",classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"aria-hidden\":\"true\",\"data-prefix\":\"fal\",\"data-icon\":\"times\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 320 512\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"fill\":\"currentColor\",\"d\":\"M193.94 256L296.5 153.44l21.15-21.15c3.12-3.12 3.12-8.19 0-11.31l-22.63-22.63c-3.12-3.12-8.19-3.12-11.31 0L160 222.06 36.29 98.34c-3.12-3.12-8.19-3.12-11.31 0L2.34 120.97c-3.12 3.12-3.12 8.19 0 11.31L126.06 256 2.34 379.71c-3.12 3.12-3.12 8.19 0 11.31l22.63 22.63c3.12 3.12 8.19 3.12 11.31 0L160 289.94 262.56 392.5l21.15 21.15c3.12 3.12 8.19 3.12 11.31 0l22.63-22.63c3.12-3.12 3.12-8.19 0-11.31L193.94 256z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"width\":\"101\",\"height\":\"23\",\"viewBox\":\"0 0 101 23\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"M52.3577 6.01646C55.2377 6.01646 56.6777 7.72042 56.6777 11.1284V18.4964H53.0537V11.2964C53.0537 10.4484 52.8937 9.83242 52.5737 9.44842C52.2697 9.04842 51.7817 8.84842 51.1097 8.84842C50.3097 8.84842 49.6697 9.10441 49.1897 9.61642C48.7097 10.1284 48.4697 10.8164 48.4697 11.6804V18.4964H44.8457V0.832455H48.4697V7.98442C48.9017 7.34442 49.4537 6.85646 50.1257 6.52046C50.7977 6.18446 51.5417 6.01646 52.3577 6.01646ZM70.7965 6.32845V18.4964H67.2205V16.6964C66.8525 17.3204 66.3325 17.8084 65.6605 18.1604C64.9885 18.5124 64.2285 18.6884 63.3805 18.6884C62.3245 18.6884 61.3885 18.4324 60.5725 17.9204C59.7725 17.4084 59.1405 16.6804 58.6765 15.7364C58.2285 14.7764 58.0045 13.6724 58.0045 12.4244C58.0045 11.1764 58.2285 10.0644 58.6765 9.08842C59.1405 8.11242 59.7805 7.36042 60.5965 6.83246C61.4125 6.28846 62.3405 6.01646 63.3805 6.01646C64.2285 6.01646 64.9885 6.20046 65.6605 6.56846C66.3325 6.93646 66.8525 7.43242 67.2205 8.05642V6.32845H70.7965ZM64.4365 15.9284C65.3325 15.9284 66.0205 15.6244 66.5005 15.0164C66.9805 14.4084 67.2205 13.5284 67.2205 12.3764C67.2205 11.2244 66.9805 10.3444 66.5005 9.73642C66.0205 9.11242 65.3325 8.80042 64.4365 8.80042C63.5405 8.80042 62.8445 9.12042 62.3485 9.76042C61.8525 10.4004 61.6045 11.2884 61.6045 12.4244C61.6045 13.5604 61.8445 14.4324 62.3245 15.0404C62.8205 15.6324 63.5245 15.9284 64.4365 15.9284ZM80.2017 6.01646C81.2577 6.01646 82.1937 6.28046 83.0097 6.80846C83.8257 7.32042 84.4577 8.05642 84.9057 9.01642C85.3537 9.96042 85.5777 11.0564 85.5777 12.3044C85.5777 13.5524 85.3457 14.6644 84.8817 15.6404C84.4337 16.6004 83.8017 17.3524 82.9857 17.8964C82.1697 18.4244 81.2417 18.6884 80.2017 18.6884C79.3537 18.6884 78.5857 18.5124 77.8977 18.1604C77.2257 17.7924 76.7137 17.2964 76.3617 16.6724V18.4964H72.7617V0.832455H76.3857V8.03242C76.7377 7.40842 77.2497 6.92046 77.9217 6.56846C78.6097 6.20046 79.3697 6.01646 80.2017 6.01646ZM79.1697 15.9284C80.0657 15.9284 80.7537 15.6164 81.2337 14.9924C81.7137 14.3684 81.9537 13.4724 81.9537 12.3044C81.9537 11.1844 81.7137 10.3204 81.2337 9.71242C80.7537 9.10442 80.0657 8.80042 79.1697 8.80042C78.2737 8.80042 77.5777 9.11242 77.0817 9.73642C76.6017 10.3444 76.3617 11.2164 76.3617 12.3524C76.3617 13.5044 76.6017 14.3924 77.0817 15.0164C77.5777 15.6244 78.2737 15.9284 79.1697 15.9284ZM86.9423 6.32845H90.5663V18.4964H86.9423V6.32845ZM90.6863 0.616455V4.02446H86.8223V0.616455H90.6863ZM97.1278 9.04042V13.7684C97.1278 14.4404 97.3038 14.9364 97.6558 15.2564C98.0078 15.5604 98.4638 15.7124 99.0238 15.7124C99.3758 15.7124 99.7758 15.6564 100.224 15.5444V18.3524C99.6478 18.5764 98.9518 18.6884 98.1358 18.6884C96.6322 18.6884 95.4802 18.2644 94.6802 17.4164C93.8962 16.5684 93.5042 15.3764 93.5042 13.8404V9.04042H91.2002V6.32845H93.5042V3.47246L97.1278 2.29646V6.32845H100.224V9.04042H97.1278Z\",\"fill\":\"#000\"}}),_c('path',{attrs:{\"d\":\"M7.03579 18.5832C5.73984 18.5832 4.49184 18.4152 3.29184 18.0792C2.10784 17.7272 1.12384 17.2392 0.339844 16.6152L1.53984 13.9272C3.18784 15.0792 5.02784 15.6552 7.05979 15.6552C8.14779 15.6552 8.97979 15.4872 9.55579 15.1512C10.1478 14.7992 10.4438 14.3112 10.4438 13.6872C10.4438 13.1432 10.1718 12.7192 9.62779 12.4152C9.09979 12.0952 8.16379 11.7912 6.81984 11.5032C5.31584 11.1992 4.11584 10.8312 3.21984 10.3992C2.33984 9.95122 1.69184 9.41522 1.27584 8.79122C0.875844 8.15122 0.675844 7.35922 0.675844 6.41523C0.675844 5.39123 0.955844 4.47123 1.51584 3.65523C2.09184 2.83923 2.89184 2.20723 3.91584 1.75923C4.93984 1.29523 6.12384 1.06323 7.46779 1.06323C8.68379 1.06323 9.85179 1.23923 10.9718 1.59123C12.0918 1.94323 12.9878 2.42323 13.6598 3.03123L12.4598 5.71923C10.9558 4.56723 9.29979 3.99123 7.49179 3.99123C6.53184 3.99123 5.76384 4.18323 5.18784 4.56723C4.61184 4.95123 4.32384 5.47123 4.32384 6.12723C4.32384 6.51123 4.42784 6.83123 4.63584 7.08722C4.85984 7.34322 5.22784 7.57522 5.73984 7.78322C6.25184 7.97522 6.97984 8.16722 7.92379 8.35922C10.1158 8.83922 11.6918 9.46322 12.6518 10.2312C13.6278 10.9992 14.1158 12.0472 14.1158 13.3752C14.1158 14.9752 13.4918 16.2472 12.2438 17.1912C10.9958 18.1192 9.25979 18.5832 7.03579 18.5832ZM26.6013 17.6952C26.9533 18.3032 27.3853 18.8712 27.8973 19.3992C28.4253 19.9272 29.0253 20.4712 29.6973 21.0312L27.1773 22.9512C25.4973 21.8152 24.1453 20.3512 23.1213 18.5592C22.9773 18.5752 22.7773 18.5832 22.5213 18.5832C20.8253 18.5832 19.3453 18.2312 18.0813 17.5272C16.8333 16.8072 15.8653 15.7832 15.1773 14.4552C14.5053 13.1272 14.1693 11.5752 14.1693 9.79922C14.1693 8.02322 14.5053 6.47923 15.1773 5.16723C15.8653 3.85523 16.8333 2.84723 18.0813 2.14323C19.3453 1.42323 20.8253 1.06323 22.5213 1.06323C24.2173 1.06323 25.6893 1.42323 26.9373 2.14323C28.1853 2.84723 29.1453 3.85523 29.8173 5.16723C30.4893 6.47923 30.8253 8.02322 30.8253 9.79922C30.8253 11.6712 30.4573 13.2872 29.7213 14.6472C28.9853 16.0072 27.9453 17.0232 26.6013 17.6952ZM17.9373 9.79922C17.9373 11.7032 18.3373 13.1592 19.1373 14.1672C19.9533 15.1592 21.0813 15.6552 22.5213 15.6552C23.9613 15.6552 25.0813 15.1512 25.8813 14.1432C26.6973 13.1352 27.1053 11.6872 27.1053 9.79922C27.1053 7.91122 26.6973 6.47123 25.8813 5.47923C25.0813 4.48723 23.9613 3.99123 22.5213 3.99123C21.0813 3.99123 19.9533 4.48723 19.1373 5.47923C18.3373 6.47123 17.9373 7.91122 17.9373 9.79922ZM31.5914 18.3672V1.27923H35.3354V15.3192H42.9674V18.3672H31.5914Z\",\"fill\":\"#2186EB\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"viewBox\":\"0 0 46 43\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"M8.7677 28.64C10.9277 28.64 12.0077 29.918 12.0077 32.474V38H9.2897V32.6C9.2897 31.964 9.1697 31.502 8.9297 31.214C8.7017 30.914 8.3357 30.764 7.8317 30.764C7.2317 30.764 6.7517 30.956 6.3917 31.34C6.0317 31.724 5.8517 32.24 5.8517 32.888V38H3.1337V24.752H5.8517V30.116C6.1757 29.636 6.5897 29.27 7.0937 29.018C7.5977 28.766 8.1557 28.64 8.7677 28.64ZM22.5968 28.874V38H19.9148V36.65C19.6388 37.118 19.2488 37.484 18.7448 37.748C18.2408 38.012 17.6708 38.144 17.0348 38.144C16.2428 38.144 15.5408 37.952 14.9288 37.568C14.3288 37.184 13.8548 36.638 13.5068 35.93C13.1708 35.21 13.0028 34.382 13.0028 33.446C13.0028 32.51 13.1708 31.676 13.5068 30.944C13.8548 30.212 14.3348 29.648 14.9468 29.252C15.5588 28.844 16.2548 28.64 17.0348 28.64C17.6708 28.64 18.2408 28.778 18.7448 29.054C19.2488 29.33 19.6388 29.702 19.9148 30.17V28.874H22.5968ZM17.8268 36.074C18.4988 36.074 19.0148 35.846 19.3748 35.39C19.7348 34.934 19.9148 34.274 19.9148 33.41C19.9148 32.546 19.7348 31.886 19.3748 31.43C19.0148 30.962 18.4988 30.728 17.8268 30.728C17.1548 30.728 16.6328 30.968 16.2608 31.448C15.8888 31.928 15.7028 32.594 15.7028 33.446C15.7028 34.298 15.8828 34.952 16.2428 35.408C16.6148 35.852 17.1428 36.074 17.8268 36.074ZM29.6507 28.64C30.4427 28.64 31.1447 28.838 31.7567 29.234C32.3687 29.618 32.8427 30.17 33.1787 30.89C33.5147 31.598 33.6827 32.42 33.6827 33.356C33.6827 34.292 33.5087 35.126 33.1607 35.858C32.8247 36.578 32.3507 37.142 31.7387 37.55C31.1267 37.946 30.4307 38.144 29.6507 38.144C29.0147 38.144 28.4387 38.012 27.9227 37.748C27.4187 37.472 27.0347 37.1 26.7707 36.632V38H24.0707V24.752H26.7887V30.152C27.0527 29.684 27.4367 29.318 27.9407 29.054C28.4567 28.778 29.0267 28.64 29.6507 28.64ZM28.8767 36.074C29.5487 36.074 30.0647 35.84 30.4247 35.372C30.7847 34.904 30.9647 34.232 30.9647 33.356C30.9647 32.516 30.7847 31.868 30.4247 31.412C30.0647 30.956 29.5487 30.728 28.8767 30.728C28.2047 30.728 27.6827 30.962 27.3107 31.43C26.9507 31.886 26.7707 32.54 26.7707 33.392C26.7707 34.256 26.9507 34.922 27.3107 35.39C27.6827 35.846 28.2047 36.074 28.8767 36.074ZM34.7061 38V28.874H37.4241V38H34.7061ZM34.6161 24.59H37.5141V27.146H34.6161V24.59ZM42.3456 30.908V34.454C42.3456 34.958 42.4776 35.33 42.7416 35.57C43.0056 35.798 43.3476 35.912 43.7676 35.912C44.0316 35.912 44.3316 35.87 44.6676 35.786V37.892C44.2356 38.06 43.7136 38.144 43.1016 38.144C41.9736 38.144 41.1096 37.826 40.5096 37.19C39.9216 36.554 39.6276 35.66 39.6276 34.508V30.908H37.8996V28.874H39.6276V26.732L42.3456 25.85V28.874H44.6676V30.908H42.3456Z\",\"fill\":\"#000\"}}),_c('path',{attrs:{\"d\":\"M9.08219 21.216C7.78619 21.216 6.53819 21.048 5.33819 20.712C4.15419 20.36 3.17019 19.872 2.38619 19.248L3.58619 16.56C5.23419 17.712 7.07419 18.288 9.10619 18.288C10.1942 18.288 11.0262 18.12 11.6022 17.784C12.1942 17.432 12.4902 16.944 12.4902 16.32C12.4902 15.776 12.2182 15.352 11.6742 15.048C11.1462 14.728 10.2102 14.424 8.86619 14.136C7.36219 13.832 6.16219 13.464 5.26619 13.032C4.38619 12.584 3.73819 12.048 3.32219 11.424C2.92219 10.784 2.72219 9.992 2.72219 9.048C2.72219 8.024 3.00219 7.104 3.56219 6.288C4.13819 5.472 4.93819 4.84 5.96219 4.392C6.98619 3.928 8.17019 3.696 9.51419 3.696C10.7302 3.696 11.8982 3.872 13.0182 4.224C14.1382 4.576 15.0342 5.056 15.7062 5.664L14.5062 8.352C13.0022 7.2 11.3462 6.624 9.53819 6.624C8.57819 6.624 7.81019 6.816 7.23419 7.2C6.65819 7.584 6.37019 8.104 6.37019 8.76C6.37019 9.144 6.47419 9.464 6.68219 9.72C6.90619 9.976 7.27419 10.208 7.78619 10.416C8.29819 10.608 9.02619 10.8 9.97019 10.992C12.1622 11.472 13.7382 12.096 14.6982 12.864C15.6742 13.632 16.1622 14.68 16.1622 16.008C16.1622 17.608 15.5382 18.88 14.2902 19.824C13.0422 20.752 11.3062 21.216 9.08219 21.216ZM28.6476 20.328C28.9996 20.936 29.4316 21.504 29.9436 22.032C30.4716 22.56 31.0716 23.104 31.7436 23.664L29.2236 25.584C27.5436 24.448 26.1916 22.984 25.1676 21.192C25.0236 21.208 24.8236 21.216 24.5676 21.216C22.8716 21.216 21.3916 20.864 20.1276 20.16C18.8796 19.44 17.9116 18.416 17.2236 17.088C16.5516 15.76 16.2156 14.208 16.2156 12.432C16.2156 10.656 16.5516 9.112 17.2236 7.8C17.9116 6.488 18.8796 5.48 20.1276 4.776C21.3916 4.056 22.8716 3.696 24.5676 3.696C26.2636 3.696 27.7356 4.056 28.9836 4.776C30.2316 5.48 31.1916 6.488 31.8636 7.8C32.5356 9.112 32.8716 10.656 32.8716 12.432C32.8716 14.304 32.5036 15.92 31.7676 17.28C31.0316 18.64 29.9916 19.656 28.6476 20.328ZM19.9836 12.432C19.9836 14.336 20.3836 15.792 21.1836 16.8C21.9996 17.792 23.1276 18.288 24.5676 18.288C26.0076 18.288 27.1276 17.784 27.9276 16.776C28.7436 15.768 29.1516 14.32 29.1516 12.432C29.1516 10.544 28.7436 9.104 27.9276 8.112C27.1276 7.12 26.0076 6.624 24.5676 6.624C23.1276 6.624 21.9996 7.12 21.1836 8.112C20.3836 9.104 19.9836 10.544 19.9836 12.432ZM33.6378 21V3.912H37.3818V17.952H45.0138V21H33.6378Z\",\"fill\":\"#2186EB\"}})])\n )\n }\n }\n ","/*!\n * html2canvas 1.4.1 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.html2canvas = factory());\n}(this, (function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\r\n var extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n\r\n function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\r\n\r\n function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n }\r\n\r\n function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n }\r\n\r\n function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n }\n\n var Bounds = /** @class */ (function () {\n function Bounds(left, top, width, height) {\n this.left = left;\n this.top = top;\n this.width = width;\n this.height = height;\n }\n Bounds.prototype.add = function (x, y, w, h) {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n };\n Bounds.fromClientRect = function (context, clientRect) {\n return new Bounds(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height);\n };\n Bounds.fromDOMRectList = function (context, domRectList) {\n var domRect = Array.from(domRectList).find(function (rect) { return rect.width !== 0; });\n return domRect\n ? new Bounds(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height)\n : Bounds.EMPTY;\n };\n Bounds.EMPTY = new Bounds(0, 0, 0, 0);\n return Bounds;\n }());\n var parseBounds = function (context, node) {\n return Bounds.fromClientRect(context, node.getBoundingClientRect());\n };\n var parseDocumentSize = function (document) {\n var body = document.body;\n var documentElement = document.documentElement;\n if (!body || !documentElement) {\n throw new Error(\"Unable to get document size\");\n }\n var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));\n var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));\n return new Bounds(0, 0, width, height);\n };\n\n /*\n * css-line-break 2.1.0 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\n var toCodePoints$1 = function (str) {\n var codePoints = [];\n var i = 0;\n var length = str.length;\n while (i < length) {\n var value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n var extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n }\n else {\n codePoints.push(value);\n i--;\n }\n }\n else {\n codePoints.push(value);\n }\n }\n return codePoints;\n };\n var fromCodePoint$1 = function () {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n if (String.fromCodePoint) {\n return String.fromCodePoint.apply(String, codePoints);\n }\n var length = codePoints.length;\n if (!length) {\n return '';\n }\n var codeUnits = [];\n var index = -1;\n var result = '';\n while (++index < length) {\n var codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n }\n else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode.apply(String, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n var chars$2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup$2 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i$2 = 0; i$2 < chars$2.length; i$2++) {\n lookup$2[chars$2.charCodeAt(i$2)] = i$2;\n }\n\n /*\n * utrie 1.0.2 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\n var chars$1$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup$1$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {\n lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1;\n }\n var decode$1 = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var buffer = typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup$1$1[base64.charCodeAt(i)];\n encoded2 = lookup$1$1[base64.charCodeAt(i + 1)];\n encoded3 = lookup$1$1[base64.charCodeAt(i + 2)];\n encoded4 = lookup$1$1[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return buffer;\n };\n var polyUint16Array$1 = function (buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n };\n var polyUint32Array$1 = function (buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n };\n\n /** Shift size for getting the index-2 table offset. */\n var UTRIE2_SHIFT_2$1 = 5;\n /** Shift size for getting the index-1 table offset. */\n var UTRIE2_SHIFT_1$1 = 6 + 5;\n /**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\n var UTRIE2_INDEX_SHIFT$1 = 2;\n /**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\n var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;\n /**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\n var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 0x10000 >> UTRIE2_SHIFT_2$1;\n /** Number of entries in a data block. 32=0x20 */\n var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;\n /** Mask for getting the lower bits for the in-data-block offset. */\n var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;\n var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 0x400 >> UTRIE2_SHIFT_2$1;\n /** Count the lengths of both BMP pieces. 2080=0x820 */\n var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;\n /**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\n var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;\n var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n /**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\n var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;\n /**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\n var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 0x10000 >> UTRIE2_SHIFT_1$1;\n /** Number of entries in an index-2 block. 64=0x40 */\n var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;\n /** Mask for getting the lower bits for the in-index-2-block offset. */\n var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;\n var slice16$1 = function (view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n };\n var slice32$1 = function (view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n };\n var createTrieFromBase64$1 = function (base64, _byteLength) {\n var buffer = decode$1(base64);\n var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer);\n var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer);\n var headerLength = 24;\n var index = slice16$1(view16, headerLength / 2, view32[4] / 2);\n var data = view32[5] === 2\n ? slice16$1(view16, (headerLength + view32[4]) / 2)\n : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));\n return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data);\n };\n var Trie$1 = /** @class */ (function () {\n function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n Trie.prototype.get = function (codePoint) {\n var ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];\n ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n return this.data[ix];\n }\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2$1)];\n ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n return this.data[ix];\n }\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2$1) & UTRIE2_INDEX_2_MASK$1;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n };\n return Trie;\n }());\n\n /*\n * base64-arraybuffer 1.0.2 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\n var chars$3 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup$3 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i$3 = 0; i$3 < chars$3.length; i$3++) {\n lookup$3[chars$3.charCodeAt(i$3)] = i$3;\n }\n\n var base64$1 = 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\n\n var LETTER_NUMBER_MODIFIER = 50;\n // Non-tailorable Line Breaking Classes\n var BK = 1; // Cause a line break (after)\n var CR$1 = 2; // Cause a line break (after), except between CR and LF\n var LF$1 = 3; // Cause a line break (after)\n var CM = 4; // Prohibit a line break between the character and the preceding character\n var NL = 5; // Cause a line break (after)\n var WJ = 7; // Prohibit line breaks before and after\n var ZW = 8; // Provide a break opportunity\n var GL = 9; // Prohibit line breaks before and after\n var SP = 10; // Enable indirect line breaks\n var ZWJ$1 = 11; // Prohibit line breaks within joiner sequences\n // Break Opportunities\n var B2 = 12; // Provide a line break opportunity before and after the character\n var BA = 13; // Generally provide a line break opportunity after the character\n var BB = 14; // Generally provide a line break opportunity before the character\n var HY = 15; // Provide a line break opportunity after the character, except in numeric context\n var CB = 16; // Provide a line break opportunity contingent on additional information\n // Characters Prohibiting Certain Breaks\n var CL = 17; // Prohibit line breaks before\n var CP = 18; // Prohibit line breaks before\n var EX = 19; // Prohibit line breaks before\n var IN = 20; // Allow only indirect line breaks between pairs\n var NS = 21; // Allow only indirect line breaks before\n var OP = 22; // Prohibit line breaks after\n var QU = 23; // Act like they are both opening and closing\n // Numeric Context\n var IS = 24; // Prevent breaks after any and before numeric\n var NU = 25; // Form numeric expressions for line breaking purposes\n var PO = 26; // Do not break following a numeric expression\n var PR = 27; // Do not break in front of a numeric expression\n var SY = 28; // Prevent a break before; and allow a break after\n // Other Characters\n var AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\n var AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\n var CJ = 31; // Treat as NS or ID for strict or normal breaking.\n var EB = 32; // Do not break from following Emoji Modifier\n var EM = 33; // Do not break from preceding Emoji Base\n var H2 = 34; // Form Korean syllable blocks\n var H3 = 35; // Form Korean syllable blocks\n var HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\n var ID = 37; // Break before or after; except in some numeric context\n var JL = 38; // Form Korean syllable blocks\n var JV = 39; // Form Korean syllable blocks\n var JT = 40; // Form Korean syllable blocks\n var RI$1 = 41; // Keep pairs together. For pairs; break before and after other classes\n var SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\n var XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n var ea_OP = [0x2329, 0xff08];\n var BREAK_MANDATORY = '!';\n var BREAK_NOT_ALLOWED$1 = '×';\n var BREAK_ALLOWED$1 = '÷';\n var UnicodeTrie$1 = createTrieFromBase64$1(base64$1);\n var ALPHABETICS = [AL, HL];\n var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];\n var SPACE$1 = [SP, ZW];\n var PREFIX_POSTFIX = [PR, PO];\n var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);\n var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\n var HYPHEN = [HY, BA];\n var codePointsToCharacterClasses = function (codePoints, lineBreak) {\n if (lineBreak === void 0) { lineBreak = 'strict'; }\n var types = [];\n var indices = [];\n var categories = [];\n codePoints.forEach(function (codePoint, index) {\n var classType = UnicodeTrie$1.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n }\n else {\n categories.push(false);\n }\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indices.push(index);\n return types.push(CB);\n }\n }\n if (classType === CM || classType === ZWJ$1) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indices.push(index);\n return types.push(AL);\n }\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n var prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indices.push(indices[index - 1]);\n return types.push(prev);\n }\n indices.push(index);\n return types.push(AL);\n }\n indices.push(index);\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n if (classType === SA) {\n return types.push(AL);\n }\n if (classType === AI) {\n return types.push(AL);\n }\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n if (classType === XX) {\n if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n return types.push(ID);\n }\n else {\n return types.push(AL);\n }\n }\n types.push(classType);\n });\n return [indices, types, categories];\n };\n var isAdjacentWithSpaceIgnored = function (a, b, currentIndex, classTypes) {\n var current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n var i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n var next = classTypes[i];\n if (next === b) {\n return true;\n }\n if (next !== SP) {\n break;\n }\n }\n }\n if (current === SP) {\n var i = currentIndex;\n while (i > 0) {\n i--;\n var prev = classTypes[i];\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n var n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n var next = classTypes[n];\n if (next === b) {\n return true;\n }\n if (next !== SP) {\n break;\n }\n }\n }\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n };\n var previousNonSpaceClassType = function (currentIndex, classTypes) {\n var i = currentIndex;\n while (i >= 0) {\n var type = classTypes[i];\n if (type === SP) {\n i--;\n }\n else {\n return type;\n }\n }\n return 0;\n };\n var _lineBreakAtIndex = function (codePoints, classTypes, indicies, index, forbiddenBreaks) {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED$1;\n }\n var currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED$1;\n }\n var beforeIndex = currentIndex - 1;\n var afterIndex = currentIndex + 1;\n var current = classTypes[currentIndex];\n // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n var next = classTypes[afterIndex];\n if (current === CR$1 && next === LF$1) {\n return BREAK_NOT_ALLOWED$1;\n }\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n }\n // LB6 Do not break before hard line breaks.\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB7 Do not break before spaces or zero width space.\n if (SPACE$1.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED$1;\n }\n // LB8a Do not break after a zero width joiner.\n if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // zwj emojis\n if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB11 Do not break before or after Word joiner and related characters.\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB15 Do not break within ‘”[’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED$1;\n }\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED$1;\n }\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB22 Do not break before ellipsis.\n if (next === IN) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB23 Do not break between digits and letters.\n if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if ((current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if ((ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB25 Do not break between the following pairs of classes relevant to numbers:\n if (\n // (PR | PO) × ( OP | HY )? NU\n ([PR, PO].indexOf(current) !== -1 &&\n (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n // ( OP | HY ) × NU\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n // NU ×\t(NU | SY | IS)\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n var prevIndex = currentIndex;\n while (prevIndex >= 0) {\n var type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED$1;\n }\n else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n }\n else {\n break;\n }\n }\n }\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (prevIndex >= 0) {\n var type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED$1;\n }\n else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n }\n else {\n break;\n }\n }\n }\n // LB26 Do not break a Korean syllable.\n if ((JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n ([JT, H3].indexOf(current) !== -1 && next === JT)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB27 Treat a Korean Syllable Block the same as ID.\n if ((KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB28 Do not break between alphabetics (“at”).\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if ((ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n next === OP &&\n ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n if (current === RI$1 && next === RI$1) {\n var i = indicies[currentIndex];\n var count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI$1) {\n count++;\n }\n else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED$1;\n }\n }\n // LB30b Do not break between an emoji base and an emoji modifier.\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED$1;\n }\n return BREAK_ALLOWED$1;\n };\n var cssFormattedClasses = function (codePoints, options) {\n if (!options) {\n options = { lineBreak: 'normal', wordBreak: 'normal' };\n }\n var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2];\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map(function (type) { return ([NU, AL, SA].indexOf(type) !== -1 ? ID : type); });\n }\n var forbiddenBreakpoints = options.wordBreak === 'keep-all'\n ? isLetterNumber.map(function (letterNumber, i) {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n })\n : undefined;\n return [indicies, classTypes, forbiddenBreakpoints];\n };\n var Break = /** @class */ (function () {\n function Break(codePoints, lineBreak, start, end) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n Break.prototype.slice = function () {\n return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end));\n };\n return Break;\n }());\n var LineBreaker = function (str, options) {\n var codePoints = toCodePoints$1(str);\n var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2];\n var length = codePoints.length;\n var lastEnd = 0;\n var nextIndex = 0;\n return {\n next: function () {\n if (nextIndex >= length) {\n return { done: true, value: null };\n }\n var lineBreak = BREAK_NOT_ALLOWED$1;\n while (nextIndex < length &&\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n BREAK_NOT_ALLOWED$1) { }\n if (lineBreak !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {\n var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return { value: value, done: false };\n }\n return { done: true, value: null };\n },\n };\n };\n\n // https://www.w3.org/TR/css-syntax-3\n var FLAG_UNRESTRICTED = 1 << 0;\n var FLAG_ID = 1 << 1;\n var FLAG_INTEGER = 1 << 2;\n var FLAG_NUMBER = 1 << 3;\n var LINE_FEED = 0x000a;\n var SOLIDUS = 0x002f;\n var REVERSE_SOLIDUS = 0x005c;\n var CHARACTER_TABULATION = 0x0009;\n var SPACE = 0x0020;\n var QUOTATION_MARK = 0x0022;\n var EQUALS_SIGN = 0x003d;\n var NUMBER_SIGN = 0x0023;\n var DOLLAR_SIGN = 0x0024;\n var PERCENTAGE_SIGN = 0x0025;\n var APOSTROPHE = 0x0027;\n var LEFT_PARENTHESIS = 0x0028;\n var RIGHT_PARENTHESIS = 0x0029;\n var LOW_LINE = 0x005f;\n var HYPHEN_MINUS = 0x002d;\n var EXCLAMATION_MARK = 0x0021;\n var LESS_THAN_SIGN = 0x003c;\n var GREATER_THAN_SIGN = 0x003e;\n var COMMERCIAL_AT = 0x0040;\n var LEFT_SQUARE_BRACKET = 0x005b;\n var RIGHT_SQUARE_BRACKET = 0x005d;\n var CIRCUMFLEX_ACCENT = 0x003d;\n var LEFT_CURLY_BRACKET = 0x007b;\n var QUESTION_MARK = 0x003f;\n var RIGHT_CURLY_BRACKET = 0x007d;\n var VERTICAL_LINE = 0x007c;\n var TILDE = 0x007e;\n var CONTROL = 0x0080;\n var REPLACEMENT_CHARACTER = 0xfffd;\n var ASTERISK = 0x002a;\n var PLUS_SIGN = 0x002b;\n var COMMA = 0x002c;\n var COLON = 0x003a;\n var SEMICOLON = 0x003b;\n var FULL_STOP = 0x002e;\n var NULL = 0x0000;\n var BACKSPACE = 0x0008;\n var LINE_TABULATION = 0x000b;\n var SHIFT_OUT = 0x000e;\n var INFORMATION_SEPARATOR_ONE = 0x001f;\n var DELETE = 0x007f;\n var EOF = -1;\n var ZERO = 0x0030;\n var a = 0x0061;\n var e = 0x0065;\n var f = 0x0066;\n var u = 0x0075;\n var z = 0x007a;\n var A = 0x0041;\n var E = 0x0045;\n var F = 0x0046;\n var U = 0x0055;\n var Z = 0x005a;\n var isDigit = function (codePoint) { return codePoint >= ZERO && codePoint <= 0x0039; };\n var isSurrogateCodePoint = function (codePoint) { return codePoint >= 0xd800 && codePoint <= 0xdfff; };\n var isHex = function (codePoint) {\n return isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\n };\n var isLowerCaseLetter = function (codePoint) { return codePoint >= a && codePoint <= z; };\n var isUpperCaseLetter = function (codePoint) { return codePoint >= A && codePoint <= Z; };\n var isLetter = function (codePoint) { return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint); };\n var isNonASCIICodePoint = function (codePoint) { return codePoint >= CONTROL; };\n var isWhiteSpace = function (codePoint) {\n return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\n };\n var isNameStartCodePoint = function (codePoint) {\n return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\n };\n var isNameCodePoint = function (codePoint) {\n return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\n };\n var isNonPrintableCodePoint = function (codePoint) {\n return ((codePoint >= NULL && codePoint <= BACKSPACE) ||\n codePoint === LINE_TABULATION ||\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n codePoint === DELETE);\n };\n var isValidEscape = function (c1, c2) {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n return c2 !== LINE_FEED;\n };\n var isIdentifierStart = function (c1, c2, c3) {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n }\n else if (isNameStartCodePoint(c1)) {\n return true;\n }\n else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n return false;\n };\n var isNumberStart = function (c1, c2, c3) {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n return c2 === FULL_STOP && isDigit(c3);\n }\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n return isDigit(c1);\n };\n var stringToNumber = function (codePoints) {\n var c = 0;\n var sign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n c++;\n }\n var integers = [];\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0;\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n var fraction = [];\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n var fracd = fraction.length;\n var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0;\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n var expsign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n c++;\n }\n var exponent = [];\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0;\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n };\n var LEFT_PARENTHESIS_TOKEN = {\n type: 2 /* LEFT_PARENTHESIS_TOKEN */\n };\n var RIGHT_PARENTHESIS_TOKEN = {\n type: 3 /* RIGHT_PARENTHESIS_TOKEN */\n };\n var COMMA_TOKEN = { type: 4 /* COMMA_TOKEN */ };\n var SUFFIX_MATCH_TOKEN = { type: 13 /* SUFFIX_MATCH_TOKEN */ };\n var PREFIX_MATCH_TOKEN = { type: 8 /* PREFIX_MATCH_TOKEN */ };\n var COLUMN_TOKEN = { type: 21 /* COLUMN_TOKEN */ };\n var DASH_MATCH_TOKEN = { type: 9 /* DASH_MATCH_TOKEN */ };\n var INCLUDE_MATCH_TOKEN = { type: 10 /* INCLUDE_MATCH_TOKEN */ };\n var LEFT_CURLY_BRACKET_TOKEN = {\n type: 11 /* LEFT_CURLY_BRACKET_TOKEN */\n };\n var RIGHT_CURLY_BRACKET_TOKEN = {\n type: 12 /* RIGHT_CURLY_BRACKET_TOKEN */\n };\n var SUBSTRING_MATCH_TOKEN = { type: 14 /* SUBSTRING_MATCH_TOKEN */ };\n var BAD_URL_TOKEN = { type: 23 /* BAD_URL_TOKEN */ };\n var BAD_STRING_TOKEN = { type: 1 /* BAD_STRING_TOKEN */ };\n var CDO_TOKEN = { type: 25 /* CDO_TOKEN */ };\n var CDC_TOKEN = { type: 24 /* CDC_TOKEN */ };\n var COLON_TOKEN = { type: 26 /* COLON_TOKEN */ };\n var SEMICOLON_TOKEN = { type: 27 /* SEMICOLON_TOKEN */ };\n var LEFT_SQUARE_BRACKET_TOKEN = {\n type: 28 /* LEFT_SQUARE_BRACKET_TOKEN */\n };\n var RIGHT_SQUARE_BRACKET_TOKEN = {\n type: 29 /* RIGHT_SQUARE_BRACKET_TOKEN */\n };\n var WHITESPACE_TOKEN = { type: 31 /* WHITESPACE_TOKEN */ };\n var EOF_TOKEN = { type: 32 /* EOF_TOKEN */ };\n var Tokenizer = /** @class */ (function () {\n function Tokenizer() {\n this._value = [];\n }\n Tokenizer.prototype.write = function (chunk) {\n this._value = this._value.concat(toCodePoints$1(chunk));\n };\n Tokenizer.prototype.read = function () {\n var tokens = [];\n var token = this.consumeToken();\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n return tokens;\n };\n Tokenizer.prototype.consumeToken = function () {\n var codePoint = this.consumeCodePoint();\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n case NUMBER_SIGN:\n var c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n var value = this.consumeName();\n return { type: 5 /* HASH_TOKEN */, value: value, flags: flags };\n }\n break;\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n break;\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n break;\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case COMMA:\n return COMMA_TOKEN;\n case HYPHEN_MINUS:\n var e1 = codePoint;\n var e2 = this.peekCodePoint(0);\n var e3 = this.peekCodePoint(1);\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n break;\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n while (true) {\n var c = this.consumeCodePoint();\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n break;\n case COLON:\n return COLON_TOKEN;\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n case LESS_THAN_SIGN:\n if (this.peekCodePoint(0) === EXCLAMATION_MARK &&\n this.peekCodePoint(1) === HYPHEN_MINUS &&\n this.peekCodePoint(2) === HYPHEN_MINUS) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n break;\n case COMMERCIAL_AT:\n var a1 = this.peekCodePoint(0);\n var a2 = this.peekCodePoint(1);\n var a3 = this.peekCodePoint(2);\n if (isIdentifierStart(a1, a2, a3)) {\n var value = this.consumeName();\n return { type: 7 /* AT_KEYWORD_TOKEN */, value: value };\n }\n break;\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n break;\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n break;\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n case u:\n case U:\n var u1 = this.peekCodePoint(0);\n var u2 = this.peekCodePoint(1);\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n break;\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n break;\n case EOF:\n return EOF_TOKEN;\n }\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n return { type: 6 /* DELIM_TOKEN */, value: fromCodePoint$1(codePoint) };\n };\n Tokenizer.prototype.consumeCodePoint = function () {\n var value = this._value.shift();\n return typeof value === 'undefined' ? -1 : value;\n };\n Tokenizer.prototype.reconsumeCodePoint = function (codePoint) {\n this._value.unshift(codePoint);\n };\n Tokenizer.prototype.peekCodePoint = function (delta) {\n if (delta >= this._value.length) {\n return -1;\n }\n return this._value[delta];\n };\n Tokenizer.prototype.consumeUnicodeRangeToken = function () {\n var digits = [];\n var codePoint = this.consumeCodePoint();\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n var questionMarks = false;\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n if (questionMarks) {\n var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? ZERO : digit); })), 16);\n var end = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? F : digit); })), 16);\n return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start_1, end: end };\n }\n var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16);\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n var endDigits = [];\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);\n return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: end };\n }\n else {\n return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: start };\n }\n };\n Tokenizer.prototype.consumeIdentLikeToken = function () {\n var value = this.consumeName();\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n }\n else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: 19 /* FUNCTION_TOKEN */, value: value };\n }\n return { type: 20 /* IDENT_TOKEN */, value: value };\n };\n Tokenizer.prototype.consumeUrlToken = function () {\n var value = [];\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF) {\n return { type: 22 /* URL_TOKEN */, value: '' };\n }\n var next = this.peekCodePoint(0);\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n var stringToken = this.consumeStringToken(this.consumeCodePoint());\n if (stringToken.type === 0 /* STRING_TOKEN */) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: 22 /* URL_TOKEN */, value: stringToken.value };\n }\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n while (true) {\n var codePoint = this.consumeCodePoint();\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };\n }\n else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n else if (codePoint === QUOTATION_MARK ||\n codePoint === APOSTROPHE ||\n codePoint === LEFT_PARENTHESIS ||\n isNonPrintableCodePoint(codePoint)) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n }\n else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n }\n else {\n value.push(codePoint);\n }\n }\n };\n Tokenizer.prototype.consumeWhiteSpace = function () {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n };\n Tokenizer.prototype.consumeBadUrlRemnants = function () {\n while (true) {\n var codePoint = this.consumeCodePoint();\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n };\n Tokenizer.prototype.consumeStringSlice = function (count) {\n var SLICE_STACK_SIZE = 50000;\n var value = '';\n while (count > 0) {\n var amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));\n count -= amount;\n }\n this._value.shift();\n return value;\n };\n Tokenizer.prototype.consumeStringToken = function (endingCodePoint) {\n var value = '';\n var i = 0;\n do {\n var codePoint = this._value[i];\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return { type: 0 /* STRING_TOKEN */, value: value };\n }\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n return BAD_STRING_TOKEN;\n }\n if (codePoint === REVERSE_SOLIDUS) {\n var next = this._value[i + 1];\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n this._value.shift();\n }\n else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint$1(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n i++;\n } while (true);\n };\n Tokenizer.prototype.consumeNumber = function () {\n var repr = [];\n var type = FLAG_INTEGER;\n var c1 = this.peekCodePoint(0);\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n return [stringToNumber(repr), type];\n };\n Tokenizer.prototype.consumeNumericToken = function () {\n var _a = this.consumeNumber(), number = _a[0], flags = _a[1];\n var c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n if (isIdentifierStart(c1, c2, c3)) {\n var unit = this.consumeName();\n return { type: 15 /* DIMENSION_TOKEN */, number: number, flags: flags, unit: unit };\n }\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return { type: 16 /* PERCENTAGE_TOKEN */, number: number, flags: flags };\n }\n return { type: 17 /* NUMBER_TOKEN */, number: number, flags: flags };\n };\n Tokenizer.prototype.consumeEscapedCodePoint = function () {\n var codePoint = this.consumeCodePoint();\n if (isHex(codePoint)) {\n var hex = fromCodePoint$1(codePoint);\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint$1(this.consumeCodePoint());\n }\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n var hexCodePoint = parseInt(hex, 16);\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n return hexCodePoint;\n }\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n return codePoint;\n };\n Tokenizer.prototype.consumeName = function () {\n var result = '';\n while (true) {\n var codePoint = this.consumeCodePoint();\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint$1(codePoint);\n }\n else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint$1(this.consumeEscapedCodePoint());\n }\n else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n };\n return Tokenizer;\n }());\n\n var Parser = /** @class */ (function () {\n function Parser(tokens) {\n this._tokens = tokens;\n }\n Parser.create = function (value) {\n var tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n };\n Parser.parseValue = function (value) {\n return Parser.create(value).parseComponentValue();\n };\n Parser.parseValues = function (value) {\n return Parser.create(value).parseComponentValues();\n };\n Parser.prototype.parseComponentValue = function () {\n var token = this.consumeToken();\n while (token.type === 31 /* WHITESPACE_TOKEN */) {\n token = this.consumeToken();\n }\n if (token.type === 32 /* EOF_TOKEN */) {\n throw new SyntaxError(\"Error parsing CSS component value, unexpected EOF\");\n }\n this.reconsumeToken(token);\n var value = this.consumeComponentValue();\n do {\n token = this.consumeToken();\n } while (token.type === 31 /* WHITESPACE_TOKEN */);\n if (token.type === 32 /* EOF_TOKEN */) {\n return value;\n }\n throw new SyntaxError(\"Error parsing CSS component value, multiple values found when expecting only one\");\n };\n Parser.prototype.parseComponentValues = function () {\n var values = [];\n while (true) {\n var value = this.consumeComponentValue();\n if (value.type === 32 /* EOF_TOKEN */) {\n return values;\n }\n values.push(value);\n values.push();\n }\n };\n Parser.prototype.consumeComponentValue = function () {\n var token = this.consumeToken();\n switch (token.type) {\n case 11 /* LEFT_CURLY_BRACKET_TOKEN */:\n case 28 /* LEFT_SQUARE_BRACKET_TOKEN */:\n case 2 /* LEFT_PARENTHESIS_TOKEN */:\n return this.consumeSimpleBlock(token.type);\n case 19 /* FUNCTION_TOKEN */:\n return this.consumeFunction(token);\n }\n return token;\n };\n Parser.prototype.consumeSimpleBlock = function (type) {\n var block = { type: type, values: [] };\n var token = this.consumeToken();\n while (true) {\n if (token.type === 32 /* EOF_TOKEN */ || isEndingTokenFor(token, type)) {\n return block;\n }\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n };\n Parser.prototype.consumeFunction = function (functionToken) {\n var cssFunction = {\n name: functionToken.value,\n values: [],\n type: 18 /* FUNCTION */\n };\n while (true) {\n var token = this.consumeToken();\n if (token.type === 32 /* EOF_TOKEN */ || token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */) {\n return cssFunction;\n }\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n };\n Parser.prototype.consumeToken = function () {\n var token = this._tokens.shift();\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n };\n Parser.prototype.reconsumeToken = function (token) {\n this._tokens.unshift(token);\n };\n return Parser;\n }());\n var isDimensionToken = function (token) { return token.type === 15 /* DIMENSION_TOKEN */; };\n var isNumberToken = function (token) { return token.type === 17 /* NUMBER_TOKEN */; };\n var isIdentToken = function (token) { return token.type === 20 /* IDENT_TOKEN */; };\n var isStringToken = function (token) { return token.type === 0 /* STRING_TOKEN */; };\n var isIdentWithValue = function (token, value) {\n return isIdentToken(token) && token.value === value;\n };\n var nonWhiteSpace = function (token) { return token.type !== 31 /* WHITESPACE_TOKEN */; };\n var nonFunctionArgSeparator = function (token) {\n return token.type !== 31 /* WHITESPACE_TOKEN */ && token.type !== 4 /* COMMA_TOKEN */;\n };\n var parseFunctionArgs = function (tokens) {\n var args = [];\n var arg = [];\n tokens.forEach(function (token) {\n if (token.type === 4 /* COMMA_TOKEN */) {\n if (arg.length === 0) {\n throw new Error(\"Error parsing function args, zero tokens for arg\");\n }\n args.push(arg);\n arg = [];\n return;\n }\n if (token.type !== 31 /* WHITESPACE_TOKEN */) {\n arg.push(token);\n }\n });\n if (arg.length) {\n args.push(arg);\n }\n return args;\n };\n var isEndingTokenFor = function (token, type) {\n if (type === 11 /* LEFT_CURLY_BRACKET_TOKEN */ && token.type === 12 /* RIGHT_CURLY_BRACKET_TOKEN */) {\n return true;\n }\n if (type === 28 /* LEFT_SQUARE_BRACKET_TOKEN */ && token.type === 29 /* RIGHT_SQUARE_BRACKET_TOKEN */) {\n return true;\n }\n return type === 2 /* LEFT_PARENTHESIS_TOKEN */ && token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */;\n };\n\n var isLength = function (token) {\n return token.type === 17 /* NUMBER_TOKEN */ || token.type === 15 /* DIMENSION_TOKEN */;\n };\n\n var isLengthPercentage = function (token) {\n return token.type === 16 /* PERCENTAGE_TOKEN */ || isLength(token);\n };\n var parseLengthPercentageTuple = function (tokens) {\n return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\n };\n var ZERO_LENGTH = {\n type: 17 /* NUMBER_TOKEN */,\n number: 0,\n flags: FLAG_INTEGER\n };\n var FIFTY_PERCENT = {\n type: 16 /* PERCENTAGE_TOKEN */,\n number: 50,\n flags: FLAG_INTEGER\n };\n var HUNDRED_PERCENT = {\n type: 16 /* PERCENTAGE_TOKEN */,\n number: 100,\n flags: FLAG_INTEGER\n };\n var getAbsoluteValueForTuple = function (tuple, width, height) {\n var x = tuple[0], y = tuple[1];\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n };\n var getAbsoluteValue = function (token, parent) {\n if (token.type === 16 /* PERCENTAGE_TOKEN */) {\n return (token.number / 100) * parent;\n }\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number; // TODO use correct font-size\n case 'px':\n default:\n return token.number;\n }\n }\n return token.number;\n };\n\n var DEG = 'deg';\n var GRAD = 'grad';\n var RAD = 'rad';\n var TURN = 'turn';\n var angle = {\n name: 'angle',\n parse: function (_context, value) {\n if (value.type === 15 /* DIMENSION_TOKEN */) {\n switch (value.unit) {\n case DEG:\n return (Math.PI * value.number) / 180;\n case GRAD:\n return (Math.PI / 200) * value.number;\n case RAD:\n return value.number;\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n throw new Error(\"Unsupported angle type\");\n }\n };\n var isAngle = function (value) {\n if (value.type === 15 /* DIMENSION_TOKEN */) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n return false;\n };\n var parseNamedSide = function (tokens) {\n var sideOrCorner = tokens\n .filter(isIdentToken)\n .map(function (ident) { return ident.value; })\n .join(' ');\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n case 'to top':\n case 'bottom':\n return deg(0);\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n case 'to right':\n case 'left':\n return deg(90);\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n case 'to bottom':\n case 'top':\n return deg(180);\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n case 'to left':\n case 'right':\n return deg(270);\n }\n return 0;\n };\n var deg = function (deg) { return (Math.PI * deg) / 180; };\n\n var color$1 = {\n name: 'color',\n parse: function (context, value) {\n if (value.type === 18 /* FUNCTION */) {\n var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n if (typeof colorFunction === 'undefined') {\n throw new Error(\"Attempting to parse an unsupported color function \\\"\" + value.name + \"\\\"\");\n }\n return colorFunction(context, value.values);\n }\n if (value.type === 5 /* HASH_TOKEN */) {\n if (value.value.length === 3) {\n var r = value.value.substring(0, 1);\n var g = value.value.substring(1, 2);\n var b = value.value.substring(2, 3);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n }\n if (value.value.length === 4) {\n var r = value.value.substring(0, 1);\n var g = value.value.substring(1, 2);\n var b = value.value.substring(2, 3);\n var a = value.value.substring(3, 4);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n }\n if (value.value.length === 6) {\n var r = value.value.substring(0, 2);\n var g = value.value.substring(2, 4);\n var b = value.value.substring(4, 6);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n }\n if (value.value.length === 8) {\n var r = value.value.substring(0, 2);\n var g = value.value.substring(2, 4);\n var b = value.value.substring(4, 6);\n var a = value.value.substring(6, 8);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n }\n }\n if (value.type === 20 /* IDENT_TOKEN */) {\n var namedColor = COLORS[value.value.toUpperCase()];\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n return COLORS.TRANSPARENT;\n }\n };\n var isTransparent = function (color) { return (0xff & color) === 0; };\n var asString = function (color) {\n var alpha = 0xff & color;\n var blue = 0xff & (color >> 8);\n var green = 0xff & (color >> 16);\n var red = 0xff & (color >> 24);\n return alpha < 255 ? \"rgba(\" + red + \",\" + green + \",\" + blue + \",\" + alpha / 255 + \")\" : \"rgb(\" + red + \",\" + green + \",\" + blue + \")\";\n };\n var pack = function (r, g, b, a) {\n return ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n };\n var getTokenColorValue = function (token, i) {\n if (token.type === 17 /* NUMBER_TOKEN */) {\n return token.number;\n }\n if (token.type === 16 /* PERCENTAGE_TOKEN */) {\n var max = i === 3 ? 1 : 255;\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n }\n return 0;\n };\n var rgb = function (_context, args) {\n var tokens = args.filter(nonFunctionArgSeparator);\n if (tokens.length === 3) {\n var _a = tokens.map(getTokenColorValue), r = _a[0], g = _a[1], b = _a[2];\n return pack(r, g, b, 1);\n }\n if (tokens.length === 4) {\n var _b = tokens.map(getTokenColorValue), r = _b[0], g = _b[1], b = _b[2], a = _b[3];\n return pack(r, g, b, a);\n }\n return 0;\n };\n function hue2rgb(t1, t2, hue) {\n if (hue < 0) {\n hue += 1;\n }\n if (hue >= 1) {\n hue -= 1;\n }\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n }\n else if (hue < 1 / 2) {\n return t2;\n }\n else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n }\n else {\n return t1;\n }\n }\n var hsl = function (context, args) {\n var tokens = args.filter(nonFunctionArgSeparator);\n var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3];\n var h = (hue.type === 17 /* NUMBER_TOKEN */ ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n var a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n if (s === 0) {\n return pack(l * 255, l * 255, l * 255, 1);\n }\n var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var t1 = l * 2 - t2;\n var r = hue2rgb(t1, t2, h + 1 / 3);\n var g = hue2rgb(t1, t2, h);\n var b = hue2rgb(t1, t2, h - 1 / 3);\n return pack(r * 255, g * 255, b * 255, a);\n };\n var SUPPORTED_COLOR_FUNCTIONS = {\n hsl: hsl,\n hsla: hsl,\n rgb: rgb,\n rgba: rgb\n };\n var parseColor = function (context, value) {\n return color$1.parse(context, Parser.create(value).parseComponentValue());\n };\n var COLORS = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n };\n\n var backgroundClip = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return tokens.map(function (token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return 1 /* PADDING_BOX */;\n case 'content-box':\n return 2 /* CONTENT_BOX */;\n }\n }\n return 0 /* BORDER_BOX */;\n });\n }\n };\n\n var backgroundColor = {\n name: \"background-color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'color'\n };\n\n var parseColorStop = function (context, args) {\n var color = color$1.parse(context, args[0]);\n var stop = args[1];\n return stop && isLengthPercentage(stop) ? { color: color, stop: stop } : { color: color, stop: null };\n };\n var processColorStops = function (stops, lineLength) {\n var first = stops[0];\n var last = stops[stops.length - 1];\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n var processStops = [];\n var previous = 0;\n for (var i = 0; i < stops.length; i++) {\n var stop_1 = stops[i].stop;\n if (stop_1 !== null) {\n var absoluteValue = getAbsoluteValue(stop_1, lineLength);\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n }\n else {\n processStops.push(previous);\n }\n previous = absoluteValue;\n }\n else {\n processStops.push(null);\n }\n }\n var gapBegin = null;\n for (var i = 0; i < processStops.length; i++) {\n var stop_2 = processStops[i];\n if (stop_2 === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n }\n else if (gapBegin !== null) {\n var gapLength = i - gapBegin;\n var beforeGap = processStops[gapBegin - 1];\n var gapValue = (stop_2 - beforeGap) / (gapLength + 1);\n for (var g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n gapBegin = null;\n }\n }\n return stops.map(function (_a, i) {\n var color = _a.color;\n return { color: color, stop: Math.max(Math.min(1, processStops[i] / lineLength), 0) };\n });\n };\n var getAngleFromCorner = function (corner, width, height) {\n var centerX = width / 2;\n var centerY = height / 2;\n var x = getAbsoluteValue(corner[0], width) - centerX;\n var y = centerY - getAbsoluteValue(corner[1], height);\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n };\n var calculateGradientDirection = function (angle, width, height) {\n var radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var halfLineLength = lineLength / 2;\n var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n };\n var distance = function (a, b) { return Math.sqrt(a * a + b * b); };\n var findCorner = function (width, height, x, y, closest) {\n var corners = [\n [0, 0],\n [0, height],\n [width, 0],\n [width, height]\n ];\n return corners.reduce(function (stat, corner) {\n var cx = corner[0], cy = corner[1];\n var d = distance(x - cx, y - cy);\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n return stat;\n }, {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }).optimumCorner;\n };\n var calculateRadius = function (gradient, x, y, width, height) {\n var rx = 0;\n var ry = 0;\n switch (gradient.size) {\n case 0 /* CLOSEST_SIDE */:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === 0 /* CIRCLE */) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n }\n else if (gradient.shape === 1 /* ELLIPSE */) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n break;\n case 2 /* CLOSEST_CORNER */:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === 0 /* CIRCLE */) {\n rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n }\n else if (gradient.shape === 1 /* ELLIPSE */) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n var _a = findCorner(width, height, x, y, true), cx = _a[0], cy = _a[1];\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n case 1 /* FARTHEST_SIDE */:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === 0 /* CIRCLE */) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n }\n else if (gradient.shape === 1 /* ELLIPSE */) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n break;\n case 3 /* FARTHEST_CORNER */:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === 0 /* CIRCLE */) {\n rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n }\n else if (gradient.shape === 1 /* ELLIPSE */) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n var _b = findCorner(width, height, x, y, false), cx = _b[0], cy = _b[1];\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n }\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n return [rx, ry];\n };\n\n var linearGradient = function (context, tokens) {\n var angle$1 = deg(180);\n var stops = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n if (i === 0) {\n var firstToken = arg[0];\n if (firstToken.type === 20 /* IDENT_TOKEN */ && firstToken.value === 'to') {\n angle$1 = parseNamedSide(arg);\n return;\n }\n else if (isAngle(firstToken)) {\n angle$1 = angle.parse(context, firstToken);\n return;\n }\n }\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n return { angle: angle$1, stops: stops, type: 1 /* LINEAR_GRADIENT */ };\n };\n\n var prefixLinearGradient = function (context, tokens) {\n var angle$1 = deg(180);\n var stops = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n if (i === 0) {\n var firstToken = arg[0];\n if (firstToken.type === 20 /* IDENT_TOKEN */ &&\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1) {\n angle$1 = parseNamedSide(arg);\n return;\n }\n else if (isAngle(firstToken)) {\n angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n return {\n angle: angle$1,\n stops: stops,\n type: 1 /* LINEAR_GRADIENT */\n };\n };\n\n var webkitGradient = function (context, tokens) {\n var angle = deg(180);\n var stops = [];\n var type = 1 /* LINEAR_GRADIENT */;\n var shape = 0 /* CIRCLE */;\n var size = 3 /* FARTHEST_CORNER */;\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var firstToken = arg[0];\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = 1 /* LINEAR_GRADIENT */;\n return;\n }\n else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = 2 /* RADIAL_GRADIENT */;\n return;\n }\n }\n if (firstToken.type === 18 /* FUNCTION */) {\n if (firstToken.name === 'from') {\n var color = color$1.parse(context, firstToken.values[0]);\n stops.push({ stop: ZERO_LENGTH, color: color });\n }\n else if (firstToken.name === 'to') {\n var color = color$1.parse(context, firstToken.values[0]);\n stops.push({ stop: HUNDRED_PERCENT, color: color });\n }\n else if (firstToken.name === 'color-stop') {\n var values = firstToken.values.filter(nonFunctionArgSeparator);\n if (values.length === 2) {\n var color = color$1.parse(context, values[1]);\n var stop_1 = values[0];\n if (isNumberToken(stop_1)) {\n stops.push({\n stop: { type: 16 /* PERCENTAGE_TOKEN */, number: stop_1.number * 100, flags: stop_1.flags },\n color: color\n });\n }\n }\n }\n }\n });\n return type === 1 /* LINEAR_GRADIENT */\n ? {\n angle: (angle + deg(180)) % deg(360),\n stops: stops,\n type: type\n }\n : { size: size, shape: shape, stops: stops, position: position, type: type };\n };\n\n var CLOSEST_SIDE = 'closest-side';\n var FARTHEST_SIDE = 'farthest-side';\n var CLOSEST_CORNER = 'closest-corner';\n var FARTHEST_CORNER = 'farthest-corner';\n var CIRCLE = 'circle';\n var ELLIPSE = 'ellipse';\n var COVER = 'cover';\n var CONTAIN = 'contain';\n var radialGradient = function (context, tokens) {\n var shape = 0 /* CIRCLE */;\n var size = 3 /* FARTHEST_CORNER */;\n var stops = [];\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var isColorStop = true;\n if (i === 0) {\n var isAtPosition_1 = false;\n isColorStop = arg.reduce(function (acc, token) {\n if (isAtPosition_1) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n }\n else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n }\n else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = 0 /* CIRCLE */;\n return false;\n case ELLIPSE:\n shape = 1 /* ELLIPSE */;\n return false;\n case 'at':\n isAtPosition_1 = true;\n return false;\n case CLOSEST_SIDE:\n size = 0 /* CLOSEST_SIDE */;\n return false;\n case COVER:\n case FARTHEST_SIDE:\n size = 1 /* FARTHEST_SIDE */;\n return false;\n case CONTAIN:\n case CLOSEST_CORNER:\n size = 2 /* CLOSEST_CORNER */;\n return false;\n case FARTHEST_CORNER:\n size = 3 /* FARTHEST_CORNER */;\n return false;\n }\n }\n else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n if (isColorStop) {\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };\n };\n\n var prefixRadialGradient = function (context, tokens) {\n var shape = 0 /* CIRCLE */;\n var size = 3 /* FARTHEST_CORNER */;\n var stops = [];\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var isColorStop = true;\n if (i === 0) {\n isColorStop = arg.reduce(function (acc, token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n }\n else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n else if (i === 1) {\n isColorStop = arg.reduce(function (acc, token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = 0 /* CIRCLE */;\n return false;\n case ELLIPSE:\n shape = 1 /* ELLIPSE */;\n return false;\n case CONTAIN:\n case CLOSEST_SIDE:\n size = 0 /* CLOSEST_SIDE */;\n return false;\n case FARTHEST_SIDE:\n size = 1 /* FARTHEST_SIDE */;\n return false;\n case CLOSEST_CORNER:\n size = 2 /* CLOSEST_CORNER */;\n return false;\n case COVER:\n case FARTHEST_CORNER:\n size = 3 /* FARTHEST_CORNER */;\n return false;\n }\n }\n else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n if (isColorStop) {\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };\n };\n\n var isLinearGradient = function (background) {\n return background.type === 1 /* LINEAR_GRADIENT */;\n };\n var isRadialGradient = function (background) {\n return background.type === 2 /* RADIAL_GRADIENT */;\n };\n var image = {\n name: 'image',\n parse: function (context, value) {\n if (value.type === 22 /* URL_TOKEN */) {\n var image_1 = { url: value.value, type: 0 /* URL */ };\n context.cache.addImage(value.value);\n return image_1;\n }\n if (value.type === 18 /* FUNCTION */) {\n var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n if (typeof imageFunction === 'undefined') {\n throw new Error(\"Attempting to parse an unsupported image function \\\"\" + value.name + \"\\\"\");\n }\n return imageFunction(context, value.values);\n }\n throw new Error(\"Unsupported image type \" + value.type);\n }\n };\n function isSupportedImage(value) {\n return (!(value.type === 20 /* IDENT_TOKEN */ && value.value === 'none') &&\n (value.type !== 18 /* FUNCTION */ || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]));\n }\n var SUPPORTED_IMAGE_FUNCTIONS = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n };\n\n var backgroundImage = {\n name: 'background-image',\n initialValue: 'none',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (context, tokens) {\n if (tokens.length === 0) {\n return [];\n }\n var first = tokens[0];\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n return [];\n }\n return tokens\n .filter(function (value) { return nonFunctionArgSeparator(value) && isSupportedImage(value); })\n .map(function (value) { return image.parse(context, value); });\n }\n };\n\n var backgroundOrigin = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return tokens.map(function (token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return 1 /* PADDING_BOX */;\n case 'content-box':\n return 2 /* CONTENT_BOX */;\n }\n }\n return 0 /* BORDER_BOX */;\n });\n }\n };\n\n var backgroundPosition = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (_context, tokens) {\n return parseFunctionArgs(tokens)\n .map(function (values) { return values.filter(isLengthPercentage); })\n .map(parseLengthPercentageTuple);\n }\n };\n\n var backgroundRepeat = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return parseFunctionArgs(tokens)\n .map(function (values) {\n return values\n .filter(isIdentToken)\n .map(function (token) { return token.value; })\n .join(' ');\n })\n .map(parseBackgroundRepeat);\n }\n };\n var parseBackgroundRepeat = function (value) {\n switch (value) {\n case 'no-repeat':\n return 1 /* NO_REPEAT */;\n case 'repeat-x':\n case 'repeat no-repeat':\n return 2 /* REPEAT_X */;\n case 'repeat-y':\n case 'no-repeat repeat':\n return 3 /* REPEAT_Y */;\n case 'repeat':\n default:\n return 0 /* REPEAT */;\n }\n };\n\n var BACKGROUND_SIZE;\n (function (BACKGROUND_SIZE) {\n BACKGROUND_SIZE[\"AUTO\"] = \"auto\";\n BACKGROUND_SIZE[\"CONTAIN\"] = \"contain\";\n BACKGROUND_SIZE[\"COVER\"] = \"cover\";\n })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));\n var backgroundSize = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return parseFunctionArgs(tokens).map(function (values) { return values.filter(isBackgroundSizeInfoToken); });\n }\n };\n var isBackgroundSizeInfoToken = function (value) {\n return isIdentToken(value) || isLengthPercentage(value);\n };\n\n var borderColorForSide = function (side) { return ({\n name: \"border-\" + side + \"-color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'color'\n }); };\n var borderTopColor = borderColorForSide('top');\n var borderRightColor = borderColorForSide('right');\n var borderBottomColor = borderColorForSide('bottom');\n var borderLeftColor = borderColorForSide('left');\n\n var borderRadiusForSide = function (side) { return ({\n name: \"border-radius-\" + side,\n initialValue: '0 0',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));\n }\n }); };\n var borderTopLeftRadius = borderRadiusForSide('top-left');\n var borderTopRightRadius = borderRadiusForSide('top-right');\n var borderBottomRightRadius = borderRadiusForSide('bottom-right');\n var borderBottomLeftRadius = borderRadiusForSide('bottom-left');\n\n var borderStyleForSide = function (side) { return ({\n name: \"border-\" + side + \"-style\",\n initialValue: 'solid',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, style) {\n switch (style) {\n case 'none':\n return 0 /* NONE */;\n case 'dashed':\n return 2 /* DASHED */;\n case 'dotted':\n return 3 /* DOTTED */;\n case 'double':\n return 4 /* DOUBLE */;\n }\n return 1 /* SOLID */;\n }\n }); };\n var borderTopStyle = borderStyleForSide('top');\n var borderRightStyle = borderStyleForSide('right');\n var borderBottomStyle = borderStyleForSide('bottom');\n var borderLeftStyle = borderStyleForSide('left');\n\n var borderWidthForSide = function (side) { return ({\n name: \"border-\" + side + \"-width\",\n initialValue: '0',\n type: 0 /* VALUE */,\n prefix: false,\n parse: function (_context, token) {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n }); };\n var borderTopWidth = borderWidthForSide('top');\n var borderRightWidth = borderWidthForSide('right');\n var borderBottomWidth = borderWidthForSide('bottom');\n var borderLeftWidth = borderWidthForSide('left');\n\n var color = {\n name: \"color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'color'\n };\n\n var direction = {\n name: 'direction',\n initialValue: 'ltr',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, direction) {\n switch (direction) {\n case 'rtl':\n return 1 /* RTL */;\n case 'ltr':\n default:\n return 0 /* LTR */;\n }\n }\n };\n\n var display = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return tokens.filter(isIdentToken).reduce(function (bit, token) {\n return bit | parseDisplayValue(token.value);\n }, 0 /* NONE */);\n }\n };\n var parseDisplayValue = function (display) {\n switch (display) {\n case 'block':\n case '-webkit-box':\n return 2 /* BLOCK */;\n case 'inline':\n return 4 /* INLINE */;\n case 'run-in':\n return 8 /* RUN_IN */;\n case 'flow':\n return 16 /* FLOW */;\n case 'flow-root':\n return 32 /* FLOW_ROOT */;\n case 'table':\n return 64 /* TABLE */;\n case 'flex':\n case '-webkit-flex':\n return 128 /* FLEX */;\n case 'grid':\n case '-ms-grid':\n return 256 /* GRID */;\n case 'ruby':\n return 512 /* RUBY */;\n case 'subgrid':\n return 1024 /* SUBGRID */;\n case 'list-item':\n return 2048 /* LIST_ITEM */;\n case 'table-row-group':\n return 4096 /* TABLE_ROW_GROUP */;\n case 'table-header-group':\n return 8192 /* TABLE_HEADER_GROUP */;\n case 'table-footer-group':\n return 16384 /* TABLE_FOOTER_GROUP */;\n case 'table-row':\n return 32768 /* TABLE_ROW */;\n case 'table-cell':\n return 65536 /* TABLE_CELL */;\n case 'table-column-group':\n return 131072 /* TABLE_COLUMN_GROUP */;\n case 'table-column':\n return 262144 /* TABLE_COLUMN */;\n case 'table-caption':\n return 524288 /* TABLE_CAPTION */;\n case 'ruby-base':\n return 1048576 /* RUBY_BASE */;\n case 'ruby-text':\n return 2097152 /* RUBY_TEXT */;\n case 'ruby-base-container':\n return 4194304 /* RUBY_BASE_CONTAINER */;\n case 'ruby-text-container':\n return 8388608 /* RUBY_TEXT_CONTAINER */;\n case 'contents':\n return 16777216 /* CONTENTS */;\n case 'inline-block':\n return 33554432 /* INLINE_BLOCK */;\n case 'inline-list-item':\n return 67108864 /* INLINE_LIST_ITEM */;\n case 'inline-table':\n return 134217728 /* INLINE_TABLE */;\n case 'inline-flex':\n return 268435456 /* INLINE_FLEX */;\n case 'inline-grid':\n return 536870912 /* INLINE_GRID */;\n }\n return 0 /* NONE */;\n };\n\n var float = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, float) {\n switch (float) {\n case 'left':\n return 1 /* LEFT */;\n case 'right':\n return 2 /* RIGHT */;\n case 'inline-start':\n return 3 /* INLINE_START */;\n case 'inline-end':\n return 4 /* INLINE_END */;\n }\n return 0 /* NONE */;\n }\n };\n\n var letterSpacing = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: 0 /* VALUE */,\n parse: function (_context, token) {\n if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'normal') {\n return 0;\n }\n if (token.type === 17 /* NUMBER_TOKEN */) {\n return token.number;\n }\n if (token.type === 15 /* DIMENSION_TOKEN */) {\n return token.number;\n }\n return 0;\n }\n };\n\n var LINE_BREAK;\n (function (LINE_BREAK) {\n LINE_BREAK[\"NORMAL\"] = \"normal\";\n LINE_BREAK[\"STRICT\"] = \"strict\";\n })(LINE_BREAK || (LINE_BREAK = {}));\n var lineBreak = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, lineBreak) {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n };\n\n var lineHeight = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: 4 /* TOKEN_VALUE */\n };\n var computeLineHeight = function (token, fontSize) {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n }\n else if (token.type === 17 /* NUMBER_TOKEN */) {\n return fontSize * token.number;\n }\n else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n return fontSize;\n };\n\n var listStyleImage = {\n name: 'list-style-image',\n initialValue: 'none',\n type: 0 /* VALUE */,\n prefix: false,\n parse: function (context, token) {\n if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {\n return null;\n }\n return image.parse(context, token);\n }\n };\n\n var listStylePosition = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, position) {\n switch (position) {\n case 'inside':\n return 0 /* INSIDE */;\n case 'outside':\n default:\n return 1 /* OUTSIDE */;\n }\n }\n };\n\n var listStyleType = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, type) {\n switch (type) {\n case 'disc':\n return 0 /* DISC */;\n case 'circle':\n return 1 /* CIRCLE */;\n case 'square':\n return 2 /* SQUARE */;\n case 'decimal':\n return 3 /* DECIMAL */;\n case 'cjk-decimal':\n return 4 /* CJK_DECIMAL */;\n case 'decimal-leading-zero':\n return 5 /* DECIMAL_LEADING_ZERO */;\n case 'lower-roman':\n return 6 /* LOWER_ROMAN */;\n case 'upper-roman':\n return 7 /* UPPER_ROMAN */;\n case 'lower-greek':\n return 8 /* LOWER_GREEK */;\n case 'lower-alpha':\n return 9 /* LOWER_ALPHA */;\n case 'upper-alpha':\n return 10 /* UPPER_ALPHA */;\n case 'arabic-indic':\n return 11 /* ARABIC_INDIC */;\n case 'armenian':\n return 12 /* ARMENIAN */;\n case 'bengali':\n return 13 /* BENGALI */;\n case 'cambodian':\n return 14 /* CAMBODIAN */;\n case 'cjk-earthly-branch':\n return 15 /* CJK_EARTHLY_BRANCH */;\n case 'cjk-heavenly-stem':\n return 16 /* CJK_HEAVENLY_STEM */;\n case 'cjk-ideographic':\n return 17 /* CJK_IDEOGRAPHIC */;\n case 'devanagari':\n return 18 /* DEVANAGARI */;\n case 'ethiopic-numeric':\n return 19 /* ETHIOPIC_NUMERIC */;\n case 'georgian':\n return 20 /* GEORGIAN */;\n case 'gujarati':\n return 21 /* GUJARATI */;\n case 'gurmukhi':\n return 22 /* GURMUKHI */;\n case 'hebrew':\n return 22 /* HEBREW */;\n case 'hiragana':\n return 23 /* HIRAGANA */;\n case 'hiragana-iroha':\n return 24 /* HIRAGANA_IROHA */;\n case 'japanese-formal':\n return 25 /* JAPANESE_FORMAL */;\n case 'japanese-informal':\n return 26 /* JAPANESE_INFORMAL */;\n case 'kannada':\n return 27 /* KANNADA */;\n case 'katakana':\n return 28 /* KATAKANA */;\n case 'katakana-iroha':\n return 29 /* KATAKANA_IROHA */;\n case 'khmer':\n return 30 /* KHMER */;\n case 'korean-hangul-formal':\n return 31 /* KOREAN_HANGUL_FORMAL */;\n case 'korean-hanja-formal':\n return 32 /* KOREAN_HANJA_FORMAL */;\n case 'korean-hanja-informal':\n return 33 /* KOREAN_HANJA_INFORMAL */;\n case 'lao':\n return 34 /* LAO */;\n case 'lower-armenian':\n return 35 /* LOWER_ARMENIAN */;\n case 'malayalam':\n return 36 /* MALAYALAM */;\n case 'mongolian':\n return 37 /* MONGOLIAN */;\n case 'myanmar':\n return 38 /* MYANMAR */;\n case 'oriya':\n return 39 /* ORIYA */;\n case 'persian':\n return 40 /* PERSIAN */;\n case 'simp-chinese-formal':\n return 41 /* SIMP_CHINESE_FORMAL */;\n case 'simp-chinese-informal':\n return 42 /* SIMP_CHINESE_INFORMAL */;\n case 'tamil':\n return 43 /* TAMIL */;\n case 'telugu':\n return 44 /* TELUGU */;\n case 'thai':\n return 45 /* THAI */;\n case 'tibetan':\n return 46 /* TIBETAN */;\n case 'trad-chinese-formal':\n return 47 /* TRAD_CHINESE_FORMAL */;\n case 'trad-chinese-informal':\n return 48 /* TRAD_CHINESE_INFORMAL */;\n case 'upper-armenian':\n return 49 /* UPPER_ARMENIAN */;\n case 'disclosure-open':\n return 50 /* DISCLOSURE_OPEN */;\n case 'disclosure-closed':\n return 51 /* DISCLOSURE_CLOSED */;\n case 'none':\n default:\n return -1 /* NONE */;\n }\n }\n };\n\n var marginForSide = function (side) { return ({\n name: \"margin-\" + side,\n initialValue: '0',\n prefix: false,\n type: 4 /* TOKEN_VALUE */\n }); };\n var marginTop = marginForSide('top');\n var marginRight = marginForSide('right');\n var marginBottom = marginForSide('bottom');\n var marginLeft = marginForSide('left');\n\n var overflow = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return tokens.filter(isIdentToken).map(function (overflow) {\n switch (overflow.value) {\n case 'hidden':\n return 1 /* HIDDEN */;\n case 'scroll':\n return 2 /* SCROLL */;\n case 'clip':\n return 3 /* CLIP */;\n case 'auto':\n return 4 /* AUTO */;\n case 'visible':\n default:\n return 0 /* VISIBLE */;\n }\n });\n }\n };\n\n var overflowWrap = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, overflow) {\n switch (overflow) {\n case 'break-word':\n return \"break-word\" /* BREAK_WORD */;\n case 'normal':\n default:\n return \"normal\" /* NORMAL */;\n }\n }\n };\n\n var paddingForSide = function (side) { return ({\n name: \"padding-\" + side,\n initialValue: '0',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'length-percentage'\n }); };\n var paddingTop = paddingForSide('top');\n var paddingRight = paddingForSide('right');\n var paddingBottom = paddingForSide('bottom');\n var paddingLeft = paddingForSide('left');\n\n var textAlign = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, textAlign) {\n switch (textAlign) {\n case 'right':\n return 2 /* RIGHT */;\n case 'center':\n case 'justify':\n return 1 /* CENTER */;\n case 'left':\n default:\n return 0 /* LEFT */;\n }\n }\n };\n\n var position = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, position) {\n switch (position) {\n case 'relative':\n return 1 /* RELATIVE */;\n case 'absolute':\n return 2 /* ABSOLUTE */;\n case 'fixed':\n return 3 /* FIXED */;\n case 'sticky':\n return 4 /* STICKY */;\n }\n return 0 /* STATIC */;\n }\n };\n\n var textShadow = {\n name: 'text-shadow',\n initialValue: 'none',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (context, tokens) {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n return parseFunctionArgs(tokens).map(function (values) {\n var shadow = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n var c = 0;\n for (var i = 0; i < values.length; i++) {\n var token = values[i];\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n }\n else if (c === 1) {\n shadow.offsetY = token;\n }\n else {\n shadow.blur = token;\n }\n c++;\n }\n else {\n shadow.color = color$1.parse(context, token);\n }\n }\n return shadow;\n });\n }\n };\n\n var textTransform = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, textTransform) {\n switch (textTransform) {\n case 'uppercase':\n return 2 /* UPPERCASE */;\n case 'lowercase':\n return 1 /* LOWERCASE */;\n case 'capitalize':\n return 3 /* CAPITALIZE */;\n }\n return 0 /* NONE */;\n }\n };\n\n var transform$1 = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: 0 /* VALUE */,\n parse: function (_context, token) {\n if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {\n return null;\n }\n if (token.type === 18 /* FUNCTION */) {\n var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n if (typeof transformFunction === 'undefined') {\n throw new Error(\"Attempting to parse an unsupported transform function \\\"\" + token.name + \"\\\"\");\n }\n return transformFunction(token.values);\n }\n return null;\n }\n };\n var matrix = function (args) {\n var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });\n return values.length === 6 ? values : null;\n };\n // doesn't support 3D transforms at the moment\n var matrix3d = function (args) {\n var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });\n var a1 = values[0], b1 = values[1]; values[2]; values[3]; var a2 = values[4], b2 = values[5]; values[6]; values[7]; values[8]; values[9]; values[10]; values[11]; var a4 = values[12], b4 = values[13]; values[14]; values[15];\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n };\n var SUPPORTED_TRANSFORM_FUNCTIONS = {\n matrix: matrix,\n matrix3d: matrix3d\n };\n\n var DEFAULT_VALUE = {\n type: 16 /* PERCENTAGE_TOKEN */,\n number: 50,\n flags: FLAG_INTEGER\n };\n var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];\n var transformOrigin = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n var origins = tokens.filter(isLengthPercentage);\n if (origins.length !== 2) {\n return DEFAULT;\n }\n return [origins[0], origins[1]];\n }\n };\n\n var visibility = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, visibility) {\n switch (visibility) {\n case 'hidden':\n return 1 /* HIDDEN */;\n case 'collapse':\n return 2 /* COLLAPSE */;\n case 'visible':\n default:\n return 0 /* VISIBLE */;\n }\n }\n };\n\n var WORD_BREAK;\n (function (WORD_BREAK) {\n WORD_BREAK[\"NORMAL\"] = \"normal\";\n WORD_BREAK[\"BREAK_ALL\"] = \"break-all\";\n WORD_BREAK[\"KEEP_ALL\"] = \"keep-all\";\n })(WORD_BREAK || (WORD_BREAK = {}));\n var wordBreak = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, wordBreak) {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n };\n\n var zIndex = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: 0 /* VALUE */,\n parse: function (_context, token) {\n if (token.type === 20 /* IDENT_TOKEN */) {\n return { auto: true, order: 0 };\n }\n if (isNumberToken(token)) {\n return { auto: false, order: token.number };\n }\n throw new Error(\"Invalid z-index number parsed\");\n }\n };\n\n var time = {\n name: 'time',\n parse: function (_context, value) {\n if (value.type === 15 /* DIMENSION_TOKEN */) {\n switch (value.unit.toLowerCase()) {\n case 's':\n return 1000 * value.number;\n case 'ms':\n return value.number;\n }\n }\n throw new Error(\"Unsupported time type\");\n }\n };\n\n var opacity = {\n name: 'opacity',\n initialValue: '1',\n type: 0 /* VALUE */,\n prefix: false,\n parse: function (_context, token) {\n if (isNumberToken(token)) {\n return token.number;\n }\n return 1;\n }\n };\n\n var textDecorationColor = {\n name: \"text-decoration-color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'color'\n };\n\n var textDecorationLine = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return tokens\n .filter(isIdentToken)\n .map(function (token) {\n switch (token.value) {\n case 'underline':\n return 1 /* UNDERLINE */;\n case 'overline':\n return 2 /* OVERLINE */;\n case 'line-through':\n return 3 /* LINE_THROUGH */;\n case 'none':\n return 4 /* BLINK */;\n }\n return 0 /* NONE */;\n })\n .filter(function (line) { return line !== 0 /* NONE */; });\n }\n };\n\n var fontFamily = {\n name: \"font-family\",\n initialValue: '',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n var accumulator = [];\n var results = [];\n tokens.forEach(function (token) {\n switch (token.type) {\n case 20 /* IDENT_TOKEN */:\n case 0 /* STRING_TOKEN */:\n accumulator.push(token.value);\n break;\n case 17 /* NUMBER_TOKEN */:\n accumulator.push(token.number.toString());\n break;\n case 4 /* COMMA_TOKEN */:\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n return results.map(function (result) { return (result.indexOf(' ') === -1 ? result : \"'\" + result + \"'\"); });\n }\n };\n\n var fontSize = {\n name: \"font-size\",\n initialValue: '0',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'length'\n };\n\n var fontWeight = {\n name: 'font-weight',\n initialValue: 'normal',\n type: 0 /* VALUE */,\n prefix: false,\n parse: function (_context, token) {\n if (isNumberToken(token)) {\n return token.number;\n }\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n case 'normal':\n default:\n return 400;\n }\n }\n return 400;\n }\n };\n\n var fontVariant = {\n name: 'font-variant',\n initialValue: 'none',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (_context, tokens) {\n return tokens.filter(isIdentToken).map(function (token) { return token.value; });\n }\n };\n\n var fontStyle = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, overflow) {\n switch (overflow) {\n case 'oblique':\n return \"oblique\" /* OBLIQUE */;\n case 'italic':\n return \"italic\" /* ITALIC */;\n case 'normal':\n default:\n return \"normal\" /* NORMAL */;\n }\n }\n };\n\n var contains = function (bit, value) { return (bit & value) !== 0; };\n\n var content = {\n name: 'content',\n initialValue: 'none',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (_context, tokens) {\n if (tokens.length === 0) {\n return [];\n }\n var first = tokens[0];\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n return [];\n }\n return tokens;\n }\n };\n\n var counterIncrement = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n if (tokens.length === 0) {\n return null;\n }\n var first = tokens[0];\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n return null;\n }\n var increments = [];\n var filtered = tokens.filter(nonWhiteSpace);\n for (var i = 0; i < filtered.length; i++) {\n var counter = filtered[i];\n var next = filtered[i + 1];\n if (counter.type === 20 /* IDENT_TOKEN */) {\n var increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({ counter: counter.value, increment: increment });\n }\n }\n return increments;\n }\n };\n\n var counterReset = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n if (tokens.length === 0) {\n return [];\n }\n var resets = [];\n var filtered = tokens.filter(nonWhiteSpace);\n for (var i = 0; i < filtered.length; i++) {\n var counter = filtered[i];\n var next = filtered[i + 1];\n if (isIdentToken(counter) && counter.value !== 'none') {\n var reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({ counter: counter.value, reset: reset });\n }\n }\n return resets;\n }\n };\n\n var duration = {\n name: 'duration',\n initialValue: '0s',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (context, tokens) {\n return tokens.filter(isDimensionToken).map(function (token) { return time.parse(context, token); });\n }\n };\n\n var quotes = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n if (tokens.length === 0) {\n return null;\n }\n var first = tokens[0];\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n return null;\n }\n var quotes = [];\n var filtered = tokens.filter(isStringToken);\n if (filtered.length % 2 !== 0) {\n return null;\n }\n for (var i = 0; i < filtered.length; i += 2) {\n var open_1 = filtered[i].value;\n var close_1 = filtered[i + 1].value;\n quotes.push({ open: open_1, close: close_1 });\n }\n return quotes;\n }\n };\n var getQuote = function (quotes, depth, open) {\n if (!quotes) {\n return '';\n }\n var quote = quotes[Math.min(depth, quotes.length - 1)];\n if (!quote) {\n return '';\n }\n return open ? quote.open : quote.close;\n };\n\n var boxShadow = {\n name: 'box-shadow',\n initialValue: 'none',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (context, tokens) {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n return parseFunctionArgs(tokens).map(function (values) {\n var shadow = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n var c = 0;\n for (var i = 0; i < values.length; i++) {\n var token = values[i];\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n }\n else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n }\n else if (c === 1) {\n shadow.offsetY = token;\n }\n else if (c === 2) {\n shadow.blur = token;\n }\n else {\n shadow.spread = token;\n }\n c++;\n }\n else {\n shadow.color = color$1.parse(context, token);\n }\n }\n return shadow;\n });\n }\n };\n\n var paintOrder = {\n name: 'paint-order',\n initialValue: 'normal',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n var DEFAULT_VALUE = [0 /* FILL */, 1 /* STROKE */, 2 /* MARKERS */];\n var layers = [];\n tokens.filter(isIdentToken).forEach(function (token) {\n switch (token.value) {\n case 'stroke':\n layers.push(1 /* STROKE */);\n break;\n case 'fill':\n layers.push(0 /* FILL */);\n break;\n case 'markers':\n layers.push(2 /* MARKERS */);\n break;\n }\n });\n DEFAULT_VALUE.forEach(function (value) {\n if (layers.indexOf(value) === -1) {\n layers.push(value);\n }\n });\n return layers;\n }\n };\n\n var webkitTextStrokeColor = {\n name: \"-webkit-text-stroke-color\",\n initialValue: 'currentcolor',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'color'\n };\n\n var webkitTextStrokeWidth = {\n name: \"-webkit-text-stroke-width\",\n initialValue: '0',\n type: 0 /* VALUE */,\n prefix: false,\n parse: function (_context, token) {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n };\n\n var CSSParsedDeclaration = /** @class */ (function () {\n function CSSParsedDeclaration(context, declaration) {\n var _a, _b;\n this.animationDuration = parse(context, duration, declaration.animationDuration);\n this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n this.color = parse(context, color, declaration.color);\n this.direction = parse(context, direction, declaration.direction);\n this.display = parse(context, display, declaration.display);\n this.float = parse(context, float, declaration.cssFloat);\n this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n this.fontSize = parse(context, fontSize, declaration.fontSize);\n this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n this.marginTop = parse(context, marginTop, declaration.marginTop);\n this.marginRight = parse(context, marginRight, declaration.marginRight);\n this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n this.opacity = parse(context, opacity, declaration.opacity);\n var overflowTuple = parse(context, overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n this.position = parse(context, position, declaration.position);\n this.textAlign = parse(context, textAlign, declaration.textAlign);\n this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color);\n this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration);\n this.textShadow = parse(context, textShadow, declaration.textShadow);\n this.textTransform = parse(context, textTransform, declaration.textTransform);\n this.transform = parse(context, transform$1, declaration.transform);\n this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n this.visibility = parse(context, visibility, declaration.visibility);\n this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n this.zIndex = parse(context, zIndex, declaration.zIndex);\n }\n CSSParsedDeclaration.prototype.isVisible = function () {\n return this.display > 0 && this.opacity > 0 && this.visibility === 0 /* VISIBLE */;\n };\n CSSParsedDeclaration.prototype.isTransparent = function () {\n return isTransparent(this.backgroundColor);\n };\n CSSParsedDeclaration.prototype.isTransformed = function () {\n return this.transform !== null;\n };\n CSSParsedDeclaration.prototype.isPositioned = function () {\n return this.position !== 0 /* STATIC */;\n };\n CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () {\n return this.isPositioned() && !this.zIndex.auto;\n };\n CSSParsedDeclaration.prototype.isFloating = function () {\n return this.float !== 0 /* NONE */;\n };\n CSSParsedDeclaration.prototype.isInlineLevel = function () {\n return (contains(this.display, 4 /* INLINE */) ||\n contains(this.display, 33554432 /* INLINE_BLOCK */) ||\n contains(this.display, 268435456 /* INLINE_FLEX */) ||\n contains(this.display, 536870912 /* INLINE_GRID */) ||\n contains(this.display, 67108864 /* INLINE_LIST_ITEM */) ||\n contains(this.display, 134217728 /* INLINE_TABLE */));\n };\n return CSSParsedDeclaration;\n }());\n var CSSParsedPseudoDeclaration = /** @class */ (function () {\n function CSSParsedPseudoDeclaration(context, declaration) {\n this.content = parse(context, content, declaration.content);\n this.quotes = parse(context, quotes, declaration.quotes);\n }\n return CSSParsedPseudoDeclaration;\n }());\n var CSSParsedCounterDeclaration = /** @class */ (function () {\n function CSSParsedCounterDeclaration(context, declaration) {\n this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(context, counterReset, declaration.counterReset);\n }\n return CSSParsedCounterDeclaration;\n }());\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parse = function (context, descriptor, style) {\n var tokenizer = new Tokenizer();\n var value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n var parser = new Parser(tokenizer.read());\n switch (descriptor.type) {\n case 2 /* IDENT_VALUE */:\n var token = parser.parseComponentValue();\n return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n case 0 /* VALUE */:\n return descriptor.parse(context, parser.parseComponentValue());\n case 1 /* LIST */:\n return descriptor.parse(context, parser.parseComponentValues());\n case 4 /* TOKEN_VALUE */:\n return parser.parseComponentValue();\n case 3 /* TYPE_VALUE */:\n switch (descriptor.format) {\n case 'angle':\n return angle.parse(context, parser.parseComponentValue());\n case 'color':\n return color$1.parse(context, parser.parseComponentValue());\n case 'image':\n return image.parse(context, parser.parseComponentValue());\n case 'length':\n var length_1 = parser.parseComponentValue();\n return isLength(length_1) ? length_1 : ZERO_LENGTH;\n case 'length-percentage':\n var value_1 = parser.parseComponentValue();\n return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;\n case 'time':\n return time.parse(context, parser.parseComponentValue());\n }\n break;\n }\n };\n\n var elementDebuggerAttribute = 'data-html2canvas-debug';\n var getElementDebugType = function (element) {\n var attribute = element.getAttribute(elementDebuggerAttribute);\n switch (attribute) {\n case 'all':\n return 1 /* ALL */;\n case 'clone':\n return 2 /* CLONE */;\n case 'parse':\n return 3 /* PARSE */;\n case 'render':\n return 4 /* RENDER */;\n default:\n return 0 /* NONE */;\n }\n };\n var isDebugging = function (element, type) {\n var elementType = getElementDebugType(element);\n return elementType === 1 /* ALL */ || type === elementType;\n };\n\n var ElementContainer = /** @class */ (function () {\n function ElementContainer(context, element) {\n this.context = context;\n this.textNodes = [];\n this.elements = [];\n this.flags = 0;\n if (isDebugging(element, 3 /* PARSE */)) {\n debugger;\n }\n this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n if (isHTMLElementNode(element)) {\n if (this.styles.animationDuration.some(function (duration) { return duration > 0; })) {\n element.style.animationDuration = '0s';\n }\n if (this.styles.transform !== null) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n }\n this.bounds = parseBounds(this.context, element);\n if (isDebugging(element, 4 /* RENDER */)) {\n this.flags |= 16 /* DEBUG_RENDER */;\n }\n }\n return ElementContainer;\n }());\n\n /*\n * text-segmentation 1.0.3 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\n var base64 = 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\n\n /*\n * utrie 1.0.2 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\n var chars$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i$1 = 0; i$1 < chars$1.length; i$1++) {\n lookup$1[chars$1.charCodeAt(i$1)] = i$1;\n }\n var decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var buffer = typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup$1[base64.charCodeAt(i)];\n encoded2 = lookup$1[base64.charCodeAt(i + 1)];\n encoded3 = lookup$1[base64.charCodeAt(i + 2)];\n encoded4 = lookup$1[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return buffer;\n };\n var polyUint16Array = function (buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n };\n var polyUint32Array = function (buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n };\n\n /** Shift size for getting the index-2 table offset. */\n var UTRIE2_SHIFT_2 = 5;\n /** Shift size for getting the index-1 table offset. */\n var UTRIE2_SHIFT_1 = 6 + 5;\n /**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\n var UTRIE2_INDEX_SHIFT = 2;\n /**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\n var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n /**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\n var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n /** Number of entries in a data block. 32=0x20 */\n var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n /** Mask for getting the lower bits for the in-data-block offset. */\n var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n /** Count the lengths of both BMP pieces. 2080=0x820 */\n var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n /**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\n var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\n var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n /**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\n var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n /**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\n var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n /** Number of entries in an index-2 block. 64=0x40 */\n var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n /** Mask for getting the lower bits for the in-index-2-block offset. */\n var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n var slice16 = function (view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n };\n var slice32 = function (view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n };\n var createTrieFromBase64 = function (base64, _byteLength) {\n var buffer = decode(base64);\n var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n var headerLength = 24;\n var index = slice16(view16, headerLength / 2, view32[4] / 2);\n var data = view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n };\n var Trie = /** @class */ (function () {\n function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n Trie.prototype.get = function (codePoint) {\n var ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n };\n return Trie;\n }());\n\n /*\n * base64-arraybuffer 1.0.2 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n var Prepend = 1;\n var CR = 2;\n var LF = 3;\n var Control = 4;\n var Extend = 5;\n var SpacingMark = 7;\n var L = 8;\n var V = 9;\n var T = 10;\n var LV = 11;\n var LVT = 12;\n var ZWJ = 13;\n var Extended_Pictographic = 14;\n var RI = 15;\n var toCodePoints = function (str) {\n var codePoints = [];\n var i = 0;\n var length = str.length;\n while (i < length) {\n var value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n var extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n }\n else {\n codePoints.push(value);\n i--;\n }\n }\n else {\n codePoints.push(value);\n }\n }\n return codePoints;\n };\n var fromCodePoint = function () {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n if (String.fromCodePoint) {\n return String.fromCodePoint.apply(String, codePoints);\n }\n var length = codePoints.length;\n if (!length) {\n return '';\n }\n var codeUnits = [];\n var index = -1;\n var result = '';\n while (++index < length) {\n var codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n }\n else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode.apply(String, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n var UnicodeTrie = createTrieFromBase64(base64);\n var BREAK_NOT_ALLOWED = '×';\n var BREAK_ALLOWED = '÷';\n var codePointToClass = function (codePoint) { return UnicodeTrie.get(codePoint); };\n var _graphemeBreakAtIndex = function (_codePoints, classTypes, index) {\n var prevIndex = index - 2;\n var prev = classTypes[prevIndex];\n var current = classTypes[index - 1];\n var next = classTypes[index];\n // GB3 Do not break between a CR and LF\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n // GB4 Otherwise, break before and after controls.\n if (current === CR || current === LF || current === Control) {\n return BREAK_ALLOWED;\n }\n // GB5\n if (next === CR || next === LF || next === Control) {\n return BREAK_ALLOWED;\n }\n // Do not break Hangul syllable sequences.\n // GB6\n if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n // GB7\n if ((current === LV || current === V) && (next === V || next === T)) {\n return BREAK_NOT_ALLOWED;\n }\n // GB8\n if ((current === LVT || current === T) && next === T) {\n return BREAK_NOT_ALLOWED;\n }\n // GB9 Do not break before extending characters or ZWJ.\n if (next === ZWJ || next === Extend) {\n return BREAK_NOT_ALLOWED;\n }\n // Do not break before SpacingMarks, or after Prepend characters.\n // GB9a\n if (next === SpacingMark) {\n return BREAK_NOT_ALLOWED;\n }\n // GB9a\n if (current === Prepend) {\n return BREAK_NOT_ALLOWED;\n }\n // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n if (current === ZWJ && next === Extended_Pictographic) {\n while (prev === Extend) {\n prev = classTypes[--prevIndex];\n }\n if (prev === Extended_Pictographic) {\n return BREAK_NOT_ALLOWED;\n }\n }\n // GB12 Do not break within emoji flag sequences.\n // That is, do not break between regional indicator (RI) symbols\n // if there is an odd number of RI characters before the break point.\n if (current === RI && next === RI) {\n var countRI = 0;\n while (prev === RI) {\n countRI++;\n prev = classTypes[--prevIndex];\n }\n if (countRI % 2 === 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n return BREAK_ALLOWED;\n };\n var GraphemeBreaker = function (str) {\n var codePoints = toCodePoints(str);\n var length = codePoints.length;\n var index = 0;\n var lastEnd = 0;\n var classTypes = codePoints.map(codePointToClass);\n return {\n next: function () {\n if (index >= length) {\n return { done: true, value: null };\n }\n var graphemeBreak = BREAK_NOT_ALLOWED;\n while (index < length &&\n (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) { }\n if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n lastEnd = index;\n return { value: value, done: false };\n }\n return { done: true, value: null };\n },\n };\n };\n var splitGraphemes = function (str) {\n var breaker = GraphemeBreaker(str);\n var graphemes = [];\n var bk;\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n graphemes.push(bk.value.slice());\n }\n }\n return graphemes;\n };\n\n var testRangeBounds = function (document) {\n var TEST_HEIGHT = 123;\n if (document.createRange) {\n var range = document.createRange();\n if (range.getBoundingClientRect) {\n var testElement = document.createElement('boundtest');\n testElement.style.height = TEST_HEIGHT + \"px\";\n testElement.style.display = 'block';\n document.body.appendChild(testElement);\n range.selectNode(testElement);\n var rangeBounds = range.getBoundingClientRect();\n var rangeHeight = Math.round(rangeBounds.height);\n document.body.removeChild(testElement);\n if (rangeHeight === TEST_HEIGHT) {\n return true;\n }\n }\n }\n return false;\n };\n var testIOSLineBreak = function (document) {\n var testElement = document.createElement('boundtest');\n testElement.style.width = '50px';\n testElement.style.display = 'block';\n testElement.style.fontSize = '12px';\n testElement.style.letterSpacing = '0px';\n testElement.style.wordSpacing = '0px';\n document.body.appendChild(testElement);\n var range = document.createRange();\n testElement.innerHTML = typeof ''.repeat === 'function' ? '👨'.repeat(10) : '';\n var node = testElement.firstChild;\n var textList = toCodePoints$1(node.data).map(function (i) { return fromCodePoint$1(i); });\n var offset = 0;\n var prev = {};\n // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n var supports = textList.every(function (text, i) {\n range.setStart(node, offset);\n range.setEnd(node, offset + text.length);\n var rect = range.getBoundingClientRect();\n offset += text.length;\n var boundAhead = rect.x > prev.x || rect.y > prev.y;\n prev = rect;\n if (i === 0) {\n return true;\n }\n return boundAhead;\n });\n document.body.removeChild(testElement);\n return supports;\n };\n var testCORS = function () { return typeof new Image().crossOrigin !== 'undefined'; };\n var testResponseType = function () { return typeof new XMLHttpRequest().responseType === 'string'; };\n var testSVG = function (document) {\n var img = new Image();\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (!ctx) {\n return false;\n }\n img.src = \"data:image/svg+xml,\";\n try {\n ctx.drawImage(img, 0, 0);\n canvas.toDataURL();\n }\n catch (e) {\n return false;\n }\n return true;\n };\n var isGreenPixel = function (data) {\n return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n };\n var testForeignObject = function (document) {\n var canvas = document.createElement('canvas');\n var size = 100;\n canvas.width = size;\n canvas.height = size;\n var ctx = canvas.getContext('2d');\n if (!ctx) {\n return Promise.reject(false);\n }\n ctx.fillStyle = 'rgb(0, 255, 0)';\n ctx.fillRect(0, 0, size, size);\n var img = new Image();\n var greenImageSrc = canvas.toDataURL();\n img.src = greenImageSrc;\n var svg = createForeignObjectSVG(size, size, 0, 0, img);\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n return loadSerializedSVG$1(svg)\n .then(function (img) {\n ctx.drawImage(img, 0, 0);\n var data = ctx.getImageData(0, 0, size, size).data;\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n var node = document.createElement('div');\n node.style.backgroundImage = \"url(\" + greenImageSrc + \")\";\n node.style.height = size + \"px\";\n // Firefox 55 does not render inline tags\n return isGreenPixel(data)\n ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node))\n : Promise.reject(false);\n })\n .then(function (img) {\n ctx.drawImage(img, 0, 0);\n // Edge does not render background-images\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n })\n .catch(function () { return false; });\n };\n var createForeignObjectSVG = function (width, height, x, y, node) {\n var xmlns = 'http://www.w3.org/2000/svg';\n var svg = document.createElementNS(xmlns, 'svg');\n var foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n foreignObject.setAttributeNS(null, 'width', '100%');\n foreignObject.setAttributeNS(null, 'height', '100%');\n foreignObject.setAttributeNS(null, 'x', x.toString());\n foreignObject.setAttributeNS(null, 'y', y.toString());\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n foreignObject.appendChild(node);\n return svg;\n };\n var loadSerializedSVG$1 = function (svg) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () { return resolve(img); };\n img.onerror = reject;\n img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n });\n };\n var FEATURES = {\n get SUPPORT_RANGE_BOUNDS() {\n var value = testRangeBounds(document);\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value });\n return value;\n },\n get SUPPORT_WORD_BREAKING() {\n var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', { value: value });\n return value;\n },\n get SUPPORT_SVG_DRAWING() {\n var value = testSVG(document);\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value });\n return value;\n },\n get SUPPORT_FOREIGNOBJECT_DRAWING() {\n var value = typeof Array.from === 'function' && typeof window.fetch === 'function'\n ? testForeignObject(document)\n : Promise.resolve(false);\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value });\n return value;\n },\n get SUPPORT_CORS_IMAGES() {\n var value = testCORS();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value });\n return value;\n },\n get SUPPORT_RESPONSE_TYPE() {\n var value = testResponseType();\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value });\n return value;\n },\n get SUPPORT_CORS_XHR() {\n var value = 'withCredentials' in new XMLHttpRequest();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value });\n return value;\n },\n get SUPPORT_NATIVE_TEXT_SEGMENTATION() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = !!(typeof Intl !== 'undefined' && Intl.Segmenter);\n Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', { value: value });\n return value;\n }\n };\n\n var TextBounds = /** @class */ (function () {\n function TextBounds(text, bounds) {\n this.text = text;\n this.bounds = bounds;\n }\n return TextBounds;\n }());\n var parseTextBounds = function (context, value, styles, node) {\n var textList = breakText(value, styles);\n var textBounds = [];\n var offset = 0;\n textList.forEach(function (text) {\n if (styles.textDecorationLine.length || text.trim().length > 0) {\n if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n var clientRects = createRange(node, offset, text.length).getClientRects();\n if (clientRects.length > 1) {\n var subSegments = segmentGraphemes(text);\n var subOffset_1 = 0;\n subSegments.forEach(function (subSegment) {\n textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset, subSegment.length).getClientRects())));\n subOffset_1 += subSegment.length;\n });\n }\n else {\n textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n }\n }\n else {\n var replacementNode = node.splitText(text.length);\n textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n node = replacementNode;\n }\n }\n else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n node = node.splitText(text.length);\n }\n offset += text.length;\n });\n return textBounds;\n };\n var getWrapperBounds = function (context, node) {\n var ownerDocument = node.ownerDocument;\n if (ownerDocument) {\n var wrapper = ownerDocument.createElement('html2canvaswrapper');\n wrapper.appendChild(node.cloneNode(true));\n var parentNode = node.parentNode;\n if (parentNode) {\n parentNode.replaceChild(wrapper, node);\n var bounds = parseBounds(context, wrapper);\n if (wrapper.firstChild) {\n parentNode.replaceChild(wrapper.firstChild, wrapper);\n }\n return bounds;\n }\n }\n return Bounds.EMPTY;\n };\n var createRange = function (node, offset, length) {\n var ownerDocument = node.ownerDocument;\n if (!ownerDocument) {\n throw new Error('Node has no owner document');\n }\n var range = ownerDocument.createRange();\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return range;\n };\n var segmentGraphemes = function (value) {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var segmenter = new Intl.Segmenter(void 0, { granularity: 'grapheme' });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });\n }\n return splitGraphemes(value);\n };\n var segmentWords = function (value, styles) {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var segmenter = new Intl.Segmenter(void 0, {\n granularity: 'word'\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });\n }\n return breakWords(value, styles);\n };\n var breakText = function (value, styles) {\n return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n };\n // https://drafts.csswg.org/css-text/#word-separator\n var wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n var breakWords = function (str, styles) {\n var breaker = LineBreaker(str, {\n lineBreak: styles.lineBreak,\n wordBreak: styles.overflowWrap === \"break-word\" /* BREAK_WORD */ ? 'break-word' : styles.wordBreak\n });\n var words = [];\n var bk;\n var _loop_1 = function () {\n if (bk.value) {\n var value = bk.value.slice();\n var codePoints = toCodePoints$1(value);\n var word_1 = '';\n codePoints.forEach(function (codePoint) {\n if (wordSeparators.indexOf(codePoint) === -1) {\n word_1 += fromCodePoint$1(codePoint);\n }\n else {\n if (word_1.length) {\n words.push(word_1);\n }\n words.push(fromCodePoint$1(codePoint));\n word_1 = '';\n }\n });\n if (word_1.length) {\n words.push(word_1);\n }\n }\n };\n while (!(bk = breaker.next()).done) {\n _loop_1();\n }\n return words;\n };\n\n var TextContainer = /** @class */ (function () {\n function TextContainer(context, node, styles) {\n this.text = transform(node.data, styles.textTransform);\n this.textBounds = parseTextBounds(context, this.text, styles, node);\n }\n return TextContainer;\n }());\n var transform = function (text, transform) {\n switch (transform) {\n case 1 /* LOWERCASE */:\n return text.toLowerCase();\n case 3 /* CAPITALIZE */:\n return text.replace(CAPITALIZE, capitalize);\n case 2 /* UPPERCASE */:\n return text.toUpperCase();\n default:\n return text;\n }\n };\n var CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n var capitalize = function (m, p1, p2) {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n return m;\n };\n\n var ImageElementContainer = /** @class */ (function (_super) {\n __extends(ImageElementContainer, _super);\n function ImageElementContainer(context, img) {\n var _this = _super.call(this, context, img) || this;\n _this.src = img.currentSrc || img.src;\n _this.intrinsicWidth = img.naturalWidth;\n _this.intrinsicHeight = img.naturalHeight;\n _this.context.cache.addImage(_this.src);\n return _this;\n }\n return ImageElementContainer;\n }(ElementContainer));\n\n var CanvasElementContainer = /** @class */ (function (_super) {\n __extends(CanvasElementContainer, _super);\n function CanvasElementContainer(context, canvas) {\n var _this = _super.call(this, context, canvas) || this;\n _this.canvas = canvas;\n _this.intrinsicWidth = canvas.width;\n _this.intrinsicHeight = canvas.height;\n return _this;\n }\n return CanvasElementContainer;\n }(ElementContainer));\n\n var SVGElementContainer = /** @class */ (function (_super) {\n __extends(SVGElementContainer, _super);\n function SVGElementContainer(context, img) {\n var _this = _super.call(this, context, img) || this;\n var s = new XMLSerializer();\n var bounds = parseBounds(context, img);\n img.setAttribute('width', bounds.width + \"px\");\n img.setAttribute('height', bounds.height + \"px\");\n _this.svg = \"data:image/svg+xml,\" + encodeURIComponent(s.serializeToString(img));\n _this.intrinsicWidth = img.width.baseVal.value;\n _this.intrinsicHeight = img.height.baseVal.value;\n _this.context.cache.addImage(_this.svg);\n return _this;\n }\n return SVGElementContainer;\n }(ElementContainer));\n\n var LIElementContainer = /** @class */ (function (_super) {\n __extends(LIElementContainer, _super);\n function LIElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n _this.value = element.value;\n return _this;\n }\n return LIElementContainer;\n }(ElementContainer));\n\n var OLElementContainer = /** @class */ (function (_super) {\n __extends(OLElementContainer, _super);\n function OLElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n _this.start = element.start;\n _this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n return _this;\n }\n return OLElementContainer;\n }(ElementContainer));\n\n var CHECKBOX_BORDER_RADIUS = [\n {\n type: 15 /* DIMENSION_TOKEN */,\n flags: 0,\n unit: 'px',\n number: 3\n }\n ];\n var RADIO_BORDER_RADIUS = [\n {\n type: 16 /* PERCENTAGE_TOKEN */,\n flags: 0,\n number: 50\n }\n ];\n var reformatInputBounds = function (bounds) {\n if (bounds.width > bounds.height) {\n return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n }\n else if (bounds.width < bounds.height) {\n return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n }\n return bounds;\n };\n var getInputValue = function (node) {\n var value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n return value.length === 0 ? node.placeholder || '' : value;\n };\n var CHECKBOX = 'checkbox';\n var RADIO = 'radio';\n var PASSWORD = 'password';\n var INPUT_COLOR = 0x2a2a2aff;\n var InputElementContainer = /** @class */ (function (_super) {\n __extends(InputElementContainer, _super);\n function InputElementContainer(context, input) {\n var _this = _super.call(this, context, input) || this;\n _this.type = input.type.toLowerCase();\n _this.checked = input.checked;\n _this.value = getInputValue(input);\n if (_this.type === CHECKBOX || _this.type === RADIO) {\n _this.styles.backgroundColor = 0xdededeff;\n _this.styles.borderTopColor =\n _this.styles.borderRightColor =\n _this.styles.borderBottomColor =\n _this.styles.borderLeftColor =\n 0xa5a5a5ff;\n _this.styles.borderTopWidth =\n _this.styles.borderRightWidth =\n _this.styles.borderBottomWidth =\n _this.styles.borderLeftWidth =\n 1;\n _this.styles.borderTopStyle =\n _this.styles.borderRightStyle =\n _this.styles.borderBottomStyle =\n _this.styles.borderLeftStyle =\n 1 /* SOLID */;\n _this.styles.backgroundClip = [0 /* BORDER_BOX */];\n _this.styles.backgroundOrigin = [0 /* BORDER_BOX */];\n _this.bounds = reformatInputBounds(_this.bounds);\n }\n switch (_this.type) {\n case CHECKBOX:\n _this.styles.borderTopRightRadius =\n _this.styles.borderTopLeftRadius =\n _this.styles.borderBottomRightRadius =\n _this.styles.borderBottomLeftRadius =\n CHECKBOX_BORDER_RADIUS;\n break;\n case RADIO:\n _this.styles.borderTopRightRadius =\n _this.styles.borderTopLeftRadius =\n _this.styles.borderBottomRightRadius =\n _this.styles.borderBottomLeftRadius =\n RADIO_BORDER_RADIUS;\n break;\n }\n return _this;\n }\n return InputElementContainer;\n }(ElementContainer));\n\n var SelectElementContainer = /** @class */ (function (_super) {\n __extends(SelectElementContainer, _super);\n function SelectElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n var option = element.options[element.selectedIndex || 0];\n _this.value = option ? option.text || '' : '';\n return _this;\n }\n return SelectElementContainer;\n }(ElementContainer));\n\n var TextareaElementContainer = /** @class */ (function (_super) {\n __extends(TextareaElementContainer, _super);\n function TextareaElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n _this.value = element.value;\n return _this;\n }\n return TextareaElementContainer;\n }(ElementContainer));\n\n var IFrameElementContainer = /** @class */ (function (_super) {\n __extends(IFrameElementContainer, _super);\n function IFrameElementContainer(context, iframe) {\n var _this = _super.call(this, context, iframe) || this;\n _this.src = iframe.src;\n _this.width = parseInt(iframe.width, 10) || 0;\n _this.height = parseInt(iframe.height, 10) || 0;\n _this.backgroundColor = _this.styles.backgroundColor;\n try {\n if (iframe.contentWindow &&\n iframe.contentWindow.document &&\n iframe.contentWindow.document.documentElement) {\n _this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n var documentBackgroundColor = iframe.contentWindow.document.documentElement\n ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor)\n : COLORS.TRANSPARENT;\n var bodyBackgroundColor = iframe.contentWindow.document.body\n ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor)\n : COLORS.TRANSPARENT;\n _this.backgroundColor = isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? _this.styles.backgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor;\n }\n }\n catch (e) { }\n return _this;\n }\n return IFrameElementContainer;\n }(ElementContainer));\n\n var LIST_OWNERS = ['OL', 'UL', 'MENU'];\n var parseNodeTree = function (context, node, parent, root) {\n for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {\n nextNode = childNode.nextSibling;\n if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n }\n else if (isElementNode(childNode)) {\n if (isSlotElement(childNode) && childNode.assignedNodes) {\n childNode.assignedNodes().forEach(function (childNode) { return parseNodeTree(context, childNode, parent, root); });\n }\n else {\n var container = createContainer(context, childNode);\n if (container.styles.isVisible()) {\n if (createsRealStackingContext(childNode, container, root)) {\n container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\n }\n else if (createsStackingContext(container.styles)) {\n container.flags |= 2 /* CREATES_STACKING_CONTEXT */;\n }\n if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n container.flags |= 8 /* IS_LIST_OWNER */;\n }\n parent.elements.push(container);\n childNode.slot;\n if (childNode.shadowRoot) {\n parseNodeTree(context, childNode.shadowRoot, container, root);\n }\n else if (!isTextareaElement(childNode) &&\n !isSVGElement(childNode) &&\n !isSelectElement(childNode)) {\n parseNodeTree(context, childNode, container, root);\n }\n }\n }\n }\n }\n };\n var createContainer = function (context, element) {\n if (isImageElement(element)) {\n return new ImageElementContainer(context, element);\n }\n if (isCanvasElement(element)) {\n return new CanvasElementContainer(context, element);\n }\n if (isSVGElement(element)) {\n return new SVGElementContainer(context, element);\n }\n if (isLIElement(element)) {\n return new LIElementContainer(context, element);\n }\n if (isOLElement(element)) {\n return new OLElementContainer(context, element);\n }\n if (isInputElement(element)) {\n return new InputElementContainer(context, element);\n }\n if (isSelectElement(element)) {\n return new SelectElementContainer(context, element);\n }\n if (isTextareaElement(element)) {\n return new TextareaElementContainer(context, element);\n }\n if (isIFrameElement(element)) {\n return new IFrameElementContainer(context, element);\n }\n return new ElementContainer(context, element);\n };\n var parseTree = function (context, element) {\n var container = createContainer(context, element);\n container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\n parseNodeTree(context, element, container, container);\n return container;\n };\n var createsRealStackingContext = function (node, container, root) {\n return (container.styles.isPositionedWithZIndex() ||\n container.styles.opacity < 1 ||\n container.styles.isTransformed() ||\n (isBodyElement(node) && root.styles.isTransparent()));\n };\n var createsStackingContext = function (styles) { return styles.isPositioned() || styles.isFloating(); };\n var isTextNode = function (node) { return node.nodeType === Node.TEXT_NODE; };\n var isElementNode = function (node) { return node.nodeType === Node.ELEMENT_NODE; };\n var isHTMLElementNode = function (node) {\n return isElementNode(node) && typeof node.style !== 'undefined' && !isSVGElementNode(node);\n };\n var isSVGElementNode = function (element) {\n return typeof element.className === 'object';\n };\n var isLIElement = function (node) { return node.tagName === 'LI'; };\n var isOLElement = function (node) { return node.tagName === 'OL'; };\n var isInputElement = function (node) { return node.tagName === 'INPUT'; };\n var isHTMLElement = function (node) { return node.tagName === 'HTML'; };\n var isSVGElement = function (node) { return node.tagName === 'svg'; };\n var isBodyElement = function (node) { return node.tagName === 'BODY'; };\n var isCanvasElement = function (node) { return node.tagName === 'CANVAS'; };\n var isVideoElement = function (node) { return node.tagName === 'VIDEO'; };\n var isImageElement = function (node) { return node.tagName === 'IMG'; };\n var isIFrameElement = function (node) { return node.tagName === 'IFRAME'; };\n var isStyleElement = function (node) { return node.tagName === 'STYLE'; };\n var isScriptElement = function (node) { return node.tagName === 'SCRIPT'; };\n var isTextareaElement = function (node) { return node.tagName === 'TEXTAREA'; };\n var isSelectElement = function (node) { return node.tagName === 'SELECT'; };\n var isSlotElement = function (node) { return node.tagName === 'SLOT'; };\n // https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n var isCustomElement = function (node) { return node.tagName.indexOf('-') > 0; };\n\n var CounterState = /** @class */ (function () {\n function CounterState() {\n this.counters = {};\n }\n CounterState.prototype.getCounterValue = function (name) {\n var counter = this.counters[name];\n if (counter && counter.length) {\n return counter[counter.length - 1];\n }\n return 1;\n };\n CounterState.prototype.getCounterValues = function (name) {\n var counter = this.counters[name];\n return counter ? counter : [];\n };\n CounterState.prototype.pop = function (counters) {\n var _this = this;\n counters.forEach(function (counter) { return _this.counters[counter].pop(); });\n };\n CounterState.prototype.parse = function (style) {\n var _this = this;\n var counterIncrement = style.counterIncrement;\n var counterReset = style.counterReset;\n var canReset = true;\n if (counterIncrement !== null) {\n counterIncrement.forEach(function (entry) {\n var counter = _this.counters[entry.counter];\n if (counter && entry.increment !== 0) {\n canReset = false;\n if (!counter.length) {\n counter.push(1);\n }\n counter[Math.max(0, counter.length - 1)] += entry.increment;\n }\n });\n }\n var counterNames = [];\n if (canReset) {\n counterReset.forEach(function (entry) {\n var counter = _this.counters[entry.counter];\n counterNames.push(entry.counter);\n if (!counter) {\n counter = _this.counters[entry.counter] = [];\n }\n counter.push(entry.reset);\n });\n }\n return counterNames;\n };\n return CounterState;\n }());\n var ROMAN_UPPER = {\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n };\n var ARMENIAN = {\n integers: [\n 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\n 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'Ք',\n 'Փ',\n 'Ւ',\n 'Ց',\n 'Ր',\n 'Տ',\n 'Վ',\n 'Ս',\n 'Ռ',\n 'Ջ',\n 'Պ',\n 'Չ',\n 'Ո',\n 'Շ',\n 'Ն',\n 'Յ',\n 'Մ',\n 'Ճ',\n 'Ղ',\n 'Ձ',\n 'Հ',\n 'Կ',\n 'Ծ',\n 'Խ',\n 'Լ',\n 'Ի',\n 'Ժ',\n 'Թ',\n 'Ը',\n 'Է',\n 'Զ',\n 'Ե',\n 'Դ',\n 'Գ',\n 'Բ',\n 'Ա'\n ]\n };\n var HEBREW = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\n 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'י׳',\n 'ט׳',\n 'ח׳',\n 'ז׳',\n 'ו׳',\n 'ה׳',\n 'ד׳',\n 'ג׳',\n 'ב׳',\n 'א׳',\n 'ת',\n 'ש',\n 'ר',\n 'ק',\n 'צ',\n 'פ',\n 'ע',\n 'ס',\n 'נ',\n 'מ',\n 'ל',\n 'כ',\n 'יט',\n 'יח',\n 'יז',\n 'טז',\n 'טו',\n 'י',\n 'ט',\n 'ח',\n 'ז',\n 'ו',\n 'ה',\n 'ד',\n 'ג',\n 'ב',\n 'א'\n ]\n };\n var GEORGIAN = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\n 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'ჵ',\n 'ჰ',\n 'ჯ',\n 'ჴ',\n 'ხ',\n 'ჭ',\n 'წ',\n 'ძ',\n 'ც',\n 'ჩ',\n 'შ',\n 'ყ',\n 'ღ',\n 'ქ',\n 'ფ',\n 'ჳ',\n 'ტ',\n 'ს',\n 'რ',\n 'ჟ',\n 'პ',\n 'ო',\n 'ჲ',\n 'ნ',\n 'მ',\n 'ლ',\n 'კ',\n 'ი',\n 'თ',\n 'ჱ',\n 'ზ',\n 'ვ',\n 'ე',\n 'დ',\n 'გ',\n 'ბ',\n 'ა'\n ]\n };\n var createAdditiveCounter = function (value, min, max, symbols, fallback, suffix) {\n if (value < min || value > max) {\n return createCounterText(value, fallback, suffix.length > 0);\n }\n return (symbols.integers.reduce(function (string, integer, index) {\n while (value >= integer) {\n value -= integer;\n string += symbols.values[index];\n }\n return string;\n }, '') + suffix);\n };\n var createCounterStyleWithSymbolResolver = function (value, codePointRangeLength, isNumeric, resolver) {\n var string = '';\n do {\n if (!isNumeric) {\n value--;\n }\n string = resolver(value) + string;\n value /= codePointRangeLength;\n } while (value * codePointRangeLength >= codePointRangeLength);\n return string;\n };\n var createCounterStyleFromRange = function (value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {\n var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n return ((value < 0 ? '-' : '') +\n (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {\n return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);\n }) +\n suffix));\n };\n var createCounterStyleFromSymbols = function (value, symbols, suffix) {\n if (suffix === void 0) { suffix = '. '; }\n var codePointRangeLength = symbols.length;\n return (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) { return symbols[Math.floor(codePoint % codePointRangeLength)]; }) + suffix);\n };\n var CJK_ZEROS = 1 << 0;\n var CJK_TEN_COEFFICIENTS = 1 << 1;\n var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\n var CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n var createCJKCounter = function (value, numbers, multipliers, negativeSign, suffix, flags) {\n if (value < -9999 || value > 9999) {\n return createCounterText(value, 4 /* CJK_DECIMAL */, suffix.length > 0);\n }\n var tmp = Math.abs(value);\n var string = suffix;\n if (tmp === 0) {\n return numbers[0] + string;\n }\n for (var digit = 0; tmp > 0 && digit <= 4; digit++) {\n var coefficient = tmp % 10;\n if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n string = numbers[coefficient] + string;\n }\n else if (coefficient > 1 ||\n (coefficient === 1 && digit === 0) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\n (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))) {\n string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n }\n else if (coefficient === 1 && digit > 0) {\n string = multipliers[digit - 1] + string;\n }\n tmp = Math.floor(tmp / 10);\n }\n return (value < 0 ? negativeSign : '') + string;\n };\n var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\n var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\n var JAPANESE_NEGATIVE = 'マイナス';\n var KOREAN_NEGATIVE = '마이너스';\n var createCounterText = function (value, type, appendSuffix) {\n var defaultSuffix = appendSuffix ? '. ' : '';\n var cjkSuffix = appendSuffix ? '、' : '';\n var koreanSuffix = appendSuffix ? ', ' : '';\n var spaceSuffix = appendSuffix ? ' ' : '';\n switch (type) {\n case 0 /* DISC */:\n return '•' + spaceSuffix;\n case 1 /* CIRCLE */:\n return '◦' + spaceSuffix;\n case 2 /* SQUARE */:\n return '◾' + spaceSuffix;\n case 5 /* DECIMAL_LEADING_ZERO */:\n var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n return string.length < 4 ? \"0\" + string : string;\n case 4 /* CJK_DECIMAL */:\n return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n case 6 /* LOWER_ROMAN */:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix).toLowerCase();\n case 7 /* UPPER_ROMAN */:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix);\n case 8 /* LOWER_GREEK */:\n return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n case 9 /* LOWER_ALPHA */:\n return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n case 10 /* UPPER_ALPHA */:\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n case 11 /* ARABIC_INDIC */:\n return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n case 12 /* ARMENIAN */:\n case 49 /* UPPER_ARMENIAN */:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix);\n case 35 /* LOWER_ARMENIAN */:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix).toLowerCase();\n case 13 /* BENGALI */:\n return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n case 14 /* CAMBODIAN */:\n case 30 /* KHMER */:\n return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n case 15 /* CJK_EARTHLY_BRANCH */:\n return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n case 16 /* CJK_HEAVENLY_STEM */:\n return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n case 17 /* CJK_IDEOGRAPHIC */:\n case 48 /* TRAD_CHINESE_INFORMAL */:\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case 47 /* TRAD_CHINESE_FORMAL */:\n return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case 42 /* SIMP_CHINESE_INFORMAL */:\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case 41 /* SIMP_CHINESE_FORMAL */:\n return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case 26 /* JAPANESE_INFORMAL */:\n return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n case 25 /* JAPANESE_FORMAL */:\n return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n case 31 /* KOREAN_HANGUL_FORMAL */:\n return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n case 33 /* KOREAN_HANJA_INFORMAL */:\n return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n case 32 /* KOREAN_HANJA_FORMAL */:\n return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n case 18 /* DEVANAGARI */:\n return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n case 20 /* GEORGIAN */:\n return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3 /* DECIMAL */, defaultSuffix);\n case 21 /* GUJARATI */:\n return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n case 22 /* GURMUKHI */:\n return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n case 22 /* HEBREW */:\n return createAdditiveCounter(value, 1, 10999, HEBREW, 3 /* DECIMAL */, defaultSuffix);\n case 23 /* HIRAGANA */:\n return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');\n case 24 /* HIRAGANA_IROHA */:\n return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');\n case 27 /* KANNADA */:\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n case 28 /* KATAKANA */:\n return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);\n case 29 /* KATAKANA_IROHA */:\n return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);\n case 34 /* LAO */:\n return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n case 37 /* MONGOLIAN */:\n return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n case 38 /* MYANMAR */:\n return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n case 39 /* ORIYA */:\n return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n case 40 /* PERSIAN */:\n return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n case 43 /* TAMIL */:\n return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n case 44 /* TELUGU */:\n return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n case 45 /* THAI */:\n return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n case 46 /* TIBETAN */:\n return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n case 3 /* DECIMAL */:\n default:\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n }\n };\n\n var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n var DocumentCloner = /** @class */ (function () {\n function DocumentCloner(context, element, options) {\n this.context = context;\n this.options = options;\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false);\n }\n DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) {\n var _this = this;\n var iframe = createIFrameContainer(ownerDocument, windowSize);\n if (!iframe.contentWindow) {\n return Promise.reject(\"Unable to find iframe window\");\n }\n var scrollX = ownerDocument.defaultView.pageXOffset;\n var scrollY = ownerDocument.defaultView.pageYOffset;\n var cloneWindow = iframe.contentWindow;\n var documentClone = cloneWindow.document;\n /* Chrome doesn't detect relative background-images assigned in inline \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"query-result\"},[_c('h2',{staticClass:\"query-result__headline\"},[_vm._v(\"Query result\")]),_vm._v(\" \"),(_vm.localDuration)?_c('div',{staticClass:\"query-result__duration\"},[_vm._v(\"\\n \"+_vm._s(_vm.formattedDuration)+\" ms\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"query-result__result\",domProps:{\"innerHTML\":_vm._s(_vm.localResult)}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const log = (params) => {\n const $metaTag = document.querySelector(\"meta[name='env']\");\n\n if($metaTag && $metaTag.content !== \"production\") {\n console.log(params);\n }\n};\n\nexport default log;\n","import Vue from \"modules/vue_twemoji\";\nimport VueToast from \"vue-toast-notification\";\nimport \"vue-toast-notification/dist/theme-default.css\";\nimport \"./v-toast-styles.scss\";\n\n// https://github.com/ankurk91/vue-toast-notification/tree/v1.x\nVue.use(VueToast);\n\nexport const notify = ({ message, type = \"success\", timeout = true }) => {\n if (!message) {\n return;\n }\n\n // Drop Rails notifications just in case\n document.querySelectorAll(\".notice\").forEach(el => el.remove());\n\n Vue.$toast.open({\n message,\n type,\n position: \"top-right\",\n pauseOnHover: true,\n duration: timeout ? 10000 : 0,\n dismissible: true\n });\n};\n","\n\n\n\n\n","import { render, staticRenderFns } from \"./star-query-icon.vue?vue&type=template&id=603fcfca\"\nimport script from \"./star-query-icon.vue?vue&type=script&lang=js\"\nexport * from \"./star-query-icon.vue?vue&type=script&lang=js\"\nimport style0 from \"./star-query-icon.vue?vue&type=style&index=0&id=603fcfca&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./star-query-icon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./star-query-icon.vue?vue&type=script&lang=js\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"star-query-icon flex no-underline\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleClick.apply(null, arguments)}}},[(_vm.starred)?_c('SolidStarIcon',{staticClass:\"star-query-icon__icon mr-4\"}):_c('LightStarIcon',{staticClass:\"star-query-icon__icon pointer mr-4\"}),_vm._v(\" \"),_c('span',{staticClass:\"font-small\"},[_vm._v(\"Save query\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from \"vue/dist/vue.esm\";\nimport StarQueryIcon from \"components/star-query-icon\";\n\nlet starIcon;\n\nexport const mountStarQueryIcon = (queryBody) => {\n const $container = document.querySelector(\".js-star-query-icon\");\n\n if(starIcon) {\n starIcon.$refs.star_icon.query = queryBody;\n starIcon.$refs.star_icon.starred = false;\n } else if ($container) {\n starIcon = new Vue({\n el: $container,\n render: h => h(StarQueryIcon, {\n ref: \"star_icon\",\n props: {\n queryBody\n }\n })\n });\n }\n}\n","const insertMatch = (rowDelta = 1, columnDelta = -1) => {\n return (editor, data) => {\n editor.completer.insertMatch({ value: data.value });\n\n let currentCursorPosition = editor.getCursorPosition()\n\n let newRow = currentCursorPosition.row + rowDelta;\n let newColumn = currentCursorPosition.column + columnDelta;\n\n if(rowDelta === -1) {\n const prevRowLength = editor.session.getLine(currentCursorPosition.row - 1).length;\n\n // WILD: Inside gotoLine(function) row number starts from 1\n // but getCursorPosition() returns row index which starts from 0 (!!)\n newRow = currentCursorPosition.row;\n newColumn = prevRowLength + columnDelta;\n }\n\n editor.gotoLine(newRow, newColumn);\n };\n}\n\nconst PGSQL_KEYWORDS = {\n \"AND\": \"operator\",\n \"OR\": \"operator\",\n \"NOT\": \"operator\",\n \"BETWEEN\": \"operator\",\n \"IN\": \"operator\",\n \"AS\": \"keyword\",\n \"ASC\": \"keyword\",\n \"DESC\": \"keyword\",\n \"CASE\": \"keyword\",\n \"DISTINCT\": \"keyword\",\n \"FROM\": \"keyword\",\n \"GROUP BY\": \"keyword\",\n \"HAVING\": \"keyword\",\n \"JOIN\": \"keyword\",\n \"INNER JOIN\": \"keyword\",\n \"LEFT JOIN\": \"keyword\",\n \"IS NULL\": \"operator\",\n \"IS NOT NULL\": \"operator\",\n \"LIKE\": \"function\",\n \"LIMIT\": \"keyword\",\n \"FROM\": \"keyword\",\n \"ORDER BY\": \"operator\",\n \"UNION\":\"operator\",\n \"UNION ALL\": \"operator\",\n \"WHERE\": \"keyword\",\n \"SELECT\": \"keyword\",\n \"NOT NULL\": \"operator\",\n \"WITH..AS\": {\n type: \"keyword\",\n caption: \"WITH..AS\",\n value: \"WITH AS (\\n)\",\n completer: {\n insertMatch: insertMatch(-1, -5)\n }\n },\n \"SUM\": {\n type: \"aggregate function\",\n value: \"SUM()\",\n completer: {\n insertMatch: insertMatch()\n }\n },\n \"MIN\": {\n type: \"aggregate function\",\n value: \"MIN()\",\n completer: {\n insertMatch: insertMatch()\n }\n },\n \"MAX\": {\n type: \"aggregate function\",\n value: \"MAX()\",\n completer: {\n insertMatch: insertMatch()\n }\n },\n \"AVG\": {\n type: \"aggregate function\",\n value: \"AVG()\",\n completer: {\n insertMatch: insertMatch()\n }\n },\n \"MEDIAN\": {\n type: \"aggregate function\",\n value: \"MEDIAN()\",\n completer: {\n insertMatch: insertMatch()\n }\n },\n \"COUNT\": {\n type: \"aggregate function\",\n value: \"COUNT()\",\n completer: {\n insertMatch: insertMatch()\n }\n }\n};\n\nexport default PGSQL_KEYWORDS;\n","import Sentry from \"modules/sentry\";\nimport ace from \"ace-builds/src-noconflict/ace\";\nimport \"ace-builds/src-noconflict/ext-language_tools\";\nimport \"ace-builds/src-noconflict/mode-pgsql\";\nimport \"ace-builds/src-noconflict/theme-sqlserver\";\nimport axios from \"axios\";\nimport Vue from \"vue\";\nimport QueryResult from \"components/query-result\";\nimport { mountStarQueryIcon } from \"controllers/star-query-icon\"\n\nimport { notify } from \"modules/notify\";\nimport PGSQL_KEYWORDS from \"modules/ace-pgsql-keywords\";\n\n(function() {\n var editorContainer = document.querySelector(\"#query-editor\");\n\n if(!editorContainer) {\n return;\n }\n\n var editor = ace.edit(editorContainer);\n\n editor.setOptions({\n fontFamily: \"Hack\",\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: false,\n highlightActiveLine: false,\n tabSize: 2\n });\n\n if (!(\"state\" in window)) {\n window.state = {};\n }\n\n window.state.editor = editor;\n\n const schemaAutoCompleter = {\n getCompletions: function(editor, session, pos, prefix, callback) {\n if (prefix.length === 0) {\n callback(null, []); return\n }\n\n let datasetId = document.querySelector(\"[name='query[dataset_id]']\").value;\n\n axios.get(\n `/queries/autocomplete.json?q=${prefix}&dataset_id=${datasetId}`\n ).then(response => {\n callback(null, response.data.words.map(function(ea) {\n return {\n name: ea.word,\n value: ea.word,\n score: ea.score,\n meta: ea.meta\n }\n }));\n }).catch(function(error) {\n Sentry.captureException(error);\n })\n }\n };\n\n const sqlAutoCompleter = {\n getCompletions: function(editor, session, pos, prefix, callback) {\n if (prefix.length === 0) {\n callback(null, []); return\n }\n\n let matchedKeywords = Object.keys(PGSQL_KEYWORDS).reduce((a, key) => {\n let re = new RegExp(prefix, \"i\");\n\n if(key.match(re)) {\n if(typeof(PGSQL_KEYWORDS[key]) === \"string\") {\n a.push({\n name: key,\n value: key,\n meta: PGSQL_KEYWORDS[key]\n });\n } else if(typeof(PGSQL_KEYWORDS[key]) === \"object\") {\n let params = {\n name: key,\n caption: PGSQL_KEYWORDS[key].caption || key,\n value: PGSQL_KEYWORDS[key].value,\n meta: PGSQL_KEYWORDS[key].type\n };\n\n if(PGSQL_KEYWORDS[key].completer) {\n params.completer = PGSQL_KEYWORDS[key].completer;\n }\n\n a.push(params);\n }\n }\n\n return a;\n }, []);\n\n callback(null, matchedKeywords);\n }\n };\n\n editor.completers = [\n schemaAutoCompleter,\n sqlAutoCompleter\n ];\n\n editor.setTheme(\"ace/theme/sqlserver\");\n editor.setShowPrintMargin(false);\n editor.session.setMode(\"ace/mode/pgsql\");\n\n if(screen.width <= 768) {\n editor.setFontSize(\"18px\");\n }\n\n var queryBodyField = document.querySelector(\"#query_body\");\n\n editor.getSession().on(\"change\", function() {\n const latestQuery = editor.getSession().getValue();\n\n queryBodyField.value = latestQuery;\n\n if(!window.state.query) {\n window.state.query = {};\n }\n\n window.state.query.body = latestQuery;\n mountStarQueryIcon(latestQuery);\n });\n\n const defaultQuery = editor.getSession().getValue();\n queryBodyField.value = defaultQuery;\n mountStarQueryIcon(defaultQuery);\n\n var form = document.querySelector(\"#query-form\");\n form.addEventListener(\"submit\", function(event) {\n if(editor.getSession().getAnnotations().length > 0) {\n alert(\"SQL query should have a valid syntax\");\n\n event.preventDefault();\n event.stopPropagation();\n }\n });\n\n form.addEventListener(\"keydown\", function(e) {\n if (!((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.keyCode == 13)) {\n return;\n }\n\n if(!window.state.loggedIn) {\n return;\n }\n\n var target = e.target;\n if(target.form) {\n submitQueryFrom();\n }\n });\n\n let $queryResult;\n const $queryResultContainer = document.querySelector(\"#query-result\");\n\n if($queryResultContainer.dataset.result) {\n $queryResult = new Vue({\n el: \"#query-result\",\n render: h => h(QueryResult, {\n ref: \"query_result\",\n props: {\n result: $queryResultContainer.dataset.result,\n duration: parseFloat($queryResultContainer.dataset.duration, 10)\n }\n })\n });\n }\n\n const $submitButton = form.querySelector(\".query-form__submit\");\n const $queryForm = document.querySelector(\".query-form\");\n let formSubmitted = false;\n\n const submitQueryFrom = () => {\n if(formSubmitted) {\n return;\n } else {\n formSubmitted = true;\n }\n\n let formData = new FormData($queryForm);\n\n $submitButton.disabled = true;\n $submitButton.value = \"Running query...\";\n\n axios.post($queryForm.action + \".json\", formData, {\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n \"X-CSRF-Token\": document.querySelector(\"meta[name=csrf-token]\").content\n }\n }).then(response => {\n const $result = response.data.result;\n const duration = response.data.duration;\n\n if($queryResult) {\n $queryResult.$refs.query_result.localResult = $result;\n $queryResult.$refs.query_result.localDuration = duration;\n } else {\n $queryResult = new Vue({\n el: \"#query-result\",\n render: h => h(QueryResult, {\n ref: \"query_result\",\n props: {\n result: $result,\n duration: duration\n }\n })\n });\n }\n }).catch(function(error) {\n if(error.response) {\n notify({\n message: error.response.data.errors,\n type: \"error\"\n });\n } else {\n notify({\n message: \"Oops, something went wrong. Please, try again or ping support@sqlhabit.com\",\n type: \"error\"\n });\n }\n\n if($queryResult) {\n $queryResult.$refs.query_result.localResult = null;\n }\n\n Sentry.captureException(error);\n }).finally(function() {\n formSubmitted = false;\n\n setTimeout(() => {\n $submitButton.disabled = false;\n $submitButton.value = \"RUN QUERY\";\n }, 1000);\n });\n };\n\n $queryForm.addEventListener(\"submit\", e => {\n e.preventDefault();\n\n submitQueryFrom();\n });\n})();\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"container\",staticClass:\"chart-sql-editor\"},[_c('div',{staticClass:\"chart-sql-editor__container\"},[_c('div',{staticClass:\"chart-sql-editor__menu\"},[_c('SidebarMenu')],1),_vm._v(\" \"),_c('div',{staticClass:\"chart-sql-editor__data\"},[(_vm.closeLinkCopy)?_c('header',{staticClass:\"chart-sql-editor__data-header flex mb-24\"},[_c('a',{staticClass:\"btn btn--xs btn--secondary btn--with-icon\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('back')}}},[_c('LeftArrowIcon',{staticClass:\"btn__icon\"}),_vm._v(\"\\n \"+_vm._s(_vm.closeLinkCopy)+\"\\n \")],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"chart-sql-editor__query-editor\"}),_vm._v(\" \"),_c('div',{staticClass:\"chart-sql-editor__actions flex align-start mb-48\"},[_c('button',{staticClass:\"chart-sql-editor__run-query btn btn--sm\",attrs:{\"disabled\":_vm.formSubmitted || !_vm.databasesLoaded || _vm.query.length === 0},on:{\"click\":function($event){$event.preventDefault();return _vm.submitQuery.apply(null, arguments)}}},[(_vm.formSubmitted)?_c('span',[_vm._v(\"\\n Running query...\\n \")]):_c('span',[_vm._v(\"\\n RUN QUERY\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"chart-sql-editor__secondary-actions flex align-center\"},[(_vm.showRandomQueryLink && _vm.databases.length > 0)?_c('a',{staticClass:\"flex align-center font-small no-underline grey-5 ml-16\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.setRandomQuery.apply(null, arguments)}}},[_c('RandomIcon',{staticClass:\"w-12 h-12 mr-4\"}),_vm._v(\"\\n Random query\\n \")],1):_vm._e()])]),_vm._v(\" \"),(_vm.showResultAndChart)?_c('div',{staticClass:\"chart-sql-editor__editor-label font-section mb-16\"},[_vm._v(\"\\n QUERY RESULT\\n \")]):_vm._e(),_vm._v(\" \"),((this.queryResult || this.queryErrors) && _vm.showResultAndChart)?_c('div',{staticClass:\"chart-sql-editor__query-result mb-48\"},[_c('QueryResultWrapper',{attrs:{\"showHeadline\":false,\"maxHeight\":320,\"fields\":_vm.queryFields,\"result\":_vm.queryResult,\"duration\":_vm.queryDuration,\"errors\":_vm.queryErrors}})],1):_vm._e(),_vm._v(\" \"),(_vm.showResultAndChart)?_c('div',{staticClass:\"chart-sql-editor__editor-label font-section mb-16\"},[_vm._v(\"\\n CHART\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.queryResult && _vm.showResultAndChart)?_c('div',{staticClass:\"chart-sql-editor__chart-editor\"},[_c('ChartEditor')],1):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"chart-sql-editor__config pt-24\"},[_c('ChartConfig')],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./query-result.vue?vue&type=template&id=5f0f0b10\"\nimport script from \"./query-result.vue?vue&type=script&lang=js\"\nexport * from \"./query-result.vue?vue&type=script&lang=js\"\nimport style0 from \"./query-result.vue?vue&type=style&index=0&id=5f0f0b10&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.fields && _vm.result)?_c('table',{staticClass:\"query-result-table\",class:`query-result-table--col-${_vm.fields.length}`},[_c('thead',[_c('tr',_vm._l((_vm.fields),function(field){return _c('th',{key:field},[_c('div',{staticClass:\"query-result-table__th-wrapper\"},[_vm._v(\"\\n \"+_vm._s(field)+\"\\n \")])])}),0)]),_vm._v(\" \"),_c('tbody',_vm._l((_vm.result),function(row,y){return _c('tr',{key:`row-${y}`},_vm._l((row),function(value,x){return _c('td',{key:`column-${y}-${x}`},[_c('div',{staticClass:\"query-result-table__td-wrapper\"},[(value === null)?_c('span',{staticClass:\"query-result-table__null-value\"},[_vm._v(\"NULL\")]):_c('span',[_vm._v(_vm._s(value))])])])}),0)}),0)]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./query-error.vue?vue&type=template&id=4b31b8f3\"\nimport script from \"./query-error.vue?vue&type=script&lang=js\"\nexport * from \"./query-error.vue?vue&type=script&lang=js\"\nimport style0 from \"./query-error.vue?vue&type=style&index=0&id=4b31b8f3&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"query-error\"},[_vm._v(\"\\n \"+_vm._s(_vm.errors)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./query-result-wrapper.vue?vue&type=template&id=2849d96c\"\nimport script from \"./query-result-wrapper.vue?vue&type=script&lang=js\"\nexport * from \"./query-result-wrapper.vue?vue&type=script&lang=js\"\nimport style0 from \"./query-result-wrapper.vue?vue&type=style&index=0&id=2849d96c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"query-result-wrapper\"},[_c('header',{staticClass:\"query-result-wrapper__header\"},[(_vm.showHeadline)?_c('h2',{staticClass:\"query-result-wrapper__headline\"},[_vm._v(\"\\n Query result\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.localDuration)?_c('div',{staticClass:\"query-result-wrapper__duration\"},[_vm._v(\"\\n \"+_vm._s(_vm.resultLength)+\" \"+_vm._s(_vm.$tc(\"row\", _vm.resultLength))+\", \"+_vm._s(_vm.formattedDuration)+\" ms\\n \")]):_vm._e()]),_vm._v(\" \"),(_vm.errors)?_c('div',{staticClass:\"query-result-wrapper__result\"},[_c('QueryError',{attrs:{\"errors\":_vm.errors}})],1):_c('div',{staticClass:\"query-result-wrapper__result\",style:(`max-height: ${_vm.maxHeight}px;`)},[_c('QueryResult',{attrs:{\"fields\":_vm.fields,\"result\":_vm.result,\"duration\":_vm.duration}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst keyResolvers = {\n '': v => v,\n x: o => o.x,\n y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n _lookup(table, value, last\n ? index => table[index][key] <= value\n : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\n }\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta) => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndex.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const {dataset: line, _dataset} = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const {showLine} = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n init(chartOptions) {}\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nfunction _createForOfIteratorHelper(r, e) {\n var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (!t) {\n if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {\n t && (r = t);\n var _n = 0,\n F = function F() {};\n return {\n s: F,\n n: function n() {\n return _n >= r.length ? {\n done: !0\n } : {\n done: !1,\n value: r[_n++]\n };\n },\n e: function e(r) {\n throw r;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var o,\n a = !0,\n u = !1;\n return {\n s: function s() {\n t = t.call(r);\n },\n n: function n() {\n var r = t.next();\n return a = r.done, r;\n },\n e: function e(r) {\n u = !0, o = r;\n },\n f: function f() {\n try {\n a || null == t[\"return\"] || t[\"return\"]();\n } finally {\n if (u) throw o;\n }\n }\n };\n}\nexport { _createForOfIteratorHelper as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nexport { _isNativeReflectConstruct as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _createSuper(t) {\n var r = isNativeReflectConstruct();\n return function () {\n var e,\n o = getPrototypeOf(t);\n if (r) {\n var s = getPrototypeOf(this).constructor;\n e = Reflect.construct(o, arguments, s);\n } else e = o.apply(this, arguments);\n return possibleConstructorReturn(this, e);\n };\n}\nexport { _createSuper as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n function Setter() {\n _classCallCheck(this, Setter);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", 0);\n }\n _createClass(Setter, [{\n key: \"validate\",\n value: function validate(_utcDate, _options) {\n return true;\n }\n }]);\n return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n _inherits(ValueSetter, _Setter);\n var _super = _createSuper(ValueSetter);\n function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n var _this;\n _classCallCheck(this, ValueSetter);\n _this = _super.call(this);\n _this.value = value;\n _this.validateValue = validateValue;\n _this.setValue = setValue;\n _this.priority = priority;\n if (subPriority) {\n _this.subPriority = subPriority;\n }\n return _this;\n }\n _createClass(ValueSetter, [{\n key: \"validate\",\n value: function validate(utcDate, options) {\n return this.validateValue(utcDate, this.value, options);\n }\n }, {\n key: \"set\",\n value: function set(utcDate, flags, options) {\n return this.setValue(utcDate, flags, this.value, options);\n }\n }]);\n return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n _inherits(DateToSystemTimezoneSetter, _Setter2);\n var _super2 = _createSuper(DateToSystemTimezoneSetter);\n function DateToSystemTimezoneSetter() {\n var _this2;\n _classCallCheck(this, DateToSystemTimezoneSetter);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n return _this2;\n }\n _createClass(DateToSystemTimezoneSetter, [{\n key: \"set\",\n value: function set(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n }\n }]);\n return DateToSystemTimezoneSetter;\n}(Setter);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n function Parser() {\n _classCallCheck(this, Parser);\n _defineProperty(this, \"incompatibleTokens\", void 0);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", void 0);\n }\n _createClass(Parser, [{\n key: \"run\",\n value: function run(dateString, token, match, options) {\n var result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n return {\n setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n rest: result.rest\n };\n }\n }, {\n key: \"validate\",\n value: function validate(_utcDate, _value, _options) {\n return true;\n }\n }]);\n return Parser;\n}();","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n _inherits(EraParser, _Parser);\n var _super = _createSuper(EraParser);\n function EraParser() {\n var _this;\n _classCallCheck(this, EraParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n return _this;\n }\n _createClass(EraParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n // A, B\n case 'GGGGG':\n return match.era(dateString, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(dateString, {\n width: 'wide'\n }) || match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return EraParser;\n}(Parser);","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","export var numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nexport var timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nexport function parseNumericPattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case 'morning':\n return 4;\n case 'evening':\n return 17;\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n _inherits(YearParser, _Parser);\n var _super = _createSuper(YearParser);\n function YearParser() {\n var _this;\n _classCallCheck(this, YearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(YearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n switch (token) {\n case 'y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n var currentYear = date.getUTCFullYear();\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return YearParser;\n}(Parser);","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekYearParser, _Parser);\n var _super = _createSuper(LocalWeekYearParser);\n function LocalWeekYearParser() {\n var _this;\n _classCallCheck(this, LocalWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n switch (token) {\n case 'Y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'Yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n }]);\n return LocalWeekYearParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekYearParser, _Parser);\n var _super = _createSuper(ISOWeekYearParser);\n function ISOWeekYearParser() {\n var _this;\n _classCallCheck(this, ISOWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'R') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n }\n }]);\n return ISOWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ExtendedYearParser, _Parser);\n var _super = _createSuper(ExtendedYearParser);\n function ExtendedYearParser() {\n var _this;\n _classCallCheck(this, ExtendedYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ExtendedYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'u') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ExtendedYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(QuarterParser, _Parser);\n var _super = _createSuper(QuarterParser);\n function QuarterParser() {\n var _this;\n _classCallCheck(this, QuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(QuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return QuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneQuarterParser, _Parser);\n var _super = _createSuper(StandAloneQuarterParser);\n function StandAloneQuarterParser() {\n var _this;\n _classCallCheck(this, StandAloneQuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneQuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneQuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(MonthParser, _Parser);\n var _super = _createSuper(MonthParser);\n function MonthParser() {\n var _this;\n _classCallCheck(this, MonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n return _this;\n }\n _createClass(MonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'MM':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return MonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneMonthParser, _Parser);\n var _super = _createSuper(StandAloneMonthParser);\n function StandAloneMonthParser() {\n var _this;\n _classCallCheck(this, StandAloneMonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneMonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'LL':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneMonthParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekParser, _Parser);\n var _super = _createSuper(LocalWeekParser);\n function LocalWeekParser() {\n var _this;\n _classCallCheck(this, LocalWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'wo':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n }\n }]);\n return LocalWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekParser, _Parser);\n var _super = _createSuper(ISOWeekParser);\n function ISOWeekParser() {\n var _this;\n _classCallCheck(this, ISOWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'Io':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value));\n }\n }]);\n return ISOWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n _inherits(DateParser, _Parser);\n var _super = _createSuper(DateParser);\n function DateParser() {\n var _this;\n _classCallCheck(this, DateParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DateParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, dateString);\n case 'do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DateParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayOfYearParser, _Parser);\n var _super = _createSuper(DayOfYearParser);\n function DayOfYearParser() {\n var _this;\n _classCallCheck(this, DayOfYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayOfYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case 'Do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayOfYearParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function setUTCDay(dirtyDate, dirtyDay, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayParser, _Parser);\n var _super = _createSuper(DayParser);\n function DayParser() {\n var _this;\n _classCallCheck(this, DayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalDayParser, _Parser);\n var _super = _createSuper(LocalDayParser);\n function LocalDayParser() {\n var _this;\n _classCallCheck(this, LocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n return _this;\n }\n _createClass(LocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'eo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'eee':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return LocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneLocalDayParser, _Parser);\n var _super = _createSuper(StandAloneLocalDayParser);\n function StandAloneLocalDayParser() {\n var _this;\n _classCallCheck(this, StandAloneLocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneLocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'co':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'ccc':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneLocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISODayParser, _Parser);\n var _super = _createSuper(ISODayParser);\n function ISODayParser() {\n var _this;\n _classCallCheck(this, ISODayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISODayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case 'io':\n return match.ordinalNumber(dateString, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return mapValue(match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // T\n case 'iiiii':\n return mapValue(match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tu\n case 'iiiiii':\n return mapValue(match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tuesday\n case 'iiii':\n default:\n return mapValue(match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date = setUTCISODay(date, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ISODayParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n if (day % 7 === 0) {\n day = day - 7;\n }\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMParser, _Parser);\n var _super = _createSuper(AMPMParser);\n function AMPMParser() {\n var _this;\n _classCallCheck(this, AMPMParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaaa':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMMidnightParser, _Parser);\n var _super = _createSuper(AMPMMidnightParser);\n function AMPMMidnightParser() {\n var _this;\n _classCallCheck(this, AMPMMidnightParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMMidnightParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbbb':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMMidnightParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayPeriodParser, _Parser);\n var _super = _createSuper(DayPeriodParser);\n function DayPeriodParser() {\n var _this;\n _classCallCheck(this, DayPeriodParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n return _this;\n }\n _createClass(DayPeriodParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBBB':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return DayPeriodParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1to12Parser, _Parser);\n var _super = _createSuper(Hour1to12Parser);\n function Hour1to12Parser() {\n var _this;\n _classCallCheck(this, Hour1to12Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour1to12Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case 'ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour1to12Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0to23Parser, _Parser);\n var _super = _createSuper(Hour0to23Parser);\n function Hour0to23Parser() {\n var _this;\n _classCallCheck(this, Hour0to23Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0to23Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case 'Ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n }\n }]);\n return Hour0to23Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0To11Parser, _Parser);\n var _super = _createSuper(Hour0To11Parser);\n function Hour0To11Parser() {\n var _this;\n _classCallCheck(this, Hour0To11Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0To11Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case 'Ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour0To11Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1To24Parser, _Parser);\n var _super = _createSuper(Hour1To24Parser);\n function Hour1To24Parser() {\n var _this;\n _classCallCheck(this, Hour1To24Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n return _this;\n }\n _createClass(Hour1To24Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case 'ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n }\n }]);\n return Hour1To24Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n _inherits(MinuteParser, _Parser);\n var _super = _createSuper(MinuteParser);\n function MinuteParser() {\n var _this;\n _classCallCheck(this, MinuteParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(MinuteParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, dateString);\n case 'mo':\n return match.ordinalNumber(dateString, {\n unit: 'minute'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n }\n }]);\n return MinuteParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(SecondParser, _Parser);\n var _super = _createSuper(SecondParser);\n function SecondParser() {\n var _this;\n _classCallCheck(this, SecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(SecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, dateString);\n case 'so':\n return match.ordinalNumber(dateString, {\n unit: 'second'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCSeconds(value, 0);\n return date;\n }\n }]);\n return SecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(FractionOfSecondParser, _Parser);\n var _super = _createSuper(FractionOfSecondParser);\n function FractionOfSecondParser() {\n var _this;\n _classCallCheck(this, FractionOfSecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(FractionOfSecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n var valueCallback = function valueCallback(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMilliseconds(value);\n return date;\n }\n }]);\n return FractionOfSecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneWithZParser, _Parser);\n var _super = _createSuper(ISOTimezoneWithZParser);\n function ISOTimezoneWithZParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneWithZParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n return _this;\n }\n _createClass(ISOTimezoneWithZParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneWithZParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneParser, _Parser);\n var _super = _createSuper(ISOTimezoneParser);\n function ISOTimezoneParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n return _this;\n }\n _createClass(ISOTimezoneParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampSecondsParser, _Parser);\n var _super = _createSuper(TimestampSecondsParser);\n function TimestampSecondsParser() {\n var _this;\n _classCallCheck(this, TimestampSecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampSecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampSecondsParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampMillisecondsParser, _Parser);\n var _super = _createSuper(TimestampMillisecondsParser);\n function TimestampMillisecondsParser() {\n var _this;\n _classCallCheck(this, TimestampMillisecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampMillisecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampMillisecondsParser;\n}(Parser);","import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nexport var parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser()\n};","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createForOfIteratorHelper from \"@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [new DateToSystemTimezoneSetter()];\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n var _iterator = _createForOfIteratorHelper(tokens),\n _step;\n try {\n var _loop = function _loop() {\n var token = _step.value;\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = usedTokens.find(function (usedToken) {\n return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n });\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n if (!parseResult) {\n return {\n v: new Date(NaN)\n };\n }\n setters.push(parseResult.setter);\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return {\n v: new Date(NaN)\n };\n }\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n // Check if the remaining input contains something other than whitespace\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var setter = _step2.value;\n if (!setter.validate(utcDate, subFnOptions)) {\n return new Date(NaN);\n }\n var result = setter.set(utcDate, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n utcDate = result[0];\n assign(flags, result[1]);\n // Result is date\n } else {\n utcDate = result;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return utcDate;\n}\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var date;\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time);\n // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n var dayOfMonth = date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function trunc(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n};\n\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(dateLeft, dateRight) {\n var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n//=> 92\n */\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareLocalAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference);\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastDayNotFull);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result;\n\n // Check for the difference of less than month\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference);\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n\n // Check for cases of one full calendar month\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n result = sign * (difference - Number(isLastMonthNotFull));\n }\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarYears from \"../differenceInCalendarYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight));\n\n // Set both dates to a valid leap year for accurate comparison when dealing\n // with leap days\n dateLeft.setFullYear(1584);\n dateRight.setFullYear(1584);\n\n // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - Number(isLastYearNotFull));\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","/*!\n * chartjs-adapter-date-fns v2.0.1\n * https://www.chartjs.org\n * (c) 2022 chartjs-adapter-date-fns Contributors\n * Released under the MIT license\n */\nimport { _adapters } from 'chart.js';\nimport { toDate, parse, parseISO, isValid, format, addYears, addQuarters, addMonths, addWeeks, addDays, addHours, addMinutes, addSeconds, addMilliseconds, differenceInYears, differenceInQuarters, differenceInMonths, differenceInWeeks, differenceInDays, differenceInHours, differenceInMinutes, differenceInSeconds, differenceInMilliseconds, startOfYear, startOfQuarter, startOfMonth, startOfWeek, startOfDay, startOfHour, startOfMinute, startOfSecond, endOfYear, endOfQuarter, endOfMonth, endOfWeek, endOfDay, endOfHour, endOfMinute, endOfSecond } from 'date-fns';\n\nconst FORMATS = {\n datetime: 'MMM d, yyyy, h:mm:ss aaaa',\n millisecond: 'h:mm:ss.SSS aaaa',\n second: 'h:mm:ss aaaa',\n minute: 'h:mm aaaa',\n hour: 'ha',\n day: 'MMM d',\n week: 'PP',\n month: 'MMM yyyy',\n quarter: 'qqq - yyyy',\n year: 'yyyy'\n};\n\n_adapters._date.override({\n _id: 'date-fns', // DEBUG\n\n formats: function() {\n return FORMATS;\n },\n\n parse: function(value, fmt) {\n if (value === null || typeof value === 'undefined') {\n return null;\n }\n const type = typeof value;\n if (type === 'number' || value instanceof Date) {\n value = toDate(value);\n } else if (type === 'string') {\n if (typeof fmt === 'string') {\n value = parse(value, fmt, new Date(), this.options);\n } else {\n value = parseISO(value, this.options);\n }\n }\n return isValid(value) ? value.getTime() : null;\n },\n\n format: function(time, fmt) {\n return format(time, fmt, this.options);\n },\n\n add: function(time, amount, unit) {\n switch (unit) {\n case 'millisecond': return addMilliseconds(time, amount);\n case 'second': return addSeconds(time, amount);\n case 'minute': return addMinutes(time, amount);\n case 'hour': return addHours(time, amount);\n case 'day': return addDays(time, amount);\n case 'week': return addWeeks(time, amount);\n case 'month': return addMonths(time, amount);\n case 'quarter': return addQuarters(time, amount);\n case 'year': return addYears(time, amount);\n default: return time;\n }\n },\n\n diff: function(max, min, unit) {\n switch (unit) {\n case 'millisecond': return differenceInMilliseconds(max, min);\n case 'second': return differenceInSeconds(max, min);\n case 'minute': return differenceInMinutes(max, min);\n case 'hour': return differenceInHours(max, min);\n case 'day': return differenceInDays(max, min);\n case 'week': return differenceInWeeks(max, min);\n case 'month': return differenceInMonths(max, min);\n case 'quarter': return differenceInQuarters(max, min);\n case 'year': return differenceInYears(max, min);\n default: return 0;\n }\n },\n\n startOf: function(time, unit, weekday) {\n switch (unit) {\n case 'second': return startOfSecond(time);\n case 'minute': return startOfMinute(time);\n case 'hour': return startOfHour(time);\n case 'day': return startOfDay(time);\n case 'week': return startOfWeek(time);\n case 'isoWeek': return startOfWeek(time, {weekStartsOn: +weekday});\n case 'month': return startOfMonth(time);\n case 'quarter': return startOfQuarter(time);\n case 'year': return startOfYear(time);\n default: return time;\n }\n },\n\n endOf: function(time, unit) {\n switch (unit) {\n case 'second': return endOfSecond(time);\n case 'minute': return endOfMinute(time);\n case 'hour': return endOfHour(time);\n case 'day': return endOfDay(time);\n case 'week': return endOfWeek(time);\n case 'month': return endOfMonth(time);\n case 'quarter': return endOfQuarter(time);\n case 'year': return endOfYear(time);\n default: return time;\n }\n }\n});\n","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * 1000);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var months = amount * 3;\n return addMonths(dirtyDate, months);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import { millisecondsInMinute } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport default function differenceInMinutes(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import { millisecondsInHour } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport default function differenceInHours(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInHour;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInDays from \"../differenceInDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero by default.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\nexport default function differenceInWeeks(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInDays(dateLeft, dateRight) / 7;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInMonths from \"../differenceInMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of quarters between the given dates.\n *\n * @description\n * Get the number of quarters between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\nexport default function differenceInQuarters(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMonths(dateLeft, dateRight) / 3;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nexport default function startOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * const result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nexport default function startOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * const result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nexport default function startOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport default function startOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * const result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\nexport default function endOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * const result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\nexport default function endOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * const result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\nexport default function endOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(59, 59, 999);\n return date;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * const result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","export default (chart) => {\n const PADDING = 32; // pixels\n\n const paddedWidth = chart.canvas.width + PADDING * 2;\n const paddedHeight = chart.canvas.height + PADDING * 2;\n\n // We're using a duplicated canvas to avoid blinking of\n // the rendered chart in the browser.\n const offscreenCanvas = document.createElement(\"canvas\");\n offscreenCanvas.width = paddedWidth;\n offscreenCanvas.height = paddedHeight;\n\n const offscreenCtx = offscreenCanvas.getContext(\"2d\");\n\n offscreenCtx.fillStyle = \"#FFF\";\n offscreenCtx.fillRect(0, 0, paddedWidth, paddedHeight);\n\n // Copy original chart image\n offscreenCtx.drawImage(chart.canvas, PADDING, PADDING);\n\n offscreenCtx.lineWidth = 6;\n offscreenCtx.strokeStyle = \"#d0d7de\"; // Github border color around rendered Markdown file\n offscreenCtx.strokeRect(0, 0, paddedWidth, paddedHeight);\n\n const a = document.createElement(\"a\");\n a.href = offscreenCanvas.toDataURL(\"image/png\");\n a.download = \"chart.png\";\n a.click();\n};\n","\n\n\n\n\n","import { render, staticRenderFns } from \"./bar-chart.vue?vue&type=template&id=52b5eecf\"\nimport script from \"./bar-chart.vue?vue&type=script&lang=js\"\nexport * from \"./bar-chart.vue?vue&type=script&lang=js\"\nimport style0 from \"./bar-chart.vue?vue&type=style&index=0&id=52b5eecf&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"bar-chart\"},[_c('div',{staticClass:\"bar-chart__chart mb-16\"},[_c('canvas',{ref:\"chart\",staticClass:\"bar-chart__canvas\"})]),_vm._v(\" \"),_c('div',{staticClass:\"bar-chart__actions\"},[_c('a',{ref:\"downloadImageLink\",staticClass:\"btn btn--secondary btn--xs\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.downloadImage.apply(null, arguments)}}},[_vm._v(\"Download image\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import { render, staticRenderFns } from \"./line-chart.vue?vue&type=template&id=23813229\"\nimport script from \"./line-chart.vue?vue&type=script&lang=js\"\nexport * from \"./line-chart.vue?vue&type=script&lang=js\"\nimport style0 from \"./line-chart.vue?vue&type=style&index=0&id=23813229&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"line-chart\"},[_c('div',{staticClass:\"line-chart__chart mb-16\"},[_c('canvas',{ref:\"chart\",staticClass:\"line-chart__canvas\"})]),_vm._v(\" \"),_c('div',{staticClass:\"line-chart__actions\"},[_c('a',{ref:\"downloadImageLink\",staticClass:\"btn btn--secondary btn--xs\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.downloadImage.apply(null, arguments)}}},[_vm._v(\"Download image\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import { render, staticRenderFns } from \"./pie-chart.vue?vue&type=template&id=2399eaf4\"\nimport script from \"./pie-chart.vue?vue&type=script&lang=js\"\nexport * from \"./pie-chart.vue?vue&type=script&lang=js\"\nimport style0 from \"./pie-chart.vue?vue&type=style&index=0&id=2399eaf4&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pie-chart.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pie-chart.vue?vue&type=script&lang=js\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"pie-chart\"},[_c('div',{staticClass:\"pie-chart__chart mb-16\"},[_c('canvas',{ref:\"chart\",staticClass:\"pie-chart__canvas\"})]),_vm._v(\" \"),_c('div',{staticClass:\"pie-chart__actions\"},[_c('a',{ref:\"downloadImageLink\",staticClass:\"btn btn--secondary btn--xs\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.downloadImage.apply(null, arguments)}}},[_vm._v(\"Download image\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import { render, staticRenderFns } from \"./table-chart.vue?vue&type=template&id=006cae11\"\nimport script from \"./table-chart.vue?vue&type=script&lang=js\"\nexport * from \"./table-chart.vue?vue&type=script&lang=js\"\nimport style0 from \"./table-chart.vue?vue&type=style&index=0&id=006cae11&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./table-chart.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./table-chart.vue?vue&type=script&lang=js\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"table-chart\"},[_c('div',{ref:\"chartTable\",staticClass:\"table-chart__container mb-16\"},[(_vm.title)?_c('h3',{staticClass:\"table-chart__title mt-0 mb-16\"},[_vm._v(\"\\n \"+_vm._s(_vm.title)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.tableColumns && _vm.limitedResult)?_c('table',{staticClass:\"table-chart__table\",class:`table-chart__table--col-${_vm.tableColumns.length}`},[_c('thead',[_c('tr',_vm._l((_vm.tableColumns),function(column){return _c('th',{key:column},[_c('div',{staticClass:\"table-chart__th-wrapper\"},[_vm._v(\"\\n \"+_vm._s(column)+\"\\n \")])])}),0)]),_vm._v(\" \"),_c('tbody',_vm._l((_vm.limitedResult),function(row,y){return _c('tr',{key:`row-${y}`},_vm._l((row),function(value,x){return _c('td',{key:`column-${y}-${x}`},[_c('div',{staticClass:\"table-chart__td-wrapper\"},[(value === null)?_c('span',{staticClass:\"table-chart__null-value\"},[_vm._v(\"NULL\")]):_c('span',[_vm._v(_vm._s(value))])])])}),0)}),0)]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"table-chart__actions\"},[_c('div',{staticClass:\"table-chart__note\"},[_vm._v(\"\\n * only the first \"+_vm._s(_vm.maxTableRows)+\" rows are displayed\\n \")]),_vm._v(\" \"),_c('a',{ref:\"downloadImageLink\",staticClass:\"btn btn--secondary btn--xs\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.downloadImage.apply(null, arguments)}}},[_vm._v(\"Download image\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./chart-errors.vue?vue&type=template&id=220d4716\"\nimport script from \"./chart-errors.vue?vue&type=script&lang=js\"\nexport * from \"./chart-errors.vue?vue&type=script&lang=js\"\nimport style0 from \"./chart-errors.vue?vue&type=style&index=0&id=220d4716&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.hasErrors)?_c('div',{staticClass:\"chart-errors\"},_vm._l((_vm.errors),function(value,key){return _c('div',{key:key,staticClass:\"chart-errors__error\",domProps:{\"innerHTML\":_vm._s(_vm.$options.filters.md(value))}})}),0):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./chart-editor.vue?vue&type=template&id=332bea6c\"\nimport script from \"./chart-editor.vue?vue&type=script&lang=js\"\nexport * from \"./chart-editor.vue?vue&type=script&lang=js\"\nimport style0 from \"./chart-editor.vue?vue&type=style&index=0&id=332bea6c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"chart-editor\"},[_c('div',{staticClass:\"chart-editor__editor\"},[_c('div',{staticClass:\"chart-editor__chart-container\"},[(_vm.hasErrors)?_c('div',{staticClass:\"chart-editor__chart-errors mb-16\"},[_c('ChartErrors')],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'line')?_c('div',{staticClass:\"chart-editor__chart\"},[_c('LineChart')],1):(_vm.type === 'bar')?_c('div',{staticClass:\"chart-editor__chart\"},[_c('BarChart')],1):(_vm.type === 'pie')?_c('div',{staticClass:\"chart-editor__chart\"},[_c('PieChart')],1):(_vm.type === 'table')?_c('div',{staticClass:\"chart-editor__chart\"},[_c('TableChart')],1):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","export const bemClass = ({ baseClass, modifiers }) => {\n if (!modifiers) {\n return baseClass;\n }\n\n let classes = [baseClass];\n\n classes = classes.concat(modifiers.map(m => `${baseClass}--${m}`));\n\n return classes.join(\" \");\n}\n","import { render, staticRenderFns } from \"./select-dropdown.vue?vue&type=template&id=534e8eb0\"\nimport script from \"./select-dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./select-dropdown.vue?vue&type=script&lang=js\"\nimport style0 from \"./select-dropdown.vue?vue&type=style&index=0&id=534e8eb0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select-dropdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select-dropdown.vue?vue&type=script&lang=js\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:_vm.blockClass},[(_vm.currentOption)?_c('div',{staticClass:\"select-dropdown__current-option-container\",class:_vm.showDrawer ? 'highlight': '',on:{\"click\":function($event){$event.preventDefault();return _vm.toggleDropdown.apply(null, arguments)}}},[(_vm.hiddenInputField)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":_vm.hiddenInputField},domProps:{\"value\":_vm.currentOption.id}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"select-dropdown__current-option\"},[(_vm.iconComponent(_vm.currentOption.icon))?_c(_vm.iconComponent(_vm.currentOption.icon),{tag:\"component\",staticClass:\"select-dropdown__option-icon\"}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"select-dropdown__current-option-name\",domProps:{\"innerHTML\":_vm._s(_vm.currentOption.name)}})],1),_vm._v(\" \"),(_vm.disabled)?_c('LockIcon',{staticClass:\"select-dropdown__lock-icon w-16 h-16\"}):_c('ChevronDown',{staticClass:\"select-dropdown__chevron\",style:({ transform: _vm.showDrawer ? 'rotate(180deg)' : '' })})],1):_vm._e(),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"slide\"}},[(_vm.showDrawer)?_c('div',{staticClass:\"select-dropdown__items\"},_vm._l((_vm.availableOptions),function(option){return _c('div',{key:option.id,staticClass:\"select-dropdown__item\",on:{\"click\":function($event){$event.preventDefault();return _vm.selectOption(option.id)}}},[(_vm.iconComponent(option.icon))?_c(_vm.iconComponent(option.icon),{tag:\"component\",staticClass:\"select-dropdown__option-icon\"}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"select-dropdown__item-name\",domProps:{\"innerHTML\":_vm._s(option.name)}})],1)}),0):_vm._e()])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./text-input.vue?vue&type=template&id=8ca2aa06\"\nimport script from \"./text-input.vue?vue&type=script&lang=js\"\nexport * from \"./text-input.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.value),expression:\"value\"}],staticClass:\"text-input font-small\",class:_vm.cssClass,attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.value)},on:{\"input\":function($event){if($event.target.composing)return;_vm.value=$event.target.value}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./checkbox.vue?vue&type=template&id=9e44a1de\"\nimport script from \"./checkbox.vue?vue&type=script&lang=js\"\nexport * from \"./checkbox.vue?vue&type=script&lang=js\"\nimport style0 from \"./checkbox.vue?vue&type=style&index=0&id=9e44a1de&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"flex align-center\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleChecked.apply(null, arguments)}}},[(_vm.label)?_c('label',{staticClass:\"font-label mr-8\"},[_vm._v(_vm._s(_vm.label))]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"checkbox\"},[_c('div',{staticClass:\"checkbox__checkmark\",class:{\n 'checkbox__checkmark--checked': _vm.checked,\n 'checkbox__checkmark--disabled': _vm.disabled,\n }})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./radio-button.vue?vue&type=template&id=8e102018\"\nimport script from \"./radio-button.vue?vue&type=script&lang=js\"\nexport * from \"./radio-button.vue?vue&type=script&lang=js\"\nimport style0 from \"./radio-button.vue?vue&type=style&index=0&id=8e102018&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('label',{staticClass:\"radio-button\"},[_c('input',{staticClass:\"radio-button__input\",attrs:{\"type\":\"radio\",\"name\":_vm.name},domProps:{\"value\":_vm.value},on:{\"input\":_vm.toggleChecked}}),_vm._v(\" \"),_c('div',{staticClass:\"radio-button__checkmark\",class:{\n 'radio-button__checkmark--checked': _vm.checked,\n 'radio-button__checkmark--disabled': _vm.disabled,\n }})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import { render, staticRenderFns } from \"./chart-config.vue?vue&type=template&id=8e81900a\"\nimport script from \"./chart-config.vue?vue&type=script&lang=js\"\nexport * from \"./chart-config.vue?vue&type=script&lang=js\"\nimport style0 from \"./chart-config.vue?vue&type=style&index=0&id=8e81900a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chart-config.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chart-config.vue?vue&type=script&lang=js\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"chart-config\"},[_c('div',{staticClass:\"chart-config__section-label font-section mb-16\"},[_vm._v(\"\\n SETTINGS\\n \")]),_vm._v(\" \"),(_vm.databases.length > 0)?_c('div',{staticClass:\"chart-config__dataset mb-16\"},[_c('label',{staticClass:\"font-label\"},[_vm._v(\"Dataset\")]),_vm._v(\" \"),_c('div',{staticClass:\"relative\"},[_c('SelectDropdown',{attrs:{\"inputOptions\":_vm.databasesInputOptions,\"inputValue\":_vm.currentDatabaseId},on:{\"selected\":_vm.updateDatabase}})],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"chart-config__type mb-16\"},[_c('label',{staticClass:\"font-label\"},[_vm._v(\"Type\")]),_vm._v(\" \"),_c('div',{staticClass:\"relative\"},[_c('SelectDropdown',{attrs:{\"inputOptions\":_vm.chartTypesInputOptions,\"inputValue\":_vm.chartType},on:{\"selected\":_vm.updateType}})],1)]),_vm._v(\" \"),(_vm.chartType !== 'table' && _vm.fields.length > 0)?_c('div',{staticClass:\"chart-config__fields mb-16\"},[_vm._m(0),_vm._v(\" \"),_vm._l((_vm.fields),function(field,index){return _c('div',{key:`${field}-${index}`,staticClass:\"chart-config__config-row mb-8\"},[_c('div',{staticClass:\"chart-config__config-cell font-small\"},[_vm._v(\"\\n \"+_vm._s(field)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"chart-config__config-cell\"},[_c('RadioButton',{attrs:{\"name\":\"x-axis\",\"value\":field,\"checked\":_vm.xAxis === field},on:{\"input\":_vm.updateXAxis}})],1),_vm._v(\" \"),_c('div',{staticClass:\"chart-config__config-cell\"},[_c('Checkbox',{attrs:{\"value\":field,\"disabled\":_vm.xAxis === field,\"checked\":_vm.yAxis.includes(field)},on:{\"input\":_vm.updateYAxis}})],1),_vm._v(\" \"),_c('div',{staticClass:\"chart-config__config-cell\"},[_c('Checkbox',{attrs:{\"value\":field,\"disabled\":_vm.xAxis === field,\"checked\":_vm.seriesColumns.includes(field)},on:{\"input\":_vm.updateSeries}})],1)])})],2):_vm._e(),_vm._v(\" \"),(_vm.chartType === 'table' && _vm.fields.length > 0)?_c('div',{staticClass:\"chart-config__fields mb-16\"},[_vm._m(1),_vm._v(\" \"),_vm._l((_vm.fields),function(field,index){return _c('div',{key:`${field}-${index}`,staticClass:\"chart-config__config-row mb-8\"},[_c('div',{staticClass:\"chart-config__config-cell font-small\"},[_vm._v(\"\\n \"+_vm._s(field)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"chart-config__config-cell\"},[_c('Checkbox',{attrs:{\"value\":field,\"checked\":_vm.tableColumns.includes(field)},on:{\"input\":_vm.updateTableColumns}})],1)])})],2):_vm._e(),_vm._v(\" \"),(_vm.chartType === 'bar')?_c('div',{staticClass:\"chart-config__checkbox-option flex items-center mb-16\"},[_c('Checkbox',{attrs:{\"value\":\"stacked\",\"label\":\"Stacked\",\"checked\":_vm.stacked},on:{\"input\":_vm.updateStacked}})],1):_vm._e(),_vm._v(\" \"),(_vm.chartType === 'bar')?_c('div',{staticClass:\"chart-config__checkbox-option flex items-center mb-16\"},[_c('Checkbox',{attrs:{\"value\":\"showAllXAxisLabels\",\"label\":\"Show all X-axis labels\",\"checked\":_vm.showAllXAxisLabels},on:{\"input\":_vm.updateShowAllXAxisLabels}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"chart-config__title mb-16\"},[_c('label',{staticClass:\"font-label\"},[_vm._v(\"Title\")]),_vm._v(\" \"),_c('TextInput',{attrs:{\"cssClass\":\"font-small\",\"value\":_vm.title},on:{\"input\":_vm.updateChartTitle}})],1),_vm._v(\" \"),(['line', 'bar'].includes(_vm.chartType))?_c('div',{staticClass:\"chart-config__x-axis-name mb-16\"},[_c('label',{staticClass:\"font-label\"},[_vm._v(\"X-axis name\")]),_vm._v(\" \"),_c('TextInput',{attrs:{\"cssClass\":\"font-small\"},on:{\"input\":_vm.updateXAxisTitle}})],1):_vm._e(),_vm._v(\" \"),(['line', 'bar'].includes(_vm.chartType))?_c('div',{staticClass:\"chart-config__y-axis-name mb-16\"},[_c('label',{staticClass:\"font-label\"},[_vm._v(\"Y-axis name\")]),_vm._v(\" \"),_c('TextInput',{attrs:{\"cssClass\":\"font-small\"},on:{\"input\":_vm.updateYAxisTitle}})],1):_vm._e(),_vm._v(\" \"),(_vm.chartType !== 'table')?_c('div',{staticClass:\"chart-config__type\"},[_c('label',{staticClass:\"font-label\"},[_vm._v(\"Legend position\")]),_vm._v(\" \"),_c('div',{staticClass:\"relative\"},[_c('SelectDropdown',{attrs:{\"inputOptions\":_vm.legendPositionInputOptions,\"inputValue\":_vm.legendPosition},on:{\"selected\":_vm.updateLegendPosition}})],1)]):_vm._e()])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"chart-config__config-row mb-12\"},[_c('div',{staticClass:\"chart-config__config-header-cell chart-config__config-header-cell--wide font-label\"},[_vm._v(\"\\n Column\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"chart-config__config-header-cell font-label\"},[_vm._v(\"\\n X-axis\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"chart-config__config-header-cell font-label\"},[_vm._v(\"\\n Y-axis\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"chart-config__config-header-cell font-label\"},[_vm._v(\"\\n Series\\n \")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"chart-config__config-row mb-12\"},[_c('div',{staticClass:\"chart-config__config-header-cell chart-config__config-header-cell--wide font-label\"},[_vm._v(\"\\n Column\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"chart-config__config-header-cell font-label\"},[_vm._v(\"\\n Included\\n \")])])\n}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./header.vue?vue&type=template&id=56be1b94\"\nimport script from \"./header.vue?vue&type=script&lang=js\"\nexport * from \"./header.vue?vue&type=script&lang=js\"\nimport style0 from \"./header.vue?vue&type=style&index=0&id=56be1b94&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('header',{staticClass:\"chart-header\"},[_c('a',{attrs:{\"href\":\"/contents\"}},[_c('Logo',{staticClass:\"chart-header__logo\"})],1),_vm._v(\" \"),_c('a',{staticClass:\"chart-header__link-back btn btn--xs btn--secondary\",attrs:{\"href\":\"/contents\"}},[_c('LeftArrow',{staticClass:\"chart-header__link-back-icon\"}),_vm._v(\"\\n Back\\n \")],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./schema-visualizer-button.vue?vue&type=template&id=7865a8ef\"\nimport script from \"./schema-visualizer-button.vue?vue&type=script&lang=js\"\nexport * from \"./schema-visualizer-button.vue?vue&type=script&lang=js\"\nimport style0 from \"./schema-visualizer-button.vue?vue&type=style&index=0&id=7865a8ef&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"schema-visualizer-button flex align-center w-144 h-144\",attrs:{\"target\":\"_blank\",\"href\":`https://sqlhabit.github.io/sql_schema_visualizer/databases/${_vm.databaseSlug}`}},[_c('div',{staticClass:\"schema-visualizer-button__copy\"},[_vm._v(\"Schema visualization\")]),_vm._v(\" \"),_c('img',{staticClass:\"schema-visualizer-button__snapshot\",attrs:{\"src\":require('@images/database_documentation/schema_visualizer@2x.jpg'),\"srcset\":require('@images/database_documentation/schema_visualizer.jpg') + ' 1x, ' + require('@images/database_documentation/schema_visualizer@2x.jpg') + ' 2x'}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import { render, staticRenderFns } from \"./dataset-documentation.vue?vue&type=template&id=f3ac50ee\"\nimport script from \"./dataset-documentation.vue?vue&type=script&lang=js\"\nexport * from \"./dataset-documentation.vue?vue&type=script&lang=js\"\nimport style0 from \"./dataset-documentation.vue?vue&type=style&index=0&id=f3ac50ee&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dataset-documentation.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dataset-documentation.vue?vue&type=script&lang=js\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sidebar-dataset-documentation\"},[_c('div',{staticClass:\"sidebar-dataset-documentation__section-label font-section grey-7 mb-16\"},[_vm._v(\"\\n DATABASE DOCUMENTATION\\n \")]),_vm._v(\" \"),(_vm.databases.length > 0)?_c('div',{staticClass:\"chart-config__dataset mb-16\"},[_c('label',{staticClass:\"font-label\"},[_vm._v(\"Dataset\")]),_vm._v(\" \"),_c('div',{staticClass:\"relative\"},[_c('SelectDropdown',{attrs:{\"inputOptions\":_vm.databasesInputOptions,\"inputValue\":_vm.currentDatabaseId},on:{\"selected\":_vm.updateDatabase}})],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"flex mb-24\"},[(_vm.currentDatabase.description)?_c('div',{staticClass:\"sidebar-dataset-documentation__dataset-description font-small\",domProps:{\"innerHTML\":_vm._s(_vm.$options.filters.mdWithP(_vm.currentDatabase.description))}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"sidebar-dataset-documentation__schema-button\"},[_c('SchemaVisualizerButton',{attrs:{\"databaseSlug\":_vm.currentDatabase.slug}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"sidebar-dataset-documentation__search-container mb-24\"},[_c('label',{staticClass:\"font-label\"},[_vm._v(\"Search\")]),_vm._v(\" \"),_c('TextInput',{attrs:{\"cssClass\":\"font-small\",\"placeholder\":\"Search by name, type or description\"},on:{\"input\":_vm.updateSearchQuery}})],1),_vm._v(\" \"),(_vm.currentDatabase.documentation)?_c('div',{staticClass:\"sidebar-dataset-documentation__tables\"},_vm._l((_vm.currentDatabase.documentation),function(table){return _c('div',{key:table.name,staticClass:\"sidebar-dataset-documentation__table-container\",class:{\n 'display-none': !_vm.showTable(table)\n }},[_c('div',{staticClass:\"sidebar-dataset-documentation__table-name-container mb-12 flex align-baseline\"},[_c('TableIcon',{staticClass:\"sidebar-dataset-documentation__table-icon mr-8\"}),_vm._v(\" \"),_c('div',{staticClass:\"sidebar-dataset-documentation__table-name weight-700\",domProps:{\"innerHTML\":_vm._s(_vm.highlightSearchQuery(table.name))}})],1),_vm._v(\" \"),_c('table',{staticClass:\"info-table sidebar-dataset-documentation__table\"},[_vm._m(0,true),_vm._v(\" \"),_c('tbody',_vm._l((table.columns),function(column){return _c('tr',{key:column.name,class:{\n 'display-none': !_vm.showColumn(column)\n }},[_c('td',{staticClass:\"font-small\",domProps:{\"innerHTML\":_vm._s(_vm.highlightSearchQuery(column.name))}}),_vm._v(\" \"),_c('td',{staticClass:\"font-small\",domProps:{\"innerHTML\":_vm._s(_vm.highlightSearchQuery(column.type))}}),_vm._v(\" \"),_c('td',{staticClass:\"font-small width-100\",domProps:{\"innerHTML\":_vm._s(_vm.$options.filters.md(_vm.highlightSearchQuery(column.description)))}})])}),0)])])}),0):_vm._e(),_vm._v(\" \"),_c('CloseIcon',{staticClass:\"sidebar-dataset-documentation__close-icon pointer grey-7\",on:{\"click\":function($event){$event.preventDefault();return _vm.close.apply(null, arguments)}}})],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('thead',[_c('th',{staticClass:\"font-label\"},[_vm._v(\"Column\")]),_vm._v(\" \"),_c('th',{staticClass:\"font-label\"},[_vm._v(\"Type\")]),_vm._v(\" \"),_c('th',{staticClass:\"font-label\"},[_vm._v(\"Description\")])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import { render, staticRenderFns } from \"./sql-reference.vue?vue&type=template&id=6678a462\"\nimport script from \"./sql-reference.vue?vue&type=script&lang=js\"\nexport * from \"./sql-reference.vue?vue&type=script&lang=js\"\nimport style0 from \"./sql-reference.vue?vue&type=style&index=0&id=6678a462&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sql-reference.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sql-reference.vue?vue&type=script&lang=js\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"chart-sql-reference\"},[_c('div',{staticClass:\"chart-sql-reference__section-label font-section grey-7 mb-16\"},[_vm._v(\"\\n SQL REFERENCE\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"chart-sql-reference__dataset-description font-small mb-16\",domProps:{\"innerHTML\":_vm._s(_vm.$options.filters.mdWithP(_vm.$t('postgresDescription')))}}),_vm._v(\" \"),_c('div',{staticClass:\"chart-sql-reference__search-container mb-24\"},[_c('label',{staticClass:\"font-label\"},[_vm._v(\"Search\")]),_vm._v(\" \"),_c('TextInput',{attrs:{\"cssClass\":\"font-small\",\"placeholder\":\"Search by name, type or description\"},on:{\"input\":_vm.updateSearchQuery}})],1),_vm._v(\" \"),(_vm.sqlReference)?_c('div',{ref:\"referenceTables\",staticClass:\"chart-sql-reference__tables\"},_vm._l((_vm.sqlReference),function(section){return _c('div',{key:section.name,staticClass:\"chart-sql-reference__table-container\",class:{\n 'display-none': !_vm.showTable(section.name, section.keywords)\n }},[_c('div',{staticClass:\"chart-sql-reference__table-name-container mb-12 flex align-baseline\"},[_c('div',{staticClass:\"chart-sql-reference__table-name weight-700\",domProps:{\"innerHTML\":_vm._s(_vm.highlightSearchQuery(section.name))}})]),_vm._v(\" \"),_c('table',{staticClass:\"info-table chart-sql-reference__table\"},[_vm._m(0,true),_vm._v(\" \"),_c('tbody',_vm._l((section.keywords),function(keyword){return _c('tr',{key:keyword.name,class:{\n 'display-none': !_vm.showColumn(keyword)\n }},[_c('td',{staticClass:\"font-small\",domProps:{\"innerHTML\":_vm._s(_vm.highlightSearchQuery(keyword.name))}}),_vm._v(\" \"),_c('td',{staticClass:\"font-small width-100\",domProps:{\"innerHTML\":_vm._s(_vm.$options.filters.mdWithP(_vm.highlightSearchQuery(keyword.description)))}})])}),0)])])}),0):_c('div',[_c('span',{staticClass:\"font-small\",domProps:{\"innerHTML\":_vm._s(_vm.$options.filters.mdWithP(`Loading... :hourglass_flowing_sand:`))}})]),_vm._v(\" \"),_c('CloseIcon',{staticClass:\"chart-sql-reference__close-icon pointer grey-7\",on:{\"click\":function($event){$event.preventDefault();return _vm.close.apply(null, arguments)}}})],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('thead',[_c('th',{staticClass:\"font-label\"},[_vm._v(\"Column\")]),_vm._v(\" \"),_c('th',{staticClass:\"font-label\"},[_vm._v(\"Description\")])])\n}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./sidebar-menu.vue?vue&type=template&id=060eb5eb\"\nimport script from \"./sidebar-menu.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar-menu.vue?vue&type=script&lang=js\"\nimport style0 from \"./sidebar-menu.vue?vue&type=style&index=0&id=060eb5eb&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"chart-sidebar-menu\"},[_c('div',{staticClass:\"chart-sidebar-menu__container\"},[_c('div',{staticClass:\"chart-sidebar-menu__top-menu\"},[_c('a',{staticClass:\"mb-48 flex\",attrs:{\"href\":\"/contents\"}},[_c('VerticalLogo',{staticClass:\"chart-sidebar-menu__logo\"})],1),_vm._v(\" \"),_c('DatabaseIcon',{staticClass:\"chart-sidebar-menu__database-icon mb-48 pointer grey-6\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleTab('database_documentation')}}}),_vm._v(\" \"),_c('CodeIcon',{staticClass:\"chart-sidebar-menu__database-icon mb-48 pointer grey-6\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleTab('sql_reference')}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"chart-sidebar-menu__bottom-menu\"})]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"slide-toggle\"}},[(_vm.activeTab === 'database_documentation')?_c('div',{staticClass:\"chart-sidebar-menu__dataset-documentation\"},[_c('DatasetDocumentation',{on:{\"close\":_vm.close}})],1):_vm._e()]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"slide-toggle\"}},[(_vm.activeTab === 'sql_reference')?_c('div',{staticClass:\"chart-sidebar-menu__sql-reference\"},[_c('SQLReference',{on:{\"close\":_vm.close}})],1):_vm._e()])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import { render, staticRenderFns } from \"./sql-editor.vue?vue&type=template&id=86ce3862\"\nimport script from \"./sql-editor.vue?vue&type=script&lang=js\"\nexport * from \"./sql-editor.vue?vue&type=script&lang=js\"\nimport style0 from \"./sql-editor.vue?vue&type=style&index=0&id=86ce3862&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sql-editor.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sql-editor.vue?vue&type=script&lang=js\"","import Vue from \"modules/vue_twemoji\";\nimport VueI18n from \"vue-i18n\";\nimport ChartSqlEditor from \"components/chart/sql-editor\";\nimport { store } from \"store\";\n\nVue.use(VueI18n);\n\n(function() {\n if(document.querySelectorAll(\".tab-body\").length === 0) {\n return;\n }\n\n const focusAndMoveCursorToTheEnd = () => {\n if(!window.state.editor) {\n return\n }\n\n const editor = window.state.editor;\n\n editor.focus();\n\n const cursorPosition = editor.getCursorPosition();\n if(cursorPosition.row === 0 && cursorPosition.column === 0) {\n const n = editor.getSession().getValue().split(\"\\n\").length;\n editor.gotoLine(n);\n editor.navigateLineEnd();\n }\n };\n\n document.addEventListener(\"click\", (e) => {\n if(e.target && e.target.matches(\".tabs-menu__button\")) {\n e.preventDefault();\n e.stopPropagation();\n\n const $menuItem = e.target;\n const $menu = $menuItem.closest(\".tabs-menu\");\n const tabId = $menuItem.dataset.tab;\n\n const $tab = document.querySelector(`.tab-body[data-tab='${tabId}']`);\n\n if($tab.dataset.tab === \"chart\") {\n const $container = document.querySelector(\".chart-editor-container\");\n\n const $el = document.createElement(\"div\");\n $el.className = \"js-chart-editor\";\n\n $container.appendChild($el);\n $container.classList.add(\"chart-editor-container--active\");\n\n const query = window.state.query || {};\n\n if(window.state.chart) {\n window.state.chart.datasetId = query.datasetId;\n window.state.chart.query = query.body;\n } else {\n window.state.chart = new Vue({\n store,\n i18n: new VueI18n({\n locale: \"en\"\n }),\n el: $el,\n components: {\n ChartSqlEditor\n },\n data() {\n return {\n query: query.body,\n datasetId: query.datasetId,\n closeLinkCopy: `Back to ${window.state.contentItem.contentType.toLowerCase()}`\n }\n },\n template: `\n \n `,\n methods: {\n closeChartEditor() {\n const $body = document.querySelector(\"body\");\n $body.classList.remove(\"no-scroll\");\n\n $container.classList.remove(\"chart-editor-container--active\");\n }\n },\n mounted() {\n const $body = document.querySelector(\"body\");\n $body.classList.add(\"no-scroll\");\n }\n });\n }\n } else {\n const $activeTab = document.querySelector(\".tab-body--active\");\n\n $activeTab.classList.toggle(\"tab-body--active\");\n $tab.classList.toggle(\"tab-body--active\");\n\n const $activeMenuItem = $menu.querySelector(\".tabs-menu__button--active\");\n\n $menuItem.classList.toggle(\"tabs-menu__button--active\");\n $activeMenuItem.classList.toggle(\"tabs-menu__button--active\");\n\n $menuItem.classList.remove(\"tabs-menu__button--highlight\");\n $activeMenuItem.classList.remove(\"tabs-menu__button--highlight\");\n\n // Scroll back from where \"Run query\" link was clicked\n if($menuItem.dataset.tab === \"lesson\" || $menuItem.dataset.tab === \"exercise\") {\n if(window.scrollTo && window.state && window.state.runQueryScrollY) {\n window.scrollTo(0, window.state.runQueryScrollY);\n }\n }\n\n // Focus on SQL Editor when this tab is opened\n if($menu.querySelector(\".tabs-menu__button--active\").dataset.tab === \"sql_editor\") {\n focusAndMoveCursorToTheEnd();\n }\n }\n }\n });\n})();\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sql-reference\"},[_c('div',{staticClass:\"sql-reference__dataset-description font-small mb-16\",domProps:{\"innerHTML\":_vm._s(_vm.$options.filters.mdWithP(_vm.$t('postgresDescription')))}}),_vm._v(\" \"),_c('div',{staticClass:\"sql-reference__search-container mb-24\"},[_c('label',{staticClass:\"font-label\"},[_vm._v(\"Search\")]),_vm._v(\" \"),_c('TextInput',{attrs:{\"cssClass\":\"font-small\",\"placeholder\":\"Search by name, type or description\"},on:{\"input\":_vm.updateSearchQuery}})],1),_vm._v(\" \"),(_vm.sqlReference)?_c('div',{ref:\"referenceTables\",staticClass:\"sql-reference__tables\"},_vm._l((_vm.sqlReference),function(section){return _c('div',{key:section.name,staticClass:\"sql-reference__table-container\",class:{\n 'display-none': !_vm.showTable(section.name, section.keywords)\n }},[_c('div',{staticClass:\"sql-reference__table-name-container mb-12 flex align-baseline\"},[_c('div',{staticClass:\"sql-reference__table-name weight-700\",domProps:{\"innerHTML\":_vm._s(_vm.highlightSearchQuery(section.name))}})]),_vm._v(\" \"),_c('table',{staticClass:\"info-table sql-reference__table\"},[_vm._m(0,true),_vm._v(\" \"),_c('tbody',_vm._l((section.keywords),function(keyword){return _c('tr',{key:keyword.name,class:{\n 'display-none': !_vm.showColumn(keyword)\n }},[_c('td',{staticClass:\"font-small\",domProps:{\"innerHTML\":_vm._s(_vm.highlightSearchQuery(keyword.name))}}),_vm._v(\" \"),_c('td',{staticClass:\"font-small width-100\",domProps:{\"innerHTML\":_vm._s(_vm.$options.filters.mdWithP(_vm.highlightSearchQuery(keyword.description)))}})])}),0)])])}),0):_c('div',[_c('span',{staticClass:\"font-small\",domProps:{\"innerHTML\":_vm._s(_vm.$options.filters.mdWithP(`Loading... :hourglass_flowing_sand:`))}})])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('thead',[_c('th',{staticClass:\"font-label\"},[_vm._v(\"Column\")]),_vm._v(\" \"),_c('th',{staticClass:\"font-label\"},[_vm._v(\"Description\")])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import { render, staticRenderFns } from \"./sql-reference.vue?vue&type=template&id=2c891c8e\"\nimport script from \"./sql-reference.vue?vue&type=script&lang=js\"\nexport * from \"./sql-reference.vue?vue&type=script&lang=js\"\nimport style0 from \"./sql-reference.vue?vue&type=style&index=0&id=2c891c8e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sql-reference.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sql-reference.vue?vue&type=script&lang=js\"","import Vue from \"modules/vue_twemoji\";\nimport VueI18n from \"vue-i18n\";\nimport SqlReference from \"components/sql-reference\";\n\nVue.use(VueI18n);\n\nconst $container = document.querySelector(\".js-sql-reference\");\n\nif($container) {\n new Vue({\n el: $container,\n render: h => h(SqlReference),\n i18n: new VueI18n({\n locale: \"en\"\n })\n });\n}\n","import Vue from \"vue/dist/vue.esm\";\nimport SelectDropdown from \"components/select-dropdown\";\n\nconst $dropdownContainers = document.querySelectorAll(\".js-select-dropdown\");\n\nif($dropdownContainers.length > 0) {\n $dropdownContainers.forEach($container => {\n const {\n inputValue,\n hiddenInputField,\n windowStateKey\n } = $container.dataset;\n\n const options = JSON.parse($container.dataset.options);\n\n new Vue({\n el: $container,\n render: h => h(SelectDropdown, {\n props: {\n inputValue,\n hiddenInputField,\n windowStateKey,\n inputOptions: options\n }\n })\n });\n })\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"database-documentation\"},[(_vm.showDatasetMenu)?_c('div',{staticClass:\"h3 mb-16\"},[_vm._v(\"\\n \"+_vm._s(_vm.currentDatabase.name)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"flex mb-24\"},[(_vm.currentDatabase.description)?_c('div',{staticClass:\"database-documentation__dataset-description font-small\",domProps:{\"innerHTML\":_vm._s(_vm.$options.filters.mdWithP(_vm.currentDatabase.description))}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"database-documentation__schema-button\"},[_c('SchemaVisualizerButton',{attrs:{\"databaseSlug\":_vm.currentDatabase.slug}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"database-documentation__search-container mb-24\"},[_c('label',{staticClass:\"font-label\"},[_vm._v(\"Search\")]),_vm._v(\" \"),_c('TextInput',{attrs:{\"cssClass\":\"font-small\",\"placeholder\":\"Search by name, type or description\"},on:{\"input\":_vm.updateSearchQuery}})],1),_vm._v(\" \"),(_vm.currentDatabase.documentation)?_c('div',{staticClass:\"database-documentation__tables\"},_vm._l((_vm.currentDatabase.documentation),function(table){return _c('div',{key:table.name,staticClass:\"database-documentation__table-container\",class:{\n 'display-none': !_vm.showTable(table)\n }},[_c('div',{staticClass:\"database-documentation__table-name-container mb-12 flex align-baseline\"},[_c('TableIcon',{staticClass:\"database-documentation__table-icon mr-8\"}),_vm._v(\" \"),_c('div',{staticClass:\"database-documentation__table-name weight-700\",domProps:{\"innerHTML\":_vm._s(_vm.highlightSearchQuery(table.name))}})],1),_vm._v(\" \"),_c('table',{staticClass:\"info-table database-documentation__table\"},[_vm._m(0,true),_vm._v(\" \"),_c('tbody',_vm._l((table.columns),function(column){return _c('tr',{key:column.name,class:{\n 'display-none': !_vm.showColumn(table.name, column)\n }},[_c('td',{staticClass:\"font-small\",domProps:{\"innerHTML\":_vm._s(_vm.highlightSearchQuery(column.name))}}),_vm._v(\" \"),_c('td',{staticClass:\"font-small\",domProps:{\"innerHTML\":_vm._s(_vm.highlightSearchQuery(column.type))}}),_vm._v(\" \"),_c('td',{staticClass:\"font-small width-100\",domProps:{\"innerHTML\":_vm._s(_vm.$options.filters.md(_vm.highlightSearchQuery(column.description)))}})])}),0)])])}),0):_vm._e()])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('thead',[_c('th',{staticClass:\"font-label\"},[_vm._v(\"Column\")]),_vm._v(\" \"),_c('th',{staticClass:\"font-label\"},[_vm._v(\"Type\")]),_vm._v(\" \"),_c('th',{staticClass:\"font-label\"},[_vm._v(\"Description\")])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import { render, staticRenderFns } from \"./database-documentation.vue?vue&type=template&id=73971b04\"\nimport script from \"./database-documentation.vue?vue&type=script&lang=js\"\nexport * from \"./database-documentation.vue?vue&type=script&lang=js\"\nimport style0 from \"./database-documentation.vue?vue&type=style&index=0&id=73971b04&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./database-documentation.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./database-documentation.vue?vue&type=script&lang=js\"","import Vue from \"modules/vue_twemoji\";\nimport VueI18n from \"vue-i18n\";\nimport DatabaseDocumentation from \"components/database-documentation\";\n\nVue.use(VueI18n);\n\nconst $container = document.querySelector(\".js-db-documentation\");\n\nif($container) {\n const { showDatasetMenu } = $container.dataset;\n\n new Vue({\n el: $container,\n render: h => h(DatabaseDocumentation, {\n props: {\n showDatasetMenu: showDatasetMenu === \"true\"\n }\n })\n });\n}\n","window.gtmDL = window.gtmDL || [{\n \"env\": window.sqlhabitEnv\n}];\n\nexport default (eventName, params) => {\n window.gtmDL.push({\n \"event\": eventName,\n ...params\n });\n}\n","\n\n\n\n\n","import { render, staticRenderFns } from \"./nps-survey.vue?vue&type=template&id=03602f30\"\nimport script from \"./nps-survey.vue?vue&type=script&lang=js\"\nexport * from \"./nps-survey.vue?vue&type=script&lang=js\"\nimport style0 from \"./nps-survey.vue?vue&type=style&index=0&id=03602f30&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./nps-survey.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./nps-survey.vue?vue&type=script&lang=js\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"nps-survey\"},[_c('div',{staticClass:\"nps-survey__container\"},[(_vm.step === 'rating' || _vm.step === 'review')?_c('CloseIcon',{class:'nps-survey__close',on:{\"click\":_vm.closeSurvey}}):_vm._e(),_vm._v(\" \"),(_vm.step === 'rating')?_c('div',{staticClass:\"nps-survey__rating-step\"},[_c('h3',{staticClass:\"nps-survey__headline\"},[_vm._v(\"\\n How likely are you to recommend SQL Habit to a friend or colleague?\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"nps-survey__ratings\"},_vm._l((_vm.ratings),function(rating){return _c('div',{key:rating,staticClass:\"nps-survey__rating\",on:{\"click\":function($event){return _vm.submitRating(rating)}}},[_vm._v(\"\\n \"+_vm._s(rating)+\"\\n \")])}),0),_vm._v(\" \"),_vm._m(0)]):_vm._e(),_vm._v(\" \"),(_vm.step === 'feedback')?_c('div',{staticClass:\"nps-survey__feedback-step\"},[_c('img',{staticClass:\"nps-survey__feedback-form-avatar\",attrs:{\"src\":require('@images/avatars/peace_half.png')}}),_vm._v(\" \"),_c('div',{staticClass:\"nps-survey__feedback-form-inputs\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.feedback),expression:\"feedback\"}],staticClass:\"nps-survey__feedback\",attrs:{\"placeholder\":\"Hi, it's Anatoli, the author of SQL Habit. I'd love to hear your feedback! What can I do better? What do you want to see in the course?\"},domProps:{\"value\":(_vm.feedback)},on:{\"input\":function($event){if($event.target.composing)return;_vm.feedback=$event.target.value}}}),_vm._v(\" \"),_c('div',{staticClass:\"nps-survey__feedback-form-ctas\"},[_c('a',{staticClass:\"nps-survey__skip-feedback\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.closeSurvey}},[_vm._v(\"Skip\")]),_vm._v(\" \"),_c('button',{staticClass:\"nps-survey__submit-feedback btn\",on:{\"click\":_vm.submitFeedback}},[_vm._v(\"Submit feedback\")])])])]):_vm._e(),_vm._v(\" \"),(_vm.step === 'review')?_c('div',{staticClass:\"nps-survey__review-step\"},[_c('h3',{staticClass:\"nps-survey__headline\"},[_vm._v(\"\\n Thanks a lot, I'm so glad you're enjoying the course!\\n \")]),_vm._v(\" \"),_vm._m(1)]):_vm._e()],1)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"nps-survey__labels\"},[_c('span',[_vm._v(\"Not likely at all\")]),_vm._v(\" \"),_c('span',[_vm._v(\"Extremely likely\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"nps-survey__review\"},[_vm._v(\"\\n I'd really appreciate if you take a minute and leave a review for SQL Habit. \"),_c('a',{attrs:{\"href\":\"/reviews/new\"}},[_vm._v(\"Click here\")]),_vm._v(\" to visit the review page.\\n \")])\n}]\n\nexport { render, staticRenderFns }","const getWindowDimensions = () => {\n const w = window;\n const d = document;\n const e = d.documentElement;\n const g = d.getElementsByTagName(\"body\")[0];\n\n return {\n width: w.innerWidth || e.clientWidth || g.clientWidth,\n height: w.innerHeight || e.clientHeight || g.clientHeight\n }\n}\n\nexport default getWindowDimensions;\n","export const setCookie = (name, value, days) => {\n let d = new Date;\n\n d.setTime(d.getTime() + 24 * 60 * 60 * 1000 * days);\n\n document.cookie = name + \"=\" + value + \";path=/;expires=\" + d.toGMTString();\n}\n\nexport const getCookie = (name) => {\n let v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');\n\n return v ? v[2] : null;\n}\n\nexport const deleteCookie = (name) => {\n setCookie(name, null, 0);\n}\n","import Vue from \"vue/dist/vue.esm\";\nimport NpsSurvey from \"components/nps-survey\";\nimport trackEvent from \"modules/track-event\";\nimport getWindowDimensions from \"modules/get-window-dimensions\";\nimport axios from \"axios\";\nimport { getCookie, setCookie } from \"modules/cookie\";\nimport { notify } from \"modules/notify\";\nimport Sentry from \"modules/sentry\";\n\nconst NPS_SURVEY_SEEN_COOKIE = \"nps\";\nconst $npsSurveyContainer = document.querySelector(\".js-nps-survey\");\n\nconst seenNpsSurvey = getCookie(NPS_SURVEY_SEEN_COOKIE);\n\nif(!seenNpsSurvey && $npsSurveyContainer && getWindowDimensions().width > 720) {\n axios.get(\"/api/nps_scores/check\").then(response => {\n if(response.data.show_nps_score) {\n new Vue({\n el: $npsSurveyContainer,\n render: h => h(NpsSurvey)\n });\n\n trackEvent(\"GAEvent\", {\n category: \"nps_survey\",\n action: \"show\"\n });\n }\n\n setCookie(NPS_SURVEY_SEEN_COOKIE, true, 14);\n }).catch(function (error) {\n Sentry.captureException(error);\n\n notify({\n message: \"Smth went wrong\",\n type: \"error\"\n });\n });\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.loaded)?_c('div',{staticClass:\"bookmark animation\",class:{\n 'animation--flip-in-x': _vm.disabled\n },on:{\"click\":function($event){$event.preventDefault();return _vm.toggleBookmark.apply(null, arguments)}}},[_c('a',{staticClass:\"bookmark__link\",attrs:{\"href\":\"#\"}},[(_vm.showCopy)?_c('span',[_vm._v(\"Bookmark\")]):_vm._e(),_vm._v(\" \"),(_vm.active)?_c('BookmarkFull',{class:`w-${_vm.iconSize} h-${_vm.iconSize}`}):_c('BookmarkEmpty',{class:`w-${_vm.iconSize} h-${_vm.iconSize}`})],1)]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import { render, staticRenderFns } from \"./bookmark.vue?vue&type=template&id=0b6eca28\"\nimport script from \"./bookmark.vue?vue&type=script&lang=js\"\nexport * from \"./bookmark.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./bookmark.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-6.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./bookmark.vue?vue&type=script&lang=js\""],"names":["global","this","window","define","module","deps","payload","arguments","length","modules","payloads","original","apply","console","error","trace","ns","root","_require","parentId","callback","lookup","undefined","Object","prototype","toString","call","params","i","l","dep","require","push","packagedModule","normalizeModule","moduleName","indexOf","chunks","split","charAt","slice","join","previous","replace","exports","mod","id","uri","packaged","ace","defineProp","obj","name","val","defineProperty","value","enumerable","writable","configurable","String","startsWith","searchString","position","lastIndexOf","endsWith","subjectString","lastIndex","repeat","count","result","string","includes","str","assign","target","TypeError","output","index","source","keys","forEach","key","values","o","map","k","Array","find","predicate","len","thisArg","kValue","findIndex","item","fill","O","relativeStart","Math","max","min","end","relativeEnd","final","of","deepCopy","copy","isArray","last","a","stringReverse","reverse","stringRepeat","trimBeginRegexp","trimEndRegexp","stringTrimLeft","stringTrimRight","copyObject","copyArray","array","arrayToMap","arr","createMap","props","create","arrayRemove","splice","escapeRegExp","escapeHTML","getMatchOffsets","regExp","matches","offset","deferredCall","fcn","timer","deferred","timeout","cancel","setTimeout","schedule","clearTimeout","isPending","delayedCall","defaultTimeout","_self","delay","supportsLookbehind","RegExp","e","skipEmptyMatch","line","supportsUnicodeFlag","codePointAt","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","_navigator","navigator","os","exec","platform","toLowerCase","ua","userAgent","appName","isWin","isIE","parseFloat","match","isOldIE","isGecko","isMozilla","isOpera","opera","isWebKit","isChrome","isSafari","isEdge","isAIR","isAndroid","isChromeOS","isIOS","test","isMobile","strictCSP","useragent","buildDom","parent","refs","txt","document","createTextNode","appendChild","els","ch","el","createElement","options","childIndex","n","className","style","cssText","setAttribute","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","removeChildren","element","innerHTML","textContent","ownerDocument","createFragment","createDocumentFragment","hasCssClass","addCssClass","removeCssClass","classes","toggleCssClass","add","setCssClass","node","include","hasCssString","sheets","querySelectorAll","removeElementById","getElementById","remove","cssCache","insertPendingStyles","cache","importCssString","container","getRootNode","insertBefore","firstChild","useStrictCSP","importCssStylsheet","rel","href","scrollbarWidth","inner","width","minWidth","height","display","outer","left","overflow","body","noScrollbar","offsetWidth","withScrollbar","clientWidth","removeChild","computedStyle","getComputedStyle","setStyle","styles","property","HAS_CSS_ANIMATION","HAS_CSS_TRANSFORMS","HI_DPI","devicePixelRatio","div","transform","animationName","translate","tx","ty","round","top","dom","get","url","xhr","XMLHttpRequest","open","onreadystatechange","readyState","responseText","send","loadScript","path","s","src","onload","_","isAbort","qualifyURL","inherits","ctor","superCtor","super_","constructor","mixin","implement","proto","EventEmitter","stopPropagation","propagationStopped","preventDefault","defaultPrevented","_emit","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","type","_signal","once","on","newCallback","off","Promise","resolve","setDefaultHandler","handlers","_disabled_","old","disabled","removeDefaultHandler","pop","addEventListener","capturing","removeListener","removeEventListener","removeAllListeners","reportError","msg","data","Error","defaultEnglishMessages","messages","nlsPlaceholders","oop","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","filter","hidden","getOption","opt","warn","forwardTo","handlesSet","set","message","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","opts","setDefaultValues","optionHash","setMessages","placeholders","nls","defaultString","$id","translated","dollarMatch","curlyBracketMatch","isDark","cssClass","lang","net","workerPath","modePath","themePath","basePath","suffix","$moduleUrls","loadWorkerFromBlob","sharedPopups","hasOwnProperty","all","$modes","moduleUrl","component","parts","sep","base","re","setModuleUrl","subst","customLoader","setLoader","cb","dynamicModules","$loading","$loaded","loadModule","moduleId","onLoad","loadedModule","moduleType","load","afterLoad","loader","err","reportErrorIfPathIsNotConfigured","then","default","$require","setModuleLoader","version","config","init","scriptOptions","scriptUrl","currentScript","_currentScript","currentDocument","scripts","script","getAttribute","attributes","j","attr","m","m1","toUpperCase","Range","startRow","startColumn","endRow","endColumn","start","row","column","isEqual","range","contains","compare","compareRange","cmp","comparePoint","p","containsRange","intersects","isEnd","isStart","setStart","setEnd","inside","insideStart","insideEnd","isMultiLine","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","extend","isEmpty","clone","collapseRows","toScreenRange","session","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","comparePoints","p1","p2","Keys","MODIFIER_KEYS","KEY_MODS","FUNCTION_KEYS","PRINTABLE_KEYS","codeToKeyCode","Command","Backspace","Tab","Return","Enter","Pause","Escape","PageUp","PageDown","End","Home","Insert","Delete","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","Backquote","Minus","Equal","BracketLeft","Backslash","BracketRight","Semicolon","Quote","Comma","Period","Slash","Space","NumpadAdd","NumpadDecimal","NumpadSubtract","NumpadDivide","NumpadMultiply","chr","fromCharCode","modifiers","Shift","Control","Alt","Meta","$codeToKeyCode","parseInt","enter","escape","esc","del","mods","pow","x","keyCodeToString","keyCode","keyString","activeListenerOptions","pressedKeys","ts","getListenerOptions","createComment","passive","detectListenerOptionsSupport","EventListener","elem","destroy","addListener","destroyer","$toDestroy","getModifierHash","ctrlKey","altKey","shiftKey","metaKey","resetPressedKeys","stopEvent","getButton","button","capture","eventHandler","releaseCaptureHandler","onMouseUp","addMouseWheelListener","deltaX","deltaY","deltaMode","DOM_DELTA_PIXEL","wheelX","wheelY","DOM_DELTA_LINE","DOM_DELTA_PAGE","addMultiMouseDownListener","elements","timeouts","callbackName","startX","startY","clicks","eventNames","onMousedown","detail","isNewClick","abs","clientX","clientY","_clicks","getModifierString","addCommandKeyListener","lastDefaultPrevented","hashId","code","getModifierState","altGr","location","timeStamp","normalizeCommandKeys","postMessage","postMessageId","nextTick","win","messageName","listener","$idleBlocked","onIdle","handler","$idleBlockId","blockIdle","nextFrame","requestAnimationFrame","bind","$cancelT","lineMode","pasteCancelled","Date","now","TextInput","event","clipboard","BROKEN_SETDATA","USE_IE_MIME_TYPE","HAS_FOCUS_ARGS","MAX_LINE_LENGTH","KEYS","MODS","valueResetRegex","parentNode","host","text","opacity","copied","pasted","inComposition","sendingText","tempStyle","fontSize","commandMode","ignoreFocusEvents","lastValue","lastSelectionStart","lastSelectionEnd","lastRestoreEnd","rowStart","Number","MAX_SAFE_INTEGER","rowEnd","MIN_SAFE_INTEGER","numberOfExtraLines","isFocused","activeElement","setNumberOfExtraLines","number","setAriaLabel","ariaLabel","$textInputAriaLabel","concat","selection","cursor","setAriaOptions","activeDescendant","inline","removeAttribute","role","setLabel","onBlur","hasFocus","onFocus","resetSelection","$focusScroll","focus","renderer","enableKeyboardAccessibility","preventScroll","isTransformed","getBoundingClientRect","ancestors","t","parentElement","nodeType","blur","curOp","commandName","command","isUserAction","docChanged","selectionChanged","onCompositionEnd","positionToSelection","getLine","newValue","selectionEnd","setSelectionRange","afterContextMenu","selectionStart","getRange","lines","prevLine","nextLine","inputHandler","setInputHandler","getInputHandler","sendText","fromInput","onPaste","extendLeft","extendRight","inserted","restoreStart","restoreEnd","endIndex","shouldReset","onTextInput","onInput","onCompositionUpdate","inputType","execCommand","handleClipboardData","forceIEMime","clipboardData","mime","setData","getData","doCopy","isCut","getCopyText","onCut","onCopy","select","onCommandKey","isAllSelected","selectAll","$readOnly","cancelComposition","useTextareaForIME","markerRange","context","compositionStartOffset","closeTimeout","syncComposition","onContextMenuClose","$isMousePressed","$keepTextAreaAtCursor","$moveTextAreaToCursor","onCompositionStart","getSelectionRange","msGetInputContext","getInputContext","getElement","setCommandMode","readOnly","setReadOnly","setCopyWithEmptySelection","onContextMenu","domEvent","moveToMouse","bringToFront","characterWidth","rect","borderTopWidth","borderLeftWidth","maxTop","bottom","clientHeight","move","textInput","scroller","typingResetTimeout","typing","detectArrowKeys","$mouseHandler","isMousePressed","modifier","up","home","option","down","right","shift","commands","findKeyCommand","addIosSelectionHandler","$setUserAgentForTests","_isMobile","_isIOS","DefaultHandlers","mouseHandler","$clickSelection","editor","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","extendSelectionBy","ev","inSelection","pos","getDocumentPosition","mousedownEvent","moveToPosition","time","$focusTimeout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","y","getShiftKey","selectToPosition","anchor","orientedRange","calcRangeOrientation","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectByLinesEnd","unsetStyle","focusWait","ax","ay","bx","by","distance","sqrt","getBracketRange","getWordRange","getLineRange","getAccelKey","$lastScroll","vx","vy","allowed","prevScroll","dt","direction","canScroll","isScrollableBy","speed","scrollBy","stop","selectEnd","selectAllEnd","selectByWordsEnd","preventParentScroll","currentTarget","scrollHeight","extendStatics","__extends","d","b","setPrototypeOf","__proto__","__","__values","Symbol","iterator","next","done","CLASSNAME","Tooltip","isOpen","$element","$parentNode","$init","setText","setHtml","html","setPosition","setClassName","setTheme","theme","show","hide","getHeight","offsetHeight","getWidth","popupManager","PopupManager","popups","addPopup","popup","updatePopups","removePopup","e_1","_a","e_2","_b","sort","priority","visiblepopups","_c","_d","shouldDisplay","visiblepopups_1","visiblepopups_1_1","visiblePopup","doPopupsOverlap","e_2_1","return","e_1_1","popupA","popupB","rectA","rectB","HoverTooltip","_super","_this","lastT","idleTime","lastEvent","onMouseOut","onMouseMove","waitForHover","whiteSpace","pointerEvents","tabIndex","addToEditor","getMouseEventTarget","removeFromEditor","isOutsideOfText","$gatherData","docPos","screenPos","pixelToScreenCoordinates","clippedPos","setDataProvider","showForRange","domNode","startingEvent","$registerCloseEvents","addMarker","textToScreenCoordinates","pageX","maxHeight","labelHeight","labelWidth","spaceBelow","innerHeight","pageY","lineHeight","isAbove","innerWidth","marker","$markerSession","removeMarker","$removeCloseEvents","relatedTarget","classList","GutterHandler","tooltipTimeout","mouseEvent","gutter","$gutterLayer","tooltip","GutterTooltip","hideTooltip","moveTooltip","getRegion","selectTo","srcElement","$tooltipFollowsMouse","getLength","screenRow","$pos","documentToScreenRow","showTooltip","gutterRow","getGutterRow","gutterCell","$lines","querySelector","$gutter","visibleTooltipRow","windowWidth","windowHeight","singular","plural","security","warning","info","hint","annotation","annotationsInRow","$annotations","displayText","from","fold","getFoldLine","$showFoldedAnnotations","mostSevereAnnotationTypeInFold","annotationsInFold","severityRank","annotationType","summaryFoldedAnnotations","annotationsToSummaryString","annotationMessages","iconClassName","$useSvgGutterIcons","lineElement","iconElement","annotationLabels","tooltipElement","annotations","summary","annotationTypes_1","annotationTypes_1_1","label","MouseEvent","$inSelection","documentRow","selectionRange","DragdropHandler","dragImage","dragSelectionMarker","timerId","dragCursor","dragOperation","isInternal","autoScrollStartTime","cursorMovedTime","cursorPointOnCaretMoved","mouseTarget","counter","onDragInterval","prevCursor","vMovement","hMovement","moveCursorToPosition","calcDistance","layerConfig","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScroll","addDragMarker","toOrientedRange","getSelectionStyle","clearSelection","$cursorLayer","setBlinking","clearInterval","setInterval","clearDragMarker","fromOrientedRange","$resetCursorStyle","onDragStart","cancelDrag","draggable","self","dataTransfer","effectAllowed","getReadOnly","setDragImage","clearData","getTextRange","onDragEnd","dropEffect","setCursorStyle","onDragEnter","canAccept","getDropEffect","onDragOver","onMouseMoveTimer","onDragLeave","onDrop","moveText","dropData","insert","types","some","copyAllowed","copyModifierState","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","state","dragDrop","$dragEnabled","eventTarget","unselectable","addTouchListeners","touchStartT","longTouchTimer","animationTimer","pressed","contextMenu","mode","animationSteps","clickCount","vX","vY","createContextMenu","canExecuteCommand","cmd","canExecute","handleClick","selected","hasUndo","action","getUndoManager","replaceChild","class","readText","writeText","ontouchstart","ontouchend","onclick","showContextMenu","pagePos","leftOffset","scrollLeft","hideContextMenu","handleLongTap","selectWord","touches","h","w","touchObj","setRange","switchToSelectionMode","cursorPos","getPixelPosition","anchorPos","offsetTop","offsetLeft","weightedDistance","diff1","diff2","oldScrollTop","getScrollTop","DefaultGutterHandler","MouseHandler","$dragDelay","$mouseMoved","focusEditor","onMouseEvent","scrollBarV","scrollBarH","Boolean","gutterEl","character","mousemove","$scrollSpeed","mouseMoveHandler","which","releaseMouse","onCaptureEnd","onOperationEnd","onCaptureInterval","$onCaptureMouseMove","endOperation","startOperation","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimeout","tooltipFollowsMouse","FoldHandler","getFoldAt","removeFold","expandFold","getUseWrapMode","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","addFold","keyUtil","KeyBinding","$editor","$data","$handlers","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","args","dir","hiLevel","lastArabic","hasUBAT_B","hasUBAT_S","impTab_LTR","impTab_RTL","L","R","EN","AN","ON","B","S","AL","WS","CS","ES","ET","NSM","LRE","RLE","PDF","LRO","RLO","BN","UnicodeTBL00","UnicodeTBL20","_invertLevel","lev","levels","_array","lo","hi","tmp","_getCharClass","chars","ix","wType","nType","cType","c","rtlCandidate","_getCharacterType","uc","charCodeAt","ON_R","R_H","DOT","doBidiReorder","textCharTypes","isRtl","logicalFromVisual","bidiLevels","charTypes","impTab","prevState","newClass","newLevel","newState","condPos","_computeLevels","hasBidiCharacters","ret","getVisualFromLogicalIdx","logIdx","rowMap","bidiUtil","bidiRE","BidiHandler","bidiMap","currentRow","charWidths","EOL","showInvisibles","isRtlDir","$isRtl","wrapIndent","EOF","contentWidth","fontMetrics","rtlLineOffset","wrapOffset","isMoveLeftOperation","seenBidi","getValue","isBidiRow","docRow","splitIndex","updateRowLine","updateBidiMap","onChange","delta","getDocumentRow","rowCache","$screenRowCache","$getRowCacheIndex","$docRowCache","getSplitIndex","currentIndex","prevIndex","endOfLine","$useWrapMode","splits","$wrapData","indent","substring","size","isFullWidth","getScreenTabSize","$main","substr","markAsDirty","updateCharacterWidths","$characterSize","bidiCharWidth","$measureCharWidth","setShowInvisibles","setEolChar","eolChar","setContentWidth","isRtlLine","setRtlDirection","getCursorPosition","getSelectionAnchor","$bidiHandler","removeInLine","getPosLeft","col","leftBoundary","logicalIdx","getOverwrite","visualIdx","getSelections","startCol","endCol","level","selections","selColMin","selColMax","isSelected","isSelectedPrev","visIdx","offsetToCol","posX","charWidth","Selection","getDocument","lead","createAnchor","$silent","$cursorChanged","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","$anchorChanged","getCursor","getPosition","setAnchor","getAnchor","getSelectionLead","isBackwards","$setSelection","MAX_VALUE","anchorRow","anchorColumn","cursorRow","cursorColumn","wasEmpty","wasMultiselect","$moveSelection","mover","moveCursorTo","moveTo","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectAWord","getAWordRange","excludeLastChar","foldLine","selectLine","moveCursorBy","wouldMoveIntoSoftTab","tabSize","isTabStop","getTabSize","getNavigateWithinSoftTabs","firstColumnPosition","screenToDocumentPosition","leadingSpace","getDisplayLine","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","search","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","offsetX","lineWidgets","widget","rowsAbove","rowCount","keepDesiredColumn","moveCursorToScreen","desiredColumn","r","getRangeOfMovements","func","toJSON","rangeCount","ranges","r1","fromJSON","rangeList","toSingleRange","addRange","MAX_TOKEN_COUNT","Tokenizer","rules","splitRegex","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","flag","splitterRurles","rule","caseInsensitive","unicode","regex","adjustedregex","matchcount","token","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","digit","removeCapturingGroups","createSplitterRegexp","$setMaxTokenCount","tokens","stack","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","consumeLineEnd","merge","unshift","TextHighlightRules","addRules","prefix","nextState","$rules","getRules","embedRules","HighlightRules","escapeRules","append","$embeds","getEmbeds","pushState","popState","normalizeRules","processState","toInsert","stateName","includeName","noEscape","keywordMap","createKeywordMapper","ignoreCase","splitChar","keywords","$keywordList","list","word","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","getCurrentTokenRange","CstyleBehaviour","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","defaultQuotes","initContext","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","rowDiff","getWrapBehavioursEnabled","recordAutoInsert","isSaneInsertion","braces","recordMaybeInsert","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","openBracePos","findMatchingBracket","next_indent","$getIndent","getTabString","quotes","$mode","$quotes","lineCommentStart","quote","leftChar","rightChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","pairQuotesAfter","$pairQuotesAfter","charBefore","closeDocComment","currentToken","nextToken","cursorPosInToken","closeDocPos","openDocPos","$matchTokenType","iterator2","bracket","wordChars","Mode","$defaultBehaviour","getTokenizer","$tokenizer","$highlightRules","$highlightRuleConfig","blockComment","toggleCommentLines","ignoreBlankLines","shouldRemove","minIndent","Infinity","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","iter","fun","minEmptyLength","floor","toggleBlockComment","colDiff","initialRange","startRange","endRange","getNextLineIndent","tab","checkOutdent","input","autoOutdent","createWorker","createModeDelegates","delegations","_loop_1","scope","functionName","this_1","$delegator","method","language","transformAction","param","$behaviour","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","score","meta","LineWidgets","widgetManager","getRowLength","$getWidgetScreenLength","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","screenRows","_inDocument","removed","removeLineWidget","$updateRows","noWidgets","$oldWidget","$registerLineWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","updateFull","changedWidgets","fixedWidth","screenWidth","ceil","coverLine","getRowLineCount","lineWidgetWidth","first","gutterWidth","fullWidth","padding","scrollBar","applyDelta","docLines","doNotValidate","Anchor","$onChange","$clipPositionToDocument","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$pointsInOrder","$getTransformedPoint","$insertRight","noClip","point1","point2","equalPointsInOrder","bColIsAfter","Document","textOrLines","insertMergedLines","setValue","getAllLines","getNewLineCharacter","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","$split","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","$safeApplyDelta","docLength","MAX","to","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","scheduleStart","$updateOnChange","getState","cleanup","SearchHighlight","clazz","setRegexp","update","markerLayer","renderedMarkerRanges","MAX_RANGES","rangeToAddMarkerTo","rangeAsString","drawSingleLineMarker","UndoManager","$keepRedoStack","$maxRev","$fromUndo","$undoDepth","reset","addSession","allowMerge","$lastDelta","$redoStack","lastDeltas","undoStackLength","$undoStack","$rev","addSelection","rev","startNewGroup","markIgnored","ignore","getSelection","getRevision","getDeltas","getChangedRanges","getChangedLines","undo","dontSelect","deltaSet","swapped","swapGroups","rearrangeUndoStack","$redoStackBaseRev","undoSelectionRange","undoChanges","$syncRev","redo","diff","redoStack","deltaSets","moveDeltasByOne","rebaseRedoStack","redoSelectionRange","redoChanges","nextDelta","mark","canUndo","canRedo","bookmark","isAtBookmark","json","$prettyPrint","stringifyDelta","hasRedo","isClean","markClean","stringifyRange","swap","d1","d2","i1","i2","ds1","ds2","selectionBefore","selectionAfter","xform","c1","splitDelta","shiftPos","rowsBefore","otherLines","cloneDelta","xformed","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","walk","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","log","foldBefore","newFoldLine","foldLineNext","idxToPosition","idx","lastFoldEndColumn","RangeList","$bias","pointIndex","excludeEdges","startIndex","addList","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","Fold","subFolds","subFold","collapseChildren","addSubFold","consumePoint","afterStart","firstConsumed","consumedFolds","restoreRange","restorePoint","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","trim","lastFold","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","outermostFolds","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","getCommentFoldRange","initState","depth","getFoldWidget","getFoldWidgetRange","foldToLevel","foldAllComments","$foldStyles","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","children","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","charBeforeCursor","$findClosingBracket","getMatchingBracketRanges","bracketsRegExp","$brackets","typeRe","openBracket","valueIndex","closingBracket","valueLength","getMatchingTags","$findTagName","$findClosingTag","$findOpeningTag","found","backward","prevToken","currentTag","openTagStart","openTagName","foundOpenTagEnd","openTagEnd","closeTagStart","closeTagName","closeTagEnd","openTag","closeTag","stepCount","tmpToken","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","prevOp","$uid","bgTokenizer","onChangeFold","$onSelectionChange","onSelectionChange","setMode","destroyed","$initOperationListeners","$lastSel","$operationResetTimer","commandEvent","returnValue","currentSelection","resetCaches","$resetRowCache","cacheArray","low","mid","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$undoManager","mergeUndoDeltas","$informUndoManager","setUndoManager","JSON","parse","undoManager","history","editSession","setAnnotations","setBreakpoints","breakpoints","setScrollLeft","setScrollTop","scrollTop","$scrollLeft","$scrollTop","$syncInformUndoManager","markUndoGroup","$defaultUndoManager","setUseSoftTabs","$useSoftTabs","$indentWithTabs","setTabSize","$tabSize","setNavigateWithinSoftTabs","navigateWithinSoftTabs","$navigateWithinSoftTabs","setOverwrite","overwrite","$overwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","addDynamicMarker","markerId","getMarkers","highlight","$searchHighlight","highlightLines","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$onChangeMode","$modeId","$isPlaceholder","oldMode","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","getMode","isNaN","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","lineWidgetsWidth","force","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","$getUndoSelection","setUndoSelect","enable","isUndo","fromRange","toPosition","toRange","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","$moveLines","$clipRowToDocument","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","setUseWrapMode","useWrapMode","setWrapLimitRange","$wrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","limit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","displayLength","lastSplit","lastDocSplit","isCode","$wrapAsCode","indentedSoftWrap","$indentedSoftWrap","maxIndent","addSplit","indentation","SPACE","TAB","TAB_SPACE","getWrapIndent","minSplit","PUNCTUATION","CHAR_EXT","CHAR","maxScreenColumn","screenColumn","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","doCache","maxRow","foldStartRow","wrapRow","screenRowOffset","getScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","getPrecedingCharacter","wrap","$wrap","firstLineNumber","useSoftTabs","foldStyle","Search","$matchIterator","sr","sc","er","ec","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","$disableFakeMultiline","caseSensitive","$supportsUnicodeFlag","wholeWord","wordBoundary","firstChar","needleArray","lastChar","addWordBoundary","$assembleMultilineRegExp","backwards","forEachInLine","MultiHashHandler","$singleCommand","commandKeyBinding","addCommands","addCommand","removeCommand","bindKey","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","removeCommands","bindKeys","keyList","$keyChain","isDefault","HashHandler","CommandManager","byName","$checkCommandState","isAvailable","toggleRecording","$inReplay","recording","macro","$addCommandToMacro","oldMacro","replay","trimMacro","mac","description","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","gotoLine","prompt","$type","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","passEvent","$copyWithEmptySelection","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","autoIndent","openLink","firstLineEndCol","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","GutterKeyboardHandler","gutterLayer","activeRowIndex","activeLane","annotationTooltip","$onGutterKeyDown","$blurGutter","isRowVisible","scrollToLine","$rowToRowIndex","$cursorCell","nearestFoldIndex","$findNearestFoldWidget","nearestAnnotationIndex","$findNearestAnnotation","$focusAnnotation","$focusFoldWidget","$handleGutterKeyboardInteraction","GutterKeyboardEvent","lane","$switchLane","$rowIndexToRow","rowFoldingWidget","$blurFoldWidget","cells","childNodes","$moveFoldWidgetDown","$moveAnnotationDown","$moveFoldWidgetUp","$moveAnnotationUp","$blurAnnotation","$isFoldWidgetVisible","isRowFullyVisible","isIconVisible","$getFoldWidget","$isAnnotationVisible","$getAnnotation","foldWidget","keyboardFocusClassName","desinationLane","annotationIndex","foldWidgetIndex","cell","gutterKeyboardHandler","getKey","getRow","isInAnnotationLane","isInFoldLane","defaultCommands","Editor","getContainerElement","getTextAreaContainer","textarea","keyBinding","$search","$historyTracker","_$emitInputEvent","setSession","onStartOperation","previousCommand","onEndOperation","scrollSelectionIntoView","animateScrolling","$mergeUndoDeltas","prev","mergeableCommands","$mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onStartOperation","$onEndOperation","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","oldEditor","getSession","resize","onResize","getTheme","getFontSize","setFontSize","$highlightBrackets","$highlightPending","$bracketHighlight","markerIds","$getDirectionForHighlight","tagNamesRanges","getMatching","markerType","getHighlightIndentGuides","$textLayer","$highlightIndentGuide","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","$updateHighlightActiveLine","updateLines","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$selectionColorConflict","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","wordWithBoundary","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","nl","copyLine","inVirtualSelectionMode","isFullLine","getBehavioursEnabled","lineState","shouldOutdent","$enableAutoIndent","lineIndent","prevLineState","currIndent","composition","applyComposition","forEachSelection","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","setHighlightIndentGuides","setShowPrintMargin","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","setGhostText","removeGhostText","originalRange","$getSelectedRows","getNumberAt","_numberRx","amount","charRange","isFinite","nr","fp","decimals","nnr","toFixed","replaceRange","toggleWord","currWordStart","wordParts","curLength","itLength","that","reg","wordPairs","$toggleWordPairs","negate","firstCondition","res","findLinkAt","columnPosition","previousPosition","currentPosition","wordParts_1","wordParts_1_1","sel","endPoint","moved","totalDiff","rangeIndex","subRows","compositionState","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","center","animate","alignCursor","getCursorPositionScreen","expand","tokenCount","matchType","bracketType","brackets","tagsRanges","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","searchBox","$pixelPos","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","copyWithEmptySelection","behavioursEnabled","wrapBehavioursEnabled","enableAutoIndent","autoScrollEditorIntoView","showLineNumbers","setShowLineNumbers","$loop","CHANGE_GUTTER","$relativeLineNumbers","relativeNumberRenderer","relativeLineNumbers","$showLineNumbers","$updatePlaceholder","hasValue","$composition","placeholderNode","$placeholder","content","blurCommand","focusOnEnterKeyup","textInputAriaLabel","enableMobileMenu","$enableMobileMenu","customScrollbar","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","displayIndentGuides","highlightIndentGuides","showGutter","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","hasCssTransforms","maxPixelHeight","useResizeObserver","useSvgGutterIcons","showFoldedAnnotations","getText","lastLineNumber","$renderer","Lines","canvasHeight","cellCache","$offsetCoefficient","moveContainer","firstRowScreen","pageChanged","oldConfig","newConfig","computeLineTop","screenTop","screenPage","computeLineHeight","$cacheCell","fragment","insertAdjacentElement","createCell","initElement","Gutter","parentEl","$showFoldWidgets","$updateAnnotations","rowInfo","annoText","displayAnnoText","annoType","gutterOffset","oldLastRow","$updateCursorRow","onCreateCell","$renderCell","$updateGutterWidth","gutterRenderer","$firstLineNumber","lastLineText","$fixedWidth","$padding","$computePadding","$highlightGutterLine","$cursorRow","updateLineHighlight","scrollLines","$renderLines","textNode","annotationNode","annotationIconNode","decorations","rowText","foldClass","isClosedFold","foldAnnotationClass","annotationInFold","foldRange","getShowLineNumbers","paddingLeft","borderRightWidth","paddingRight","Marker","setPadding","setMarkers","markers","elt","css","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","childElementCount","lastChild","stringBuilder","extraStyle","curr","lineRange","range1","drawBidiSingleLineMarker","radiusClass","extraLength","textTokens","Set","isTextToken","tokenType","has","Text","$updateEolChar","EOL_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","margin","getLineHeight","$fontMetrics","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","showSpaces","showTabs","showEOL","$highlightIndentGuides","tabStr","$tabStrings","span","TAB_CHAR","$indentGuideRe","spaceClass","spaceContent","SPACE_CHAR","tabClass","tabContent","lineElements","lineElementsIdx","heightChanged","$renderLine","$renderLinesFragment","lineEl","$useLineGroups","$renderToken","valueFragment","simpleSpace","controlCharacter","cjkSpace","cjk","cloneNode","renderIndentGuide","cols","$highlightIndentGuideMarker","indentLevel","initialIndent","elementIndentLevel","currentIndent","$renderHighlightIndentGuide","$clearActiveIndentGuide","$setIndentGuideActive","$createLineElement","$renderWrappedLine","splitChars","$renderOverflowMessage","$renderSimpleLine","overflowEl","$getFoldLineTokens","lastLineEl","invisibleEl","EOF_CHAR","renderTokens","addTokens","Cursor","isVisible","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateOpacity","$startCssAnimation","animationDuration","$isAnimating","$stopCssAnimation","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","$isSmoothBlinking","blink","onScreen","isCursorInView","pixelPos","$selectionMarkers","cursorIndex","drawCursor","$setOverwrite","MAX_SCROLL_H","Scrollbar","classSuffix","setVisible","skipEvent","onScroll","coeff","VScrollBar","$scrollbarWidth","$minWidth","setHeight","setScrollHeight","setInnerHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBar","ScrollBarV","ScrollBarH","VScrollWidth","HScrollHeight","eType","mousePageY","startTop","thumbTop","scrollTopFromThumbTop","thumbHeight","pageHeight","viewHeight","slideHeight","scrollWidth","mousePageX","startLeft","thumbLeft","scrollLeftFromThumbLeft","thumbWidth","pageWidth","viewWidth","slideWidth","RenderLoop","onRender","pending","changes","$recursionLimit","_flush","change","clear","CHAR_COUNT","USE_OBSERVER","ResizeObserver","FontMetrics","$setMeasureNodeStyles","$measureNode","$addObserver","isRoot","visibility","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","$observer","observe","setPolling","disconnect","$getZoom","$initTransformMeasureNodes","transformCoordinates","clientPos","elPos","mul","solve","l1","l2","det","sub","m2","ut","u","f","Decorator","canvas","pixelRatio","heightRatio","canvasWidth","minDecorationHeight","halfMinDecorationHeight","colors","dark","light","$updateDecorators","ctx","getContext","clearRect","priorities","compensateFold","compensateFoldRows","currentY","y1","y2","yCenter","fillStyle","fillRect","GutterLayer","MarkerLayer","TextLayer","CursorLayer","HScrollBarCustom","VScrollBarCustom","editorCss","VirtualRenderer","onGutterResize","$markerBack","textLayer","$markerFront","$horizScroll","$vScroll","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","minHeight","v","$renderChanges","defaultView","CHANGE_FULL","$addResizeObserver","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","CHANGE_LINES","CHANGE_TEXT","CHANGE_MARKER","updateFontSize","$updateSizeAsync","resizing","$updateCachedSize","$resizeTimer","$changes","$customScrollbar","$updateCustomScrollbar","$extraHeight","oldSize","CHANGE_SIZE","CHANGE_SCROLL","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$printMarginEl","containerEl","posTop","posLeft","setScrollMargin","sm","setMargin","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","freeze","$frozen","unfreeze","CHANGE_H_SCROLL","st","$scrollDecorator","$updateLines","CHANGE_CURSOR","CHANGE_MARKER_FRONT","CHANGE_MARKER_BACK","$autosize","desiredHeight","$maxPixelHeight","$gutterWidth","hideScrollbars","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","_rows","$viewMargin","newLeft","newTop","topMargin","bottomMargin","$stopAnimation","currentTop","currentLeft","twoCharsWidth","alignment","$calcSteps","fromValue","toValue","x_min","STEPS","steps","initialScroll","oldSteps","$timer","endAnimation","scrollTo","canvasPos","$hasCssTransforms","$blockCursor","$useTextareaForIME","addToken","removeExtraToken","insertPosition","textChunks","$calculateWrappedTextChunks","$ghostText","widgetDiv","lastLineDiv","hiddenTokens","hideTokensAfterPosition","chunkDiv","chunkSpan","wrapped","$ghostTextWidget","pixelPosition","ghostTextHeight","textLines","displayTokens","wrapSplits","textSlice","newToken","hasPassedCursor","$themeId","$theme","background","setMouseCursor","attachToShadowRoot","$resizeObserver","contentRect","workerUrl","Worker","blob","Blob","blobBuilder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","getBlob","$workerBlob","blobURL","URL","webkitURL","createObjectURL","WorkerClient","worker","$createWorkerFromOldConfig","$sendDeltaQueue","changeListener","onMessage","callbackId","callbacks","onmessage","topLevelNamespaces","classname","importScripts","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","deltaQueue","onerror","$doc","emit","ex","attachToDocument","q","UIWorkerClient","main","emitSync","sender","messageBuffer","workerClient","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undoStackDepth","setup","other","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","otherPos","updateMarkers","updateMarker","undosRequired","isSamePoint","alt","ctrl","accel","selectionMode","isMultiSelect","mouseX","mouseY","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onSelectionInterval","selectMoreLines","selectMore","joinSelections","splitIntoLines","alignCursors","multiSelectCommands","getSelectionMarkers","$blockChangeEvents","$onAddRange","$onRemoveRange","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","startOffsetX","endOffsetX","docEnd","yBackwards","MultiSelect","$multiselectOnSessionChange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","altCursor","altDown","addAltCursorListeners","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","keepOrder","$byLines","cmdResult","anim","buf","additive","skip","screenLead","toRemove","tmp_1","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","startW","textW","endW","isLeftAligned","isRightAligned","alignLeft","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","oldWidget","gutterAnno","comparator","binarySearch","matched","findAnnotations","arrow","annoTextLine","onmousedown","Renderer","edit","_id","env","tagName","oldNode","createEditSession","VARIABLES","CURRENT_WORD","SELECTION","CURRENT_LINE","PREV_LINE","LINE_INDEX","LINE_NUMBER","SOFT_TABS","TAB_SIZE","CLIPBOARD","FILENAME","FILEPATH","FILENAME_BASE","DIRECTORY","WORKSPACE_NAME","FULLNAME","BLOCK_COMMENT_START","BLOCK_COMMENT_END","LINE_COMMENT","CURRENT_YEAR","date","year","CURRENT_YEAR_SHORT","CURRENT_MONTH","month","CURRENT_MONTH_NAME","CURRENT_MONTH_NAME_SHORT","CURRENT_DATE","day","CURRENT_DAY_NAME","weekday","CURRENT_DAY_NAME_SHORT","CURRENT_HOUR","hour","hour12","CURRENT_MINUTE","minute","CURRENT_SECOND","second","dateFormat","toLocaleString","SELECTED_TEXT","SnippetManager","snippetMap","snippetNameMap","variables","createTokenizer","TabstopToken","tabstopId","formatMatcher","fmtString","guard","snippetVar","choices","operator","formatString","expectElse","ifEnd","elseEnd","changeCase","local","formatStringVar","formatFunction","tokenizeTmSnippet","getVariableValue","tmStrFormat","fmt","fmtTokens","formatted","oldArgs","fmtParts","resolveVariables","gChangeCase","tmFormatFunction","snippet","afterNewLine","gotoNext","getDisplayTextForSnippet","snippetText","processSnippetText","insertSnippetForSelection","processedSnippet","tabstopManager","TabstopManager","selectionId","addTabstops","tabstops","insertSnippet","tabNext","$getScope","inlinePhp","getActiveScopes","scopes","includeScopes","expandWithTab","expandSnippetForSelection","snippets","findMatchingSnippet","dryRun","replaceBefore","replaceAfter","M__","matchBefore","T__","matchAfter","snippetList","startRe","endRe","triggerRe","endTriggerRe","register","wrapRegexp","guardedRegexp","addSnippet","unregister","tabTrigger","trigger","endTrigger","endGuard","removeSnippet","nameMap","parseSnippetFile","guardRe","getSnippetByName","tabString","excludeExtraIndent","parents","expanding","copyValue","$onChangeSelection","$onChangeSession","onChangeSession","$onAfterExec","onAfterExec","$openTabstops","selectedTabstop","removeTabstopMarkers","isRemove","active","parentActive","removeRange","$inChange","updateLinkedFields","hasLinkedRanges","firstNonLinked","linked","snippetManager","containsLead","containsAnchor","selectTabstop","updateTabstopMarkers","addTabstopMarkers","useLink","moveRelative","arg","snippetId","dest","movePoint","tabstop","currentSnippetId","expandSnippet","getAriaId","popupAriaRole","optionAriaRole","ariaActiveState","$singleLineEditor","$highlightTagPending","AcePopup","lastMouseEvent","noop","selectionMarker","hoverMarker","setSelectOnHover","isMouseOver","setRow","setHoverMarker","selectedNode","ariaId","caption","hideHoverMarker","suppressRedraw","getHoveredRow","lower","filterText","lastI","matchMask","isTopdown","autoSelect","tryShow","forceShow","screenHeight","maxH","dims","$borderSize","spaceAbove","fitsX","topdownOnly","goTo","where","getTextLeftOffset","$imageSize","AceInlineScreenReader","screenReaderDiv","setScreenReaderContent","completer","idString","lineIndex","_lines","codeElement","createCodeBlock","AceInline","completion","inlineScreenReader","hideInlinePreview","parForEach","fn","completed","arLength","ID_REGEX","retrievePrecedingIdentifier","retrieveFollowingIdentifier","getCompletionPrefix","completers","identifierRegexps","identifierRegex","triggerAutocomplete","previousChar","triggerCharacters","util","destroyCompleter","Autocomplete","autoInsert","autoShown","exactMatch","inlineEnabled","hasSeen","showLoadingState","stickySelectionDelay","blurListener","mousedownListener","mousewheelListener","onLayoutChange","changeTimer","updateCompletions","tooltipTimer","updateDocTooltip","popupTimer","$updatePopupPosition","stickySelectionTimer","stickySelection","$firstOpenTimer","initialPosition","completionProvider","completions","FilteredList","completionsForLoading","openPopup","insertMatch","$onPopupShow","$onHidePopup","$onPopupChange","mouseOutListener","$onPopupRender","$initInline","inlineRenderer","getPopup","hideDocTooltip","$seen","onSeen","$updateGhostText","filtered","observeLayoutChanges","$elements","unObserveLayoutChanges","posGhostText","editorContainerBottom","lowestPosition","keepPopupPosition","newRow","oldRow","previousSelectedItem","tooltipNode","activated","fromTooltip","getCompletionProvider","showPopup","CompletionProvider","gatherCompletions","setFilter","completionOptions","ignoreCaption","provideCompletions","finished","emptyMessage","completionsForEmpty","completersLength","getDocTooltip","completerId","docText","docHTML","showDocTooltip","overscrollBehavior","onblur","onTooltipClick","nodeName","for","deleteSuffix","startCommand","insertByIndex","$insertString","onInsert","total","results","processResults","isImmediate","immediateResults","filterCompletions","$score","localeCompare","items","upper","loop","penalty","fullMatchIndex","wordDistance","prefixPos","getWordIndex","wordScores","currentWord","wordScore","textCompleter","keyWordCompleter","snippetCompleter","record","p3","setCompleters","addCompleter","lastExecEvent","loadSnippetsForMode","files","loadSnippetFile","snippetFileId","modes","snippetFilePath","doLiveAutocomplete","hasCompleter","$liveAutocompletionDelay","liveAutocompleteTimer","showLiveAutocomplete","$liveAutocompletionThreshold","enableBasicAutocompletion","enableLiveAutocompletion","liveAutocompletionDelay","liveAutocompletionThreshold","enableSnippets","DocCommentHighlightRules","getTagRule","getStartRule","getEndRule","PerlHighlightRules","keywordMapper","PythonHighlightRules","strPre","strRawPre","strFormatPre","strRawFormatPre","integer","intPart","pointFloat","floatNumber","stringEscape","JsonHighlightRules","JsDocCommentHighlightRules","identifierRe","JavaScriptHighlightRules","escapedRe","anonymousFunctionRe","functionCallStartRule","comments","noES6","no_regex","jsx","JSX","tagRegex","jsxTag","jsxJsRule","jsxAttributes","reference","PgsqlHighlightRules","sqlRules","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","defaults","Cancel","reject","onCanceled","requestData","requestHeaders","headers","responseType","cancelToken","unsubscribe","signal","isFormData","request","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","response","status","statusText","paramsSerializer","responseURL","onabort","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","read","xsrfHeaderName","setRequestHeader","isUndefined","onDownloadProgress","onUploadProgress","upload","abort","subscribe","aborted","Axios","mergeConfig","axios","createInstance","defaultConfig","instance","instanceConfig","CancelToken","isCancel","VERSION","promises","spread","isAxiosError","__CANCEL__","executor","resolvePromise","promise","_listeners","onfulfilled","_resolve","reason","throwIfRequested","InterceptorManager","dispatchRequest","validator","validators","interceptors","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","fulfilled","rejected","responseInterceptorChain","onFulfilled","onRejected","getUri","use","eject","isAbsoluteURL","combineURLs","requestedURL","enhanceError","transformData","throwIfCancellationRequested","transformRequest","common","adapter","transformResponse","fileName","columnNumber","config1","config2","getMergedValue","isPlainObject","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","rawValue","parser","encoder","isString","stringify","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","encode","serializedParams","isDate","toISOString","hashmarkIndex","relativeURL","write","expires","domain","secure","cookie","isNumber","toGMTString","decodeURIComponent","originURL","msie","urlParsingNode","resolveURL","protocol","hash","hostname","port","pathname","requestURL","parsed","normalizedName","ignoreDuplicateOf","thing","deprecatedWarnings","formatMessage","desc","schema","allowUnknown","getPrototypeOf","isFunction","FormData","ArrayBuffer","isView","pipe","URLSearchParams","product","assignValue","stripBOM","functional","render","_h","_vm","_v","classNames","staticClass","staticStyle","attrs","rest","__assign","__awaiter","_arguments","P","generator","adopt","step","__generator","g","sent","trys","ops","verb","op","__spreadArray","pack","ar","Bounds","fromClientRect","clientRect","windowBounds","fromDOMRectList","domRectList","domRect","EMPTY","parseBounds","parseDocumentSize","toCodePoints$1","codePoints","extra","fromCodePoint$1","_i","fromCodePoint","codeUnits","codePoint","chars$2","lookup$2","Uint8Array","i$2","chars$1$1","lookup$1$1","i$1$1","decode$1","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","bytes","polyUint16Array$1","polyUint32Array$1","UTRIE2_SHIFT_2$1","UTRIE2_SHIFT_1$1","UTRIE2_INDEX_SHIFT$1","UTRIE2_LSCP_INDEX_2_OFFSET$1","UTRIE2_DATA_MASK$1","UTRIE2_INDEX_1_OFFSET$1","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1","UTRIE2_INDEX_2_MASK$1","slice16$1","view","Uint16Array","slice32$1","Uint32Array","createTrieFromBase64$1","_byteLength","view32","view16","headerLength","Trie$1","Trie","errorValue","highStart","highValueIndex","chars$3","lookup$3","i$3","LETTER_NUMBER_MODIFIER","BK","CR$1","LF$1","CM","NL","WJ","ZW","GL","SP","ZWJ$1","B2","BA","BB","HY","CB","CL","CP","EX","IN","NS","OP","QU","IS","NU","PO","PR","SY","AI","CJ","EB","EM","H2","H3","HL","ID","JL","JV","JT","RI$1","SA","XX","ea_OP","BREAK_MANDATORY","BREAK_NOT_ALLOWED$1","BREAK_ALLOWED$1","UnicodeTrie$1","ALPHABETICS","HARD_LINE_BREAKS","SPACE$1","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","codePointsToCharacterClasses","lineBreak","indices","categories","classType","isAdjacentWithSpaceIgnored","classTypes","current","previousNonSpaceClassType","_lineBreakAtIndex","indicies","forbiddenBreaks","beforeIndex","afterIndex","cssFormattedClasses","wordBreak","isLetterNumber","forbiddenBreakpoints","letterNumber","Break","required","LineBreaker","nextIndex","FLAG_UNRESTRICTED","FLAG_ID","FLAG_INTEGER","FLAG_NUMBER","LINE_FEED","SOLIDUS","REVERSE_SOLIDUS","CHARACTER_TABULATION","QUOTATION_MARK","EQUALS_SIGN","NUMBER_SIGN","DOLLAR_SIGN","PERCENTAGE_SIGN","APOSTROPHE","LEFT_PARENTHESIS","RIGHT_PARENTHESIS","LOW_LINE","HYPHEN_MINUS","EXCLAMATION_MARK","LESS_THAN_SIGN","GREATER_THAN_SIGN","COMMERCIAL_AT","LEFT_SQUARE_BRACKET","RIGHT_SQUARE_BRACKET","CIRCUMFLEX_ACCENT","LEFT_CURLY_BRACKET","QUESTION_MARK","RIGHT_CURLY_BRACKET","VERTICAL_LINE","TILDE","CONTROL","REPLACEMENT_CHARACTER","ASTERISK","PLUS_SIGN","COMMA","COLON","SEMICOLON","FULL_STOP","NULL","BACKSPACE","LINE_TABULATION","SHIFT_OUT","INFORMATION_SEPARATOR_ONE","DELETE","ZERO","z","A","E","F","U","Z","isDigit","isSurrogateCodePoint","isHex","isLowerCaseLetter","isUpperCaseLetter","isLetter","isNonASCIICodePoint","isWhiteSpace","isNameStartCodePoint","isNameCodePoint","isNonPrintableCodePoint","isValidEscape","c2","isIdentifierStart","c3","isNumberStart","stringToNumber","sign","integers","int","fraction","fracd","frac","expsign","exponent","exp","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","SUFFIX_MATCH_TOKEN","PREFIX_MATCH_TOKEN","COLUMN_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUBSTRING_MATCH_TOKEN","BAD_URL_TOKEN","BAD_STRING_TOKEN","CDO_TOKEN","CDC_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","_value","consumeToken","consumeCodePoint","consumeStringToken","peekCodePoint","flags","consumeName","reconsumeCodePoint","consumeNumericToken","e1","e2","e3","consumeIdentLikeToken","a1","a2","a3","u1","u2","consumeUnicodeRangeToken","consumeWhiteSpace","digits","questionMarks","endDigits","consumeUrlToken","stringToken","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","SLICE_STACK_SIZE","endingCodePoint","consumeNumber","repr","unit","hex","hexCodePoint","Parser","_tokens","parseValue","parseComponentValue","parseValues","parseComponentValues","SyntaxError","reconsumeToken","consumeComponentValue","consumeSimpleBlock","consumeFunction","block","isEndingTokenFor","functionToken","cssFunction","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","isLength","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","DEG","GRAD","RAD","TURN","angle","_context","PI","isAngle","parseNamedSide","ident","deg","color$1","colorFunction","SUPPORTED_COLOR_FUNCTIONS","namedColor","COLORS","TRANSPARENT","isTransparent","color","asString","alpha","blue","green","red","getTokenColorValue","rgb","hue2rgb","t1","t2","hue","hsl","saturation","lightness","hsla","rgba","parseColor","ALICEBLUE","ANTIQUEWHITE","AQUA","AQUAMARINE","AZURE","BEIGE","BISQUE","BLACK","BLANCHEDALMOND","BLUE","BLUEVIOLET","BROWN","BURLYWOOD","CADETBLUE","CHARTREUSE","CHOCOLATE","CORAL","CORNFLOWERBLUE","CORNSILK","CRIMSON","CYAN","DARKBLUE","DARKCYAN","DARKGOLDENROD","DARKGRAY","DARKGREEN","DARKGREY","DARKKHAKI","DARKMAGENTA","DARKOLIVEGREEN","DARKORANGE","DARKORCHID","DARKRED","DARKSALMON","DARKSEAGREEN","DARKSLATEBLUE","DARKSLATEGRAY","DARKSLATEGREY","DARKTURQUOISE","DARKVIOLET","DEEPPINK","DEEPSKYBLUE","DIMGRAY","DIMGREY","DODGERBLUE","FIREBRICK","FLORALWHITE","FORESTGREEN","FUCHSIA","GAINSBORO","GHOSTWHITE","GOLD","GOLDENROD","GRAY","GREEN","GREENYELLOW","GREY","HONEYDEW","HOTPINK","INDIANRED","INDIGO","IVORY","KHAKI","LAVENDER","LAVENDERBLUSH","LAWNGREEN","LEMONCHIFFON","LIGHTBLUE","LIGHTCORAL","LIGHTCYAN","LIGHTGOLDENRODYELLOW","LIGHTGRAY","LIGHTGREEN","LIGHTGREY","LIGHTPINK","LIGHTSALMON","LIGHTSEAGREEN","LIGHTSKYBLUE","LIGHTSLATEGRAY","LIGHTSLATEGREY","LIGHTSTEELBLUE","LIGHTYELLOW","LIME","LIMEGREEN","LINEN","MAGENTA","MAROON","MEDIUMAQUAMARINE","MEDIUMBLUE","MEDIUMORCHID","MEDIUMPURPLE","MEDIUMSEAGREEN","MEDIUMSLATEBLUE","MEDIUMSPRINGGREEN","MEDIUMTURQUOISE","MEDIUMVIOLETRED","MIDNIGHTBLUE","MINTCREAM","MISTYROSE","MOCCASIN","NAVAJOWHITE","NAVY","OLDLACE","OLIVE","OLIVEDRAB","ORANGE","ORANGERED","ORCHID","PALEGOLDENROD","PALEGREEN","PALETURQUOISE","PALEVIOLETRED","PAPAYAWHIP","PEACHPUFF","PERU","PINK","PLUM","POWDERBLUE","PURPLE","REBECCAPURPLE","RED","ROSYBROWN","ROYALBLUE","SADDLEBROWN","SALMON","SANDYBROWN","SEAGREEN","SEASHELL","SIENNA","SILVER","SKYBLUE","SLATEBLUE","SLATEGRAY","SLATEGREY","SNOW","SPRINGGREEN","STEELBLUE","TAN","TEAL","THISTLE","TOMATO","TURQUOISE","VIOLET","WHEAT","WHITE","WHITESMOKE","YELLOW","YELLOWGREEN","backgroundClip","backgroundColor","format","parseColorStop","processColorStops","stops","lineLength","processStops","stop_1","absoluteValue","gapBegin","stop_2","gapLength","gapValue","getAngleFromCorner","corner","centerX","centerY","atan2","calculateGradientDirection","radian","sin","cos","halfWidth","halfHeight","halfLineLength","yDiff","xDiff","findCorner","closest","reduce","stat","cx","cy","optimumDistance","optimumCorner","calculateRadius","gradient","rx","ry","shape","prefixLinearGradient","angle$1","firstToken","colorStop","CLOSEST_SIDE","FARTHEST_SIDE","CLOSEST_CORNER","FARTHEST_CORNER","CIRCLE","ELLIPSE","COVER","CONTAIN","prefixRadialGradient","isColorStop","acc","isLinearGradient","isRadialGradient","image","image_1","addImage","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","isSupportedImage","BACKGROUND_SIZE","isAtPosition_1","backgroundImage","backgroundOrigin","backgroundPosition","backgroundRepeat","parseBackgroundRepeat","LINE_BREAK","backgroundSize","isBackgroundSizeInfoToken","borderColorForSide","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderStyleForSide","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","borderBottomWidth","bit","parseDisplayValue","float","letterSpacing","WORD_BREAK","STRICT","NORMAL","listStyleImage","listStylePosition","listStyleType","marginForSide","marginTop","marginRight","marginBottom","marginLeft","overflowWrap","paddingForSide","paddingTop","paddingBottom","textAlign","textShadow","shadow","offsetY","textTransform","transform$1","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix","matrix3d","b1","b2","a4","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","BREAK_ALL","KEEP_ALL","auto","order","textDecorationColor","textDecorationLine","accumulator","fontVariant","fontStyle","counterIncrement","increments","increment","counterReset","resets","duration","open_1","close_1","close","getQuote","boxShadow","inset","paintOrder","layers","webkitTextStrokeColor","webkitTextStrokeWidth","CSSParsedDeclaration","declaration","cssFloat","overflowTuple","overflowX","overflowY","textDecoration","isPositioned","isPositionedWithZIndex","isFloating","isInlineLevel","CSSParsedPseudoDeclaration","CSSParsedCounterDeclaration","descriptor","length_1","value_1","elementDebuggerAttribute","getElementDebugType","isDebugging","elementType","ElementContainer","textNodes","isHTMLElementNode","bounds","chars$1","lookup$1","i$1","decode","polyUint16Array","polyUint32Array","UTRIE2_SHIFT_2","UTRIE2_SHIFT_1","UTRIE2_INDEX_SHIFT","UTRIE2_LSCP_INDEX_2_OFFSET","UTRIE2_DATA_MASK","UTRIE2_INDEX_1_OFFSET","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH","UTRIE2_INDEX_2_MASK","slice16","slice32","createTrieFromBase64","PseudoElementType","Prepend","CR","LF","Extend","SpacingMark","V","T","LV","LVT","ZWJ","Extended_Pictographic","RI","toCodePoints","UnicodeTrie","BREAK_NOT_ALLOWED","BREAK_ALLOWED","codePointToClass","_graphemeBreakAtIndex","_codePoints","countRI","GraphemeBreaker","graphemeBreak","splitGraphemes","bk","breaker","graphemes","testRangeBounds","TEST_HEIGHT","createRange","testElement","selectNode","rangeBounds","rangeHeight","testIOSLineBreak","wordSpacing","textList","supports","every","boundAhead","testCORS","Image","crossOrigin","testResponseType","testSVG","img","drawImage","toDataURL","isGreenPixel","testForeignObject","greenImageSrc","svg","createForeignObjectSVG","loadSerializedSVG$1","getImageData","catch","xmlns","foreignObject","setAttributeNS","XMLSerializer","serializeToString","FEATURES","SUPPORT_RANGE_BOUNDS","SUPPORT_WORD_BREAKING","SUPPORT_SVG_DRAWING","SUPPORT_FOREIGNOBJECT_DRAWING","fetch","SUPPORT_CORS_IMAGES","SUPPORT_RESPONSE_TYPE","SUPPORT_CORS_XHR","SUPPORT_NATIVE_TEXT_SEGMENTATION","Intl","Segmenter","TextBounds","parseTextBounds","breakText","textBounds","clientRects","getClientRects","subSegments","segmentGraphemes","subOffset_1","subSegment","replacementNode","splitText","getWrapperBounds","wrapper","segmenter","granularity","segment","segmentWords","breakWords","wordSeparators","word_1","TextContainer","CAPITALIZE","capitalize","ImageElementContainer","currentSrc","intrinsicWidth","naturalWidth","intrinsicHeight","naturalHeight","CanvasElementContainer","SVGElementContainer","baseVal","LIElementContainer","OLElementContainer","reversed","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","reformatInputBounds","getInputValue","PASSWORD","CHECKBOX","RADIO","INPUT_COLOR","InputElementContainer","checked","SelectElementContainer","selectedIndex","TextareaElementContainer","IFrameElementContainer","iframe","contentWindow","tree","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","parseNodeTree","childNode","nextNode","nextSibling","isTextNode","isElementNode","isSlotElement","assignedNodes","createContainer","createsRealStackingContext","createsStackingContext","slot","shadowRoot","isTextareaElement","isSVGElement","isSelectElement","isImageElement","isCanvasElement","isLIElement","isOLElement","isInputElement","isIFrameElement","isBodyElement","Node","TEXT_NODE","ELEMENT_NODE","isSVGElementNode","isHTMLElement","isVideoElement","isStyleElement","isScriptElement","isCustomElement","CounterState","counters","getCounterValue","getCounterValues","canReset","entry","counterNames","ROMAN_UPPER","ARMENIAN","HEBREW","GEORGIAN","createAdditiveCounter","symbols","fallback","createCounterText","createCounterStyleWithSymbolResolver","codePointRangeLength","isNumeric","resolver","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","createCounterStyleFromSymbols","CJK_ZEROS","CJK_TEN_COEFFICIENTS","CJK_TEN_HIGH_COEFFICIENTS","CJK_HUNDRED_COEFFICIENTS","createCJKCounter","numbers","multipliers","negativeSign","coefficient","CHINESE_INFORMAL_MULTIPLIERS","CHINESE_FORMAL_MULTIPLIERS","JAPANESE_NEGATIVE","KOREAN_NEGATIVE","appendSuffix","defaultSuffix","cjkSuffix","koreanSuffix","spaceSuffix","IGNORE_ATTRIBUTE","DocumentCloner","scrolledElements","referenceElement","quoteDepth","toIFrame","windowSize","createIFrameContainer","scrollX","pageXOffset","scrollY","pageYOffset","cloneWindow","documentClone","iframeLoad","iframeLoader","onclone","restoreNodeScroll","logger","clonedReferenceElement","fonts","ready","imagesReady","serializeDoctype","doctype","restoreOwnerScroll","adoptNode","createElementClone","createCanvasClone","createVideoClone","createStyleClone","srcset","loading","createCustomElementClone","copyCSSStyles","sheet","cssRules","inlineImages","clonedCanvas","clonedCtx","allowTaint","putImageData","gl","attribs","getContextAttributes","preserveDrawingBuffer","video","blankCanvas","appendChildNode","child","copyStyles","hasAttribute","ignoreElements","cloneChildNodes","assignedNode","transitionProperty","styleBefore","styleAfter","createPseudoHideStyles","resolvePseudoContent","BEFORE","AFTER","pseudoElt","anonymousReplacedElement","counterStyle","counterState","counterType","delim","counterStates","counterType_1","separator","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","newClassName","baseValue","CORNER","cloneIframeContainer","border","scrolling","imageReady","complete","images","interval","ignoredStyleProperties","setProperty","getPropertyValue","internalSubset","publicId","systemId","PSEUDO_BEFORE","PSEUDO_AFTER","PSEUDO_HIDE_ELEMENT_STYLE","createStyles","CacheStorage","getOrigin","link","_link","isSameOrigin","_origin","setContext","Cache","_options","_cache","isBlobImage","isRenderable","loadImage","useCORS","useProxy","isInlineImage","proxy","debug","isInlineBase64Image","imageTimeout","reader_1","FileReader","readAsDataURL","queryString","timeout_1","INLINE_SVG","INLINE_BASE64","INLINE_IMG","isSVG","Vector","lerp","BezierCurve","startControl","endControl","subdivide","firstHalf","ab","bc","cd","abbc","bccd","isBezierCurve","BoundCurves","tlh","tlv","trh","trv","brh","brv","blh","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","topLeftBorderDoubleOuterBox","getCurvePoints","TOP_LEFT","topRightBorderDoubleOuterBox","TOP_RIGHT","bottomRightBorderDoubleOuterBox","BOTTOM_RIGHT","bottomLeftBorderDoubleOuterBox","BOTTOM_LEFT","topLeftBorderDoubleInnerBox","topRightBorderDoubleInnerBox","bottomRightBorderDoubleInnerBox","bottomLeftBorderDoubleInnerBox","topLeftBorderStroke","topRightBorderStroke","bottomRightBorderStroke","bottomLeftBorderStroke","topLeftBorderBox","topRightBorderBox","bottomRightBorderBox","bottomLeftBorderBox","topLeftPaddingBox","topRightPaddingBox","bottomRightPaddingBox","bottomLeftPaddingBox","topLeftContentBox","topRightContentBox","bottomRightContentBox","bottomLeftContentBox","r2","kappa","ox","oy","xm","ym","calculateBorderBoxPath","curves","calculateContentBoxPath","calculatePaddingBoxPath","TransformEffect","ClipEffect","OpacityEffect","isTransformEffect","effect","isClipEffect","isOpacityEffect","equalPath","transformPath","deltaW","deltaH","StackingContext","inlineLevel","nonInlineLevel","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","ElementPaint","effects","borderBox","paddingBox","getEffects","inFlow","croplessEffects","parseStackTree","stackingContext","realStackingContext","listItems","treatAsRealStackingContext","paintContainer","listOwnerItems","parentStack","order_1","index_1","index_2","processListItems","owner","numbering","listValue","parseStackingContexts","parsePathForBorder","borderSide","createPathFromCurves","parsePathForBorderDoubleOuter","parsePathForBorderDoubleInner","parsePathForBorderStroke","createStrokePathFromCurves","outer1","outer2","inner1","inner2","contentBox","calculateBackgroundPositioningArea","calculateBackgroundPaintingArea","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","AUTO","hasIntrinsicValue","intrinsicProportion","hasIntrinsicProportion","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","width_3","height_3","SMALL_IMAGE","SAMPLE_TEXT","_data","_document","parseMetrics","verticalAlign","baseline","middle","getMetrics","MASK_OFFSET","CanvasRenderer","_activeEffects","scale","textBaseline","applyEffects","popEffect","applyEffect","save","globalAlpha","clip","restore","renderStack","renderStackContent","renderNode","paint","renderNodeBackgroundAndBorders","renderNodeContent","renderTextWithLetterSpacing","fillText","letter","measureText","createFontStyle","variant","fixIOSSystemFonts","renderTextNode","paintOrderLayer","textShadows","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","strokeStyle","lineWidth","lineJoin","chrome","strokeText","renderReplacedElement","box","beginPath","arc","isTextInputElement","canvasTextAlign","_e","_f","_g","_j","_k","_l","_m","_o","_p","mask","paths","lineTo","formatPath","closePath","bezierCurveTo","renderRepeat","pattern","resizeImage","renderBackgroundImage","x0","x1","y0","gradient_1","top_1","radialGradient_1","midX","midY","invF","createPattern","createLinearGradient","addColorStop","createRadialGradient","renderSolidBorder","curvePoints","renderDoubleBorder","outerPaths","innerPaths","hasBackground","borders","borders_1","calculateBackgroundCurvedPaintingArea","borderBoxArea","maskOffset","shadowPaintingArea","renderDashedDottedBorder","strokePaths","boxPaths","endX","endY","dashLength","spaceLength","useLineDash","multiplier","numberOfDashes","maxSpace","path1","path2","setLineDash","lineCap","stroke","iOSBrokenFonts","fontFamilies","ForeignObjectRenderer","loadSerializedSVG","Logger","getTime","instances","Context","instanceName","instanceCount","logging","html2canvas","renderElement","resourceOptions","contextOptions","windowOptions","foreignObjectRendering","cloneOptions","documentCloner","clonedElement","renderOptions","_q","_r","_s","_t","_u","parseBackgroundColor","removeContainer","backgroundColorOverride","defaultBackgroundColor","factory","_class","escapeRE","defaultOptions","fuzzyLink","fuzzyEmail","fuzzyIP","defaultSchemas","validate","tail","http","src_auth","src_host_port_strict","src_path","no_http","src_domain","src_domain_root","src_port","src_host_terminator","mailto","src_email_name","src_host_strict","tlds_2ch_src_re","tlds_default","compile","__opts__","tlds","__tlds__","untpl","tpl","src_tlds","onCompile","__tlds_replaced__","src_xn","email_fuzzy","tpl_email_fuzzy","link_fuzzy","tpl_link_fuzzy","link_no_ip_fuzzy","tpl_link_no_ip_fuzzy","host_fuzzy_test","tpl_host_fuzzy_test","aliases","schemaError","__compiled__","__schemas__","compiled","isRegExp","createValidator","normalize","alias","slist","schema_test","src_ZPCc","schema_search","pretest","__index__","__text_cache__","resetScanCache","Match","__last_index__","__schema__","raw","createMatch","LinkifyIt","schemas","definition","ml","me","tld_pos","testSchemaAt","keepOld","src_Any","src_Cc","src_Z","src_P","src_ZCc","text_separators","src_pseudo_letter","src_ip4","src_host","tpl_host_fuzzy","tpl_host_no_ip_fuzzy","tpl_host_fuzzy_strict","tpl_host_port_fuzzy_strict","tpl_host_port_no_ip_fuzzy_strict","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","Function","objectToString","nativeMax","nativeMin","toNumber","isObjectLike","isSymbol","valueOf","isBinary","wait","lastArgs","lastThis","maxWait","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","leadingEdge","flush","patternsConfig","leftDelimiter","rightDelimiter","allowedAttributes","ii","isArrayOfObjects","childTests","tt","isArrayOfFunctions","md","options_","patterns","core","ruler","tests","__hr","hasDelimiters","getAttrs","addAttrs","removeDelimiter","endChar","attrToken","tableOpen","getMatchingOpeningToken","tr","th","colsnum","calc","attrGet","num","one","real","attrSet","nesting","openingToken","trimmed","markup","allowedKeyChars","parsingKey","valueInsideQuotes","char_","attrPair","allowedAttribute","attrJoin","attrPush","minCurlyLength","nextChar","rightDelimiterMinimumShift","curly","isClass","isId","validCurlyLength","HTML_ESCAPE_TEST_RE","HTML_ESCAPE_REPLACE_RE","HTML_REPLACEMENTS","replaceUnsafeChar","escapeHtml","emoji_html","emoji_replace","normalize_opts","defs","shortcuts","emoji","scanRE","replaceRE","emojies_defs","emojies_shortcuts","bare_emoji_plugin","angry","blush","broken_heart","confused","cry","frowning","heart","imp","innocent","joy","kissing","laughing","neutral_face","open_mouth","rage","smile","smiley","smiling_imp","sob","stuck_out_tongue","sunglasses","sweat","sweat_smile","unamused","wink","emojies","names","arrayReplaceAt","ucm","lib","ucmicro","ZPCc","Cc","splitTextToken","Token","last_pos","nodes","emoji_name","blockTokens","autolinkLevel","open_tag","close_tag","HTML_TAG_RE","HTML_OPEN_CLOSE_TAG_RE","_hasOwnProperty","object","isValidEntityCode","surrogate1","surrogate2","UNESCAPE_MD_RE","UNESCAPE_ALL_RE","DIGITAL_ENTITY_TEST_RE","entities","REGEXP_ESCAPE_RE","UNICODE_PUNCT_RE","mdurl","unescapeMd","unescapeAll","escaped","entity","replaceEntityPattern","newElements","isSpace","isMdAsciiPunct","isPunctChar","normalizeReference","parseLinkLabel","parseLinkDestination","parseLinkTitle","ok","disableNested","prevPos","labelEnd","posMax","oldPos","skipToken","helpers","ParserCore","ParserBlock","ParserInline","punycode","zero","commonmark","BAD_PROTO_RE","GOOD_DATA_RE","validateLink","RECODE_HOSTNAME_FOR","normalizeLink","toASCII","normalizeLinkText","toUnicode","MarkdownIt","presetName","linkify","configure","presets","components","enableOnly","rules2","ruler2","ignoreInvalid","missed","disable","plugin","State","parseInline","inlineMode","renderInline","Ruler","_rules","tokenize","hasEmptyLines","maxNesting","skipEmptyLines","sCount","blkIndent","tight","outTokens","lineMax","Core","_rules2","pushPending","xhtmlOut","breaks","langPrefix","typographer","default_rules","code_inline","slf","renderAttrs","code_block","fence","highlighted","tmpAttrs","langName","attrIndex","renderInlineAsText","renderToken","hardbreak","softbreak","html_block","html_inline","needLf","__rules__","__cache__","__find__","__compile__","chains","altName","at","beforeName","ruleName","afterName","chainName","silent","adjustTab","initial","lastLineEmpty","oldBMarks","oldBSCount","oldIndent","oldParentType","oldSCount","oldTShift","spaceAfterMarker","terminatorRules","wasOutdented","oldLineMax","bMarks","tShift","eMarks","bsCount","parentType","mem","haveEndMarker","skipChars","skipSpaces","skipSpacesBack","skipCharsBack","cnt","block_names","HTML_SEQUENCES","lineText","skipBulletListMarker","skipOrderedListMarker","contentStart","indentAfterMarker","isOrdered","itemLines","listLines","listTokIdx","markerCharCode","markerValue","oldListIndent","oldTight","posAfterMarker","prevEmptyEnd","isTerminatingParagraph","listIndent","markTightParagraphs","_endLine","destEndPos","destEndLineNo","title","references","StateBlock","indent_found","ddIndent","begin","keepLastLF","queue","lineStart","escapedSplit","escapes","lastPos","backTicked","lastBackTick","columns","columnCount","aligns","tableLines","tbodyLines","tok","isLinkClose","ln","htmlLinkLevel","fullUrl","urlText","links","NEWLINES_RE","NULL_RE","RARE_RE","SCOPED_ABBR_TEST_RE","SCOPED_ABBR_RE","SCOPED_ABBR","tm","replaceFn","replace_scoped","inlineTokens","inside_autolink","replace_rare","blkIdx","QUOTE_TEST_RE","QUOTE_RE","replaceAt","process_inlines","thisLevel","isLastPunctChar","isNextPunctChar","isLastWhiteSpace","isNextWhiteSpace","canOpen","canClose","isSingle","openQuote","closeQuote","OUTER","single","StateCore","EMAIL_RE","AUTOLINK_RE","linkMatch","emailMatch","matchStart","matchEnd","processDelimiters","delimiters","closerIdx","openerIdx","closer","opener","minOpenerIdx","newMinOpenerIdx","isOddMatch","lastJump","openersBottom","jump","tokens_meta","postProcess","startDelim","endDelim","isStrong","scanned","scanDelims","can_open","can_close","DIGITAL_RE","NAMED_RE","ESCAPED","lc","labelStart","ref","parseReference","pmax","StateInline","pendingLevel","_prev_delimiters","token_meta","canSplitWord","left_flanking","right_flanking","loneMarkers","isTerminatorChar","attrData","decodeCache","exclude","defaultChars","getDecodeCache","seq","b3","componentChars","encodeCache","keepEscaped","nextCode","getEncodeCache","slashes","Url","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","hostlessProtocol","slashedProtocol","slashesDenoteHost","lowerProto","hec","simplePath","atSign","hostEnd","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","qm","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","RangeError","mapDomain","encoded","ucs2decode","ucs2encode","digitToBasic","adapt","numPoints","firstTime","baseMinusTMin","inputLength","bias","basic","oldi","baseMinusT","out","currentValue","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","Any","Cf","Timer","startedAt","pause","resume","positions","TOP","BOTTOM","bus","Map","Componentvue_type_script_lang_js_","dismissible","onDismiss","onClick","pauseOnHover","isActive","parentTop","parentBottom","isHovered","beforeMount","setupContainer","mounted","showNotice","dismiss","methods","shouldQueue","queueTimer","$destroy","$el","correctParent","whenClicked","toggleTimer","newVal","computed","transition","leave","beforeDestroy","scriptExports","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","_injectStyles","originalRender","existing","beforeCreate","normalizeComponent","directives","rawName","expression","$event","domProps","Component","api","Vue","globalOptions","propsData","install","$toast","deepFreeze","delete","getOwnPropertyNames","isFrozen","Response","isMatchIgnored","ignoreMatch","inherit$1","objects","emitsWrappingTags","HTMLRenderer","classPrefix","addText","openNode","pieces","scopeToCSSClass","closeNode","newNode","TokenTree","rootNode","closeAllNodes","builder","_walk","_collapse","TokenTreeEmitter","super","startScope","endScope","__addSublanguage","emitter","toHTML","finalize","lookahead","anyNumberOfTimes","optional","either","stripOptionsFromArgs","countMatchGroups","BACKREF_RE","_rewriteBackreferences","regexps","joinWith","numCaptures","IDENT_RE","UNDERSCORE_IDENT_RE","NUMBER_RE","C_NUMBER_RE","BINARY_NUMBER_RE","BACKSLASH_ESCAPE","relevance","APOS_STRING_MODE","illegal","QUOTE_STRING_MODE","COMMENT","modeOptions","excludeBegin","ENGLISH_WORD","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","HASH_COMMENT_MODE","NUMBER_MODE","C_NUMBER_MODE","BINARY_NUMBER_MODE","REGEXP_MODE","TITLE_MODE","UNDERSCORE_TITLE_MODE","METHOD_GUARD","MODES","END_SAME_AS_BEGIN","resp","_beginMatch","MATCH_NOTHING_RE","PHRASAL_WORDS_MODE","RE_STARTERS_RE","SHEBANG","beginShebang","binary","skipIfHasPrecedingDot","scopeClassName","_parent","beginKeywords","__beforeBegin","compileIllegal","compileMatch","compileRelevance","beforeMatchExt","beforeMatch","starts","originalMode","endsParent","COMMON_KEYWORDS","DEFAULT_KEYWORD_SCOPE","compileKeywords","rawKeywords","scopeName","compiledKeywords","compileList","keywordList","keyword","scoreForKeyword","providedScore","commonKeyword","seenDeprecations","deprecated","MultiClassError","remapScopeNames","regexes","scopeNames","_multi","MultiClass","beginScope","scopeSugar","_wrap","returnBegin","beginMultiClass","excludeEnd","returnEnd","endMultiClass","compileLanguage","langRe","case_insensitive","unicodeRegex","MultiRegex","matchIndexes","matchAt","addRule","terminators","matcherRe","matchData","ResumableMultiRegex","multiRegexes","regexIndex","getMatcher","matcher","resumingScanAtSamePosition","considerAll","compilerExtensions","classNameAliases","compileMode","cmode","isCompiled","ext","keywordPattern","$pattern","keywordPatternRe","beginRe","endsWithParent","terminatorEnd","illegalRe","variants","cachedVariants","dependencyOnParent","expandOrCloneMode","mm","term","buildModeRegex","HTMLInjectionError","NO_MATCH","HLJS","hljs","languages","plugins","SAFE_MODE","LANGUAGE_NOT_FOUND","PLAINTEXT_LANGUAGE","disableAutodetect","ignoreUnescapedHTML","throwUnescapedHTML","noHighlightRe","languageDetectRe","cssSelector","__emitter","shouldNotHighlight","languageName","codeOrLanguageName","optionsOrCode","ignoreIllegals","fire","_highlight","codeToHighlight","continuation","keywordHits","processKeywords","modeBuffer","matchText","keywordRelevance","emitKeyword","processBuffer","subLanguage","continuations","highlightAuto","_emitter","processSubLanguage","emitMultiClass","klass","startNewMode","endOfMode","matchPlusRemainder","lexeme","doIgnore","resumeScanAtSamePosition","doEndMatch","endMode","origin","lastMatch","processLexeme","textBeforeMatch","badRule","newMode","beforeCallbacks","doBeginMatch","processed","iterations","getLanguage","processContinuations","__emitTokens","processedCount","_top","_illegalBy","resultSoFar","errorRaised","languageSubset","plaintext","justTextHighlightResult","autoDetection","sorted","supersetOf","best","secondBest","highlightElement","blockLanguage","dataset","currentLang","resultLang","updateClassName","wantsHighlight","highlightAll","registerAliases","aliasList","highlightBlock","userOptions","initHighlighting","initHighlightingOnLoad","registerLanguage","languageDefinition","error$1","rawDefinition","unregisterLanguage","listLanguages","addPlugin","upgradePluginAPI","removePlugin","debugMode","safeMode","versionString","newInstance","HighlightJS","__webpack_module_cache__","__webpack_require__","cachedModule","loaded","__webpack_modules__","amdD","getter","__esModule","globalThis","toStringTag","nmd","emptyObject","isUndef","isDef","isTrue","_toString","isValidArrayIndex","isPromise","replacer","_key","__v_isRef","makeMap","expectsLowerCase","isBuiltInTag","isReservedAttribute","remove$2","hasOwn","cached","camelizeRE","camelize","hyphenateRE","hyphenate","bind$1","boundFn","_length","toArray","_from","toObject","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","keysA","keysB","looseIndexOf","called","hasChanged","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","optionMergeStrategies","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","isReserved","def","bailRE","hasProto","inBrowser","UA","isIE9","_isServer","isFF","nativeWatch","watch","supportsPassive","isServerRendering","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","Reflect","ownKeys","currentInstance","setCurrentInstance","vm","_scope","VNode","elm","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","SuppressedError","uid$2","pendingCleanupDeps","cleanupDeps","subs","_pending","Dep","addSub","removeSub","depend","addDep","notify","targetStack","pushTarget","popTarget","arrayProto","arrayMethods","ob","__ob__","observeArray","arrayKeys","NO_INITIAL_VALUE","shouldObserve","toggleObserving","mockDep","Observer","shallow","mock","vmCount","defineReactive","ssrMockReactivity","isExtensible","__v_skip","isRef","customSetter","observeEvenIfShallow","getOwnPropertyDescriptor","setter","childOb","dependArray","isReadonly","_isVue","shallowReactive","makeReactive","__v_isReadonly","proxyWithRefUnwrap","oldValue","normalizeEvent","createFnInvoker","invoker","invokeWithErrorHandling","updateListeners","oldOn","createOnceHandler","cur","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","preserve","normalizeChildren","normalizeArrayChildren","isFalse","nestedIndex","_isVList","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","createElement$1","normalizationType","alwaysNormalize","is","scopedSlots","simpleNormalizeChildren","pre","resolveAsset","createComponent","applyNS","traverse","registerDeepBindings","_createElement","renderList","renderSlot","fallbackRender","bindObject","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","camelizedKey","hyphenatedKey","renderStatic","isInFor","_staticTrees","markStatic$1","_renderProxy","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","$stable","$key","bindDynamicKeys","baseObj","prependModifier","symbol","installRenderHelpers","_n","resolveSlots","slots","name_1","name_2","isWhitespace","normalizeScopedSlots","ownerVm","normalSlots","prevScopedSlots","hasNormalSlots","isStable","_normalized","$hasNormal","key_1","normalizeScopedSlot","key_2","proxyNormalSlot","normalized","createSetupContext","_attrsProxy","syncSetupProxy","$attrs","_listenersProxy","$listeners","_slotsProxy","syncSetupSlots","initSlotsProxy","$emit","expose","exposed","changed","defineProxyAttr","target$1","activeEffectScope","currentRenderingInstance","ensureCtor","comp","getFirstComponentChild","add$1","$on","remove$1","$off","createOnceHandler$1","_target","onceHandler","updateComponentListeners","oldListeners","EffectScope","detached","cleanups","run","currentEffectScope","fromParent","teardown","activeInstance","setActiveInstance","prevActiveInstance","isInInactiveTree","$parent","_inactive","activateChildComponent","direct","_directInactive","$children","callHook$1","deactivateChildComponent","prevInst","prevScope","_hasHookEvent","activatedChildren","waiting","flushing","index$1","currentFlushTimestamp","getNow","performance_1","createEvent","sortCompareFn","post","flushSchedulerQueue","watcher","activatedQueue","updatedQueue","callActivatedHooks","_watcher","_isMounted","_isDestroyed","callUpdatedHooks","queueWatcher","noRecurse","WATCHER","resolveProvided","_provided","parentProvides","handleError","hooks","errorCaptured","globalHandleError","_handled","logError","timerFunc","isUsingMicroTask","flushCallbacks","copies","p_1","MutationObserver","setImmediate","counter_1","observer","textNode_1","characterData","createLifeCycle","hookName","mergeLifecycleHook","injectHook","seenObjects","_traverse","seen","isA","depId","uid$1","Watcher","expOrFn","isRenderWatcher","deep","user","lazy","sync","dirty","newDeps","depIds","newDepIds","segments","parsePath","evaluate","_isBeingDestroyed","onStop","sharedPropertyDefinition","sourceKey","propsOptions","_props","_propKeys","validateProp","initProps$1","_setupContext","setupResult","_setupState","__sfc","_setupProxy","initSetup","initMethods","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed$1","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","resolveInject","inject","provideKey","provideDefault","uid","resolveConstructorOptions","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","mergeOptions","FunctionalRenderContext","contextVm","_original","needNormalization","injections","cloneAndMarkFunctionalResult","renderContext","mergeProps","getComponentName","__name","_componentTag","componentVNodeHooks","hydrating","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","$mount","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","prevVNode","_vnode","prevListeners","_parentListeners","propKeys","propOptions","$forceUpdate","updateChildComponent","hooksToMerge","baseCtor","_base","cid","errorComp","resolved","owners","loadingComp","owners_1","sync_1","timerLoading_1","timerTimeout_1","forceRender_1","renderCompleted","reject_1","res_1","resolveAsyncComponent","createAsyncPlaceholder","model","transformModel","extractPropsFromVNodeData","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook","installComponentHooks","f1","f2","warn$2","strats","mergeData","recursive","toVal","fromVal","mergeDataOrFn","parentVal","childVal","instanceData","defaultData","dedupeHooks","mergeAssets","parent_1","provide","defaultStrat","normalizeProps","normalizeInject","dirs","normalizeDirectives$1","extends","mixins","mergeField","strat","warnMissing","assets","camelizedId","PascalCaseId","absent","booleanIndex","getTypeIndex","stringIndex","getType","getPropDefaultValue","prevShouldObserve","functionTypeCheckRE","isSameType","expectedTypes","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","Comp","initProps","initComputed","_getComponentName","pruneCache","keepAliveInstance","pruneCacheEntry","_uid","vnodeComponentOptions","initInternalComponent","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","provideOption","provided","initProvide","initMixin$1","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","i_1","cbs","eventsMixin","_update","prevEl","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","prevRenderInst","renderMixin","patternTypes","KeepAlive","cacheVNode","vnodeToCache","keyToCache","created","updated","builtInComponents","configDef","observable","installedPlugins","_installedPlugins","initUse","initMixin","initAssetRegisters","initGlobalAPI","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","mergeClassData","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","math","isHTMLTag","unknownElementCache","isTextInputType","query","nodeOps","multiple","namespace","referenceNode","setTextContent","setStyleScope","registerRef","isRemoval","refValue","$refsValue","isFor","refInFor","_isString","_isRef","setSetupRef","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","directives$1","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook","componentUpdated","callInsert","emptyModifiers","getRawDirName","setupDef","baseModules","updateAttrs","inheritAttrs","oldAttrs","_v_attr_proxy","setAttr","removeAttributeNS","isInPre","baseSetAttr","__ieph","blocker_1","stopImmediatePropagation","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","expressionPos","expressionEndPos","klass$1","validDivisionCharRE","parseFilters","filters","inSingle","inDouble","inTemplateString","inRegex","paren","lastFilterIndex","pushFilter","wrapFilter","baseWarn","pluckModuleFunction","addProp","dynamic","rangeSetItem","plain","addAttr","dynamicAttrs","addRawAttr","attrsMap","attrsList","addDirective","isDynamicArg","prependModifierMarker","addHandler","important","events","native","nativeEvents","newHandler","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","removeFromMap","getAndRemoveAttrByRegex","genComponentModel","baseValueExpression","valueExpression","assignment","genAssignmentCode","eof","isStringStart","parseString","parseBracket","parseModel","inBracket","stringQuote","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","useMicrotaskFix","attachedTimestamp_1","original_1","_wrapper","updateDOMListeners","event_1","normalizeEvents","svgContainer","updateDOMProps","oldProps","strCur","shouldUpdateValue","checkVal","composing","notInFocus","isNotInFocusAndDirty","_vModifiers","isDirtyWithModifiers","parseStyleText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","style$1","whitespaceRE$1","addClass","removeClass","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","toggleDisplay","_leaveCb","cancelled","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","isValidDuration","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","i_2","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","i_3","childElm","createRmCb","findIdxInOld","oldCh","i_5","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","i_6","isRenderedModule","inVPre","hasChildNodes","childrenMatch","i_7","fullInvoke","isInitialPatch","isRealElement","oldElm","patchable","i_8","i_9","insert_1","i_10","createPatchFunction","vmodel","directive","_vOptions","setSelected","prevOptions_1","curOptions_1","needReset","hasNoMatchingOption","actuallySetSelected","isMultiple","initEvent","dispatchEvent","locateNode","originalDisplay","__vOriginalDisplay","unbind","platformDirectives","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave_1","moveClass","TransitionGroup","kept","prevChildren","rawChildren","transitionData","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","el_1","WebkitTransform","transitionDuration","_moveCb","propertyName","_hasMove","dx","dy","platformComponents","HTMLUnknownElement","HTMLElement","updateComponent","preWatchers","_preWatchers","mountComponent","defaultTagRE","regexEscapeRE","buildRegex","staticKeys","transformNode","classBinding","genData","decoder","styleBinding","he","isUnaryTag","canBeLeftOpenTag","isNonPhrasingTag","attribute","dynamicArgAttribute","ncname","qnameCapture","startTagOpen","startTagClose","endTag","conditionalComment","isPlainTextElement","reCache","decodingMap","encodedAttr","encodedAttrWithNewLines","isIgnoreNewlineTag","shouldIgnoreFirstNewline","decodeAttr","shouldDecodeNewlines","parseHTML","lastTag","expectHTML","endTagLength_1","stackedTag_1","reStackedTag","parseEndTag","commentEnd","shouldKeepComment","advance","conditionalEnd","doctypeMatch","endTagMatch","curIndex","startTagMatch","unarySlash","parseStartTag","unary","shouldDecodeNewlinesForHref","lowerCasedTag","handleStartTag","lowerCasedTagName","transforms","preTransforms","postTransforms","platformIsPreTag","platformMustUseProp","platformGetTagNamespace","onRE","dirRE","forAliasRE","forIteratorRE","stripParensRE","dynamicArgRE","argRE","bindRE","modifierRE","slotRE","lineBreakRE","whitespaceRE","decodeHTMLCached","emptySlotScopeToken","createASTElement","makeAttrsMap","rawAttrsMap","template","isPreTag","currentParent","preserveWhitespace","whitespaceOption","whitespace","inPre","closeElement","trimEndingWhitespace","processElement","if","elseif","else","addIfCondition","forbidden","findPrevElement","slotScope","slotTarget","lastNode","outputSourceRange","ieNSBug","ieNSPrefix","guardIESVGBug","processPre","processRawAttrs","processFor","processIf","processOnce","tagRE","tokenValue","rawTokens","parseText","processKey","checkInFor","processRef","slotTargetDynamic","getRawBindingAttr","slotBinding","getSlotName","name_3","slotContainer_1","processSlotContent","slotName","processComponent","syncGen","isDynamic","hasBindings","parseModifiers","camel","argMatch","processAttrs","inMatch","iteratorMatch","iterator1","parseFor","condition","ifConditions","ret_1","cloneASTElement","preTransformNode","typeBinding","ifCondition","ifConditionExtra","hasElse","elseIfCondition","branch0","branch1","branch2","isStaticKey","isPlatformReservedTag","_warn","selectedVal","genSelect","valueBinding","trueValueBinding","falseValueBinding","genCheckboxModel","genRadioModel","needCompositionGuard","genDefaultModel","baseOptions","genStaticKeys$1","genStaticKeysCached","optimize","markStatic","markStaticRoots","static","isDirectChildOfTemplateFor","staticInFor","staticRoot","fnExpRE","fnInvokeRE","simplePathRE","space","keyNames","genGuard","modifierCode","prevent","genHandlers","staticHandlers","dynamicHandlers","handlerCode","genHandler","isMethodPath","isFunctionExpression","isFunctionInvocation","genModifierCode","modifiers_1","keyModifier","genFilterCode","genKeyFilter","keyVal","keyName","baseDirectives","wrapListeners","cloak","CodegenState","dataGenFns","maybeComponent","onceId","generate","ast","genElement","staticProcessed","genStatic","onceProcessed","genOnce","forProcessed","genFor","ifProcessed","genIf","genChildren","genProps","genSlot","componentName","genComponent","bindings","__isScriptSetup","camelName","PascalName","checkType","fromConst","fromMaybeRef","checkBindingType","originalPreState","altGen","altEmpty","genIfConditions","conditions","genTernaryExp","altHelper","needRuntime","hasRuntime","gen","genDirectives","containsSlotChild","needsKey","parent_2","generatedSlots","genScopedSlot","genScopedSlots","inlineRenderFns","genInlineTemplate","isLegacySyntax","reverseProxy","checkSkip","altGenElement","altGenNode","normalizationType_1","needsNormalization","getNormalizationType","gen_1","genNode","genComment","transformSpecialNewlines","staticProps","dynamicProps","createFunction","createCompileToFunctionFn","fnGenErrors","baseCompile","createCompiler","finalOptions","tips","tip","compileToFunctions","getShouldDecode","idToTemplate","mount","outerHTML","getOuterHTML","numberFormatKeys","dateTimeFormatKeys","OBJECT_STRING","isNull","parseArgs","locale","looseClone","arguments$1","interpolationComponent","places","$i18n","onlyHasDefaultPlace","assignChildIndex","createParamsFromPlaces","everyPlace","vnodeHasPlaceAttribute","assignChildPlace","useLegacyPlaces","place","numberComponent","i18n","_ntp","assert","oldVNode","_locale","localeEqual","_localeMessage","getLocaleMessage","preserveDirectiveContent","_vt","ref$1","ref$2","choice","tc","makeParams","_Vue","bridge","installed","_i18n","$t","_getMessages","$tc","_tc","$te","_te","$d","$n","__INTLIFY_META__","__i18nBridge","__i18n","VueI18n","localeMessages","resource","mergeLocaleMessage","_i18nWatcher","watchI18nData","rootI18n","formatter","fallbackLocale","formatFallbackMessages","silentTranslationWarn","silentFallbackWarn","pluralizationRules","localeMessages$1","sharedMessages","_localeWatcher","watchLocale","onComponentInstanceCreated","subscribeDataChanging","_subscribing","unsubscribeDataChanging","destroyVM","defineMixin","BaseFormatter","_caches","interpolate","char","isClosed","RE_TOKEN_LIST_VALUE","RE_TOKEN_NAMED_VALUE","pathStateMachine","literalValueRE","getPathCharType","formatSubPath","stripQuotes","I18nPath","hit","newChar","typeMap","subPathDepth","actions","maybeUnescapeQuote","parse$1","getPathValue","availabilities","htmlTagMatcher","linkKeyMatcher","linkKeyPrefixMatcher","bracketsMatcher","defaultModifiers","toLocaleUpperCase","toLocaleLowerCase","defaultFormatter","this$1","dateTimeFormats","datetimeFormats","numberFormats","_formatter","_modifiers","_missing","missing","_root","_sync","_fallbackRoot","fallbackRoot","_fallbackRootWithEmptyString","fallbackRootWithEmptyString","_formatFallbackMessages","_silentTranslationWarn","_silentFallbackWarn","_dateTimeFormatters","_numberFormatters","_path","_dataListeners","_componentInstanceCreatedListener","componentInstanceCreatedListener","_preserveDirectiveContent","_warnHtmlInMessage","warnHtmlInMessage","_postTranslation","postTranslation","_escapeParameterHtml","escapeParameterHtml","__VUE_I18N_BRIDGE__","getChoiceIndex","choicesLength","thisPrototype","_choice","_choicesLength","_exist","_checkLocaleMessage","_initVM","prototypeAccessors","availableLocales","__VUE18N__INSTANCE__","composer","newI18n","_getDateTimeFormats","_getNumberFormats","_localeChainCache","orgLevel","_warnDefault","interpolateMode","missingRet","parsedArgs","_isFallbackRoot","_isSilentFallbackWarn","_isSilentFallback","_isSilentTranslationWarn","_interpolate","visitedLinkStack","pathRet","linkKeyPrefixMatches","linkPrefix","formatterName","linkPlaceholder","_translate","_createMessageContext","_list","_named","named","linkedKey","_appendItemToChain","blocks","follow","_appendLocaleToChain","_appendBlockToChain","_getLocaleChain","predefined","fetchChoice","te","setLocaleMessage","getDateTimeFormat","setDateTimeFormat","_clearDateTimeFormat","mergeDateTimeFormat","_localizeDateTime","formats","DateTimeFormat","getNumberFormat","setNumberFormat","_clearNumberFormat","mergeNumberFormat","_getNumberFormatter","NumberFormat","numberFormat","formatToParts","defineProperties","intlDefined","dateTimeFormat","twemoji","convert","codepoint","toCodePoint","createText","what","how","parseNode","defaultImageSrcGenerator","returnNull","folder","escaper","UFE0Fg","U200D","rescaper","shouldntBeParsed","clean","icon","grabAllTextNodes","allText","subnode","grabTheRightIcon","rawText","attrib","attrname","iconId","nodeValue","unicodeSurrogates","SDK_VERSION","__SENTRY_DEBUG__","GLOBAL_OBJ","getGlobalSingleton","creator","gbl","__SENTRY__","versionedCarrier","CONSOLE_LEVELS","originalConsoleMethods","consoleSandbox","wrappedFuncs","wrappedLevels","originalConsoleMethod","isEnabled","isError","wat","isInstanceOf","isBuiltin","isErrorEvent","isDOMError","isParameterizedString","isEvent","Event","isVueViewModel","__isVue","WINDOW","DEFAULT_MAX_STRING_LENGTH","htmlTreeAsString","currentElem","MAX_TRAVERSE_HEIGHT","sepLength","nextStr","keyAttrs","maxStringLength","_htmlElementAsString","_oO","keyAttrPairs","keyAttr","keyAttrPair","allowedAttrs","getLocationHref","oO","truncate","snipLine","colno","newLine","safeJoin","delimiter","isMatchingPattern","requireExactStringMatch","stringMatchesSomePattern","testString","replacementFactory","markFunctionWrapped","addNonEnumerableProperty","o_O","getOriginalFunction","__sentry_original__","convertToPlainObject","getOwnProperties","newObj","serializeEventTarget","CustomEvent","Element","extractedProps","dropUndefinedKeys","inputValue","_dropUndefinedKeys","memoizationMap","isPojo","memoVal","crypto","msCrypto","getRandomByte","random","randomUUID","getRandomValues","typedArray","getFirstException","exception","getEventDescription","event_id","eventId","firstException","addExceptionTypeValue","addExceptionMechanism","newMechanism","currentMechanism","mechanism","handled","mergedData","checkOrSetAlreadyCaught","__sentry_captured__","arrayify","maybeArray","carrier","generatePropagationContext","traceId","spanId","ONE_SECOND_IN_MS","dateTimestampInSeconds","approxStartingTimeOrigin","timeOrigin","createUnixTimestampInSecondsFunc","_browserPerformanceTimeOriginMode","browserPerformanceTimeOrigin","threshold","performanceNow","dateNow","timeOriginDelta","timeOriginIsReliable","navigationStart","timing","navigationStartDelta","makeSession","startingTime","sid","timestamp","started","ignoreDuration","did","abnormal_mechanism","release","environment","ip_address","ipAddress","user_agent","sessionToJSON","updateSession","email","SCOPE_SPAN_FIELD","_setSpanForScope","_getSpanForScope","ScopeClass","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_attachments","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","_propagationContext","newScope","_level","_session","_transactionName","_fingerprint","_requestSession","_client","_lastEventId","setClient","client","setLastEventId","lastEventId","getClient","addScopeListener","addEventProcessor","setUser","_notifyScopeListeners","getUser","getRequestSession","setRequestSession","requestSession","setTags","tags","setTag","setExtras","extras","setExtra","setFingerprint","fingerprint","setLevel","setTransactionName","captureContext","scopeToMerge","scopeInstance","Scope","getScopeData","contexts","propagationContext","addBreadcrumb","breadcrumb","maxBreadcrumbs","maxCrumbs","mergedBreadcrumb","breadcrumbs","getLastBreadcrumb","clearBreadcrumbs","addAttachment","attachment","clearAttachments","attachments","eventProcessors","sdkProcessingMetadata","transactionName","setSDKProcessingMetadata","newData","setPropagationContext","getPropagationContext","captureException","syntheticException","originalException","captureMessage","captureEvent","AsyncContextStack","isolationScope","assignedScope","assignedIsolationScope","_stack","_isolationScope","withScope","_pushScope","maybePromiseResult","_popScope","getStackTop","getScope","getIsolationScope","getAsyncContextStack","sentry","withSetScope","getAsyncContextStrategy","acs","withIsolationScope","withSetIsolationScope","getCurrentScope","getGlobalScope","installedIntegrations","getIntegrationsToSetup","defaultIntegrations","userIntegrations","integrations","integration","isDefaultInstance","finalIntegrations","integrationsByName","existingInstance","filterDuplicates","debugIndex","debugInstance","afterSetupIntegrations","afterAllSetup","setupIntegration","integrationIndex","setupOnce","preprocessEvent","processEvent","processor","addIntegration","DEFAULT_IGNORE_ERRORS","inboundFiltersIntegration","_hint","clientOptions","mergedOptions","internalOptions","allowUrls","denyUrls","ignoreErrors","disableErrorDefaults","ignoreTransactions","ignoreInternal","_mergeOptions","_isSentryError","possibleMessages","lastException","_getPossibleEventMessages","_isIgnoredError","stacktrace","_isUselessError","transaction","_isIgnoredTransaction","_getEventFilterUrl","_isDeniedUrl","_isAllowedUrl","_shouldDropEvent","frames","frame","filename","_getLastValidUrl","originalFunctionToString","SETUP_CLIENTS","WeakMap","functionToStringIntegration","originalFunction","STACKTRACE_FRAME_LIMIT","UNKNOWN_FUNCTION","WEBPACK_ERROR_REGEXP","STRIP_FRAME_REGEXP","createStackParser","parsers","sortedParsers","skipFirstLines","framesToPop","cleanedLine","localStack","getLastStackFrame","function","stripSentryFramesAndReverse","defaultFunctionName","getFunctionName","getFramesFromEvent","dedupeIntegration","previousEvent","currentEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameMessageEvent","previousException","_getExceptionFromEvent","currentException","_isSameExceptionEvent","currentFrames","previousFrames","frameA","frameB","lineno","currentFingerprint","previousFingerprint","setCurrentClient","DEFAULT_ENVIRONMENT","maxProperties","visit","ERROR","normalizeToSize","maxSize","encodeURI","utf8Length","memo","hasWeakSet","WeakSet","memoBuilder","memoize","unmemoize","objName","getConstructorName","stringifyValue","remainingDepth","valueWithToJSON","numAdded","visitable","visitKey","visitValue","States","resolvedSyncPromise","SyncPromise","rejectedSyncPromise","__init","__init2","__init3","__init4","_state","PENDING","_handlers","_reject","onrejected","_executeHandlers","onfinally","isRejected","_setResult","RESOLVED","REJECTED","cachedHandlers","notifyEventProcessors","processors","BAGGAGE_HEADER_NAME","SENTRY_BAGGAGE_KEY_PREFIX","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","MAX_BAGGAGE_STRING_LENGTH","baggageHeaderToDynamicSamplingContext","baggageHeader","baggageObject","currBaggageObject","baggageHeaderToObject","entries","parseBaggageHeader","dynamicSamplingContext","dynamicSamplingContextToSentryBaggageHeader","objectKey","objectValue","baggageEntry","newBaggageHeader","objectToBaggageHeader","dscKey","dscValue","keyOrValue","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE","SEMANTIC_ATTRIBUTE_SENTRY_OP","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE","SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME","hasTracingEnabled","maybeOptions","__SENTRY_TRACING__","enableTracing","TRACEPARENT_REGEXP","propagationContextFromHeaders","sentryTrace","baggage","traceparentData","traceparent","parentSampled","parentSpanId","extractTraceparentData","sampled","dsc","generateSentryTraceHeader","sampledString","METRICS_SPAN_FIELD","getMetricSummaryJsonForSpan","storage","exportKey","SPAN_STATUS_UNSET","SPAN_STATUS_OK","SPAN_STATUS_ERROR","getSpanStatusFromHttpCode","httpStatus","setHttpStatus","spanStatus","setStatus","TRACE_FLAG_SAMPLED","spanToTransactionTraceContext","span_id","trace_id","spanContext","parent_span_id","spanToJSON","spanToTraceContext","spanToTraceHeader","spanIsSampled","spanTimeInputToSeconds","ensureTimestampInSeconds","getSpanJSON","spanIsSentrySpan","castSpan","startTime","endTime","spanIsOpenTelemetrySdkTraceBaseSpan","start_timestamp","getStatusMessage","_metrics_summary","traceFlags","CHILD_SPANS_FIELD","ROOT_SPAN_FIELD","addChildSpanToSpan","childSpan","rootSpan","getSpanDescendants","resultSet","addSpanChildren","childSpans","getRootSpan","getActiveSpan","updateMetricSummaryOnActiveSpan","metricType","sanitizedName","bucketKey","bucketItem","sum","updateMetricSummaryOnSpan","FROZEN_DSC_FIELD","freezeDscOnSpan","getDynamicSamplingContextFromClient","publicKey","public_key","getDsn","getDynamicSamplingContextFromSpan","frozenDsc","traceState","traceStateDsc","dscOnTraceState","jsonSpan","maybeSampleRate","sample_rate","spanToBaggageHeader","applyScopeDataToEvent","cleanedExtra","cleanedTags","cleanedUser","cleanedContexts","applyDataToEvent","applySpanToEvent","applyFingerprintToEvent","mergedBreadcrumbs","applyBreadcrumbsToEvent","applySdkMetadataToEvent","mergeScopeData","mergeAndOverwriteScopeData","mergeVal","prepareEvent","normalizeDepth","normalizeMaxBreadth","prepared","dist","maxValueLength","applyClientOptions","integrationNames","sdk","applyIntegrationsMetadata","stackParser","debugIdMap","_sentryDebugIds","debugIdStackFramesCache","cachedDebugIdStackFrameCache","debugIdStackParserCache","filenameDebugIdMap","debugIdStackTrace","debugIdValue","parsedStack","cachedParsedStack","stackFrame","debug_id","applyDebugIds","finalScope","getFinalScope","clientEventProcessors","getEventProcessors","evt","abs_path","debug_meta","code_file","applyDebugMeta","maxBreadth","spans","parseEventHintOrCaptureContext","hintIsScopeOrFunction","captureContextKeys","hintIsScopeContext","isInitialized","startSession","currentScope","currentSession","endSession","closeSession","_sendSessionUpdate","captureSession","DSN_REGEX","dsnToString","dsn","withPassword","pass","projectId","dsnFromString","lastPath","projectMatch","dsnFromComponents","makeDsn","hasMissingRequiredComponent","isValidProtocol","validateDsn","SENTRY_API_VERSION","getBaseApiEndpoint","_encodedAuth","sdkInfo","sentry_key","sentry_version","sentry_client","getEnvelopeEndpointWithUrlEncodedAuth","tunnel","_getIngestEndpoint","supportsFetch","Headers","Request","isNativeFunction","supportsNativeFetch","EdgeRuntime","sandbox","instrumented","maybeInstrument","instrumentFn","triggerHandlers","typeHandlers","lastHref","addHistoryInstrumentationHandler","instrumentHistory","chromeVar","isChromePackagedApp","app","runtime","hasHistoryApi","replaceState","supportsHistory","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","createEnvelope","addItemToEnvelope","envelope","newItem","forEachEnvelopeItem","envelopeItems","envelopeItem","envelopeContainsItemType","encodeUTF8","encodePolyfill","TextEncoder","serializeEnvelope","envHeaders","itemHeaders","stringifiedPayload","buffers","totalLength","concatBuffers","parseEnvelope","readBinary","bin","subarray","readJson","decodePolyfill","TextDecoder","envelopeHeader","itemHeader","binaryLength","createSpanEnvelopeItem","spanJson","createAttachmentEnvelopeItem","content_type","contentType","attachment_type","attachmentType","ITEM_TYPE_TO_DATA_CATEGORY_MAP","sessions","client_report","user_report","profile","profile_chunk","replay_event","replay_recording","check_in","feedback","statsd","envelopeItemTypeToDataCategory","getSdkMetadataForEnvelopeHeader","metadataOrEvent","createEventEnvelopeHeaders","sent_at","SentryError","logLevel","parseSampleRate","sampleRate","rate","ALREADY_SEEN_ERROR","BaseClient","_integrations","_numProcessing","_outcomes","_hooks","_dsn","_metadata","_transport","transport","recordDroppedEvent","transportOptions","hintWithEventId","_process","eventFromException","_captureEvent","eventMessage","promisedEvent","eventFromMessage","capturedSpanScope","sendSession","getSdkMetadata","getTransport","_isClientDoneProcessing","clientFinished","transportFlushed","eventProcessor","_isEnabled","_setupIntegrations","getIntegrationByName","integrationName","isAlreadyInstalled","sendEvent","metadata","eventType","packages","enhanceEventWithSdkInfo","envelopeHeaders","createEventEnvelope","sendEnvelope","sendResponse","createSessionEnvelope","category","eventOrCount","sendClientReports","cbIndex","setupIntegrations","_updateSessionFromEvent","crashed","errored","exceptions","sessionNonTerminal","ticked","_prepareEvent","_processEvent","finalEvent","sentryError","isTransaction","isTransactionEvent","beforeSendLabel","parsedSampleRate","dataCategory","capturedSpanIsolationScope","__sentry__","beforeSend","beforeSendTransaction","beforeSendSpan","processedSpans","processedSpan","spanCountBefore","spanCountBeforeProcessing","processBeforeSend","beforeSendResult","invalidValueError","_validateBeforeSendResult","processedEvent","spanCount","droppedSpanCount","transactionInfo","transaction_info","_clearOutcomes","outcomes","quantity","_flushOutcomes","discarded_events","exceptionFromError","parseStackFrames","extractType","extractMessage","eventFromPlainObject","isUnhandledRejection","errorFromProp","getErrorPropertyFromObject","__serialized__","getNonErrorObjectExceptionValue","eventFromError","skipLines","reactMinifiedRegexp","getSkipFirstStackStringLines","getPopFirstTopFrames","isWebAssemblyException","WebAssembly","Exception","attachStacktrace","eventFromUnknownInput","eventFromString","domException","synthetic","__sentry_template_string__","__sentry_template_values__","logentry","maxLength","firstKey","includedKeys","serialized","extractExceptionKeysForMessage","captureType","getObjectClassName","ignoreOnError","shouldIgnoreOnError","__sentry_wrapped__","sentryWrapped","wrappedArguments","createUserFeedbackEnvelope","createUserFeedbackEnvelopeItem","BrowserClient","parentSpanIsAlwaysRootSpan","applySdkMetadata","SENTRY_SDK_SOURCE","visibilityState","captureUserFeedback","DEBOUNCE_DURATION","debounceTimerID","lastCapturedEventType","lastCapturedEventTargetId","addClickKeypressInstrumentationHandler","instrumentDOM","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","originalAddEventListener","__sentry_instrumentation_handlers__","handlerForType","refCount","originalRemoveEventListener","globalListener","getEventTarget","isContentEditable","shouldSkipDOMEvent","_sentryId","isSimilarToLastCapturedEvent","SENTRY_XHR_DATA_KEY","addXhrInstrumentationHandler","instrumentXHR","xhrproto","Proxy","originalOpen","xhrOpenThisArg","xhrOpenArgArray","startTimestamp","parseUrl","request_headers","__sentry_own_request__","onreadystatechangeHandler","xhrInfo","status_code","endTimestamp","originalOnreadystatechange","onreadystatechangeThisArg","onreadystatechangeArgArray","originalSetRequestHeader","setRequestHeaderThisArg","setRequestHeaderArgArray","header","originalSend","sendThisArg","sendArgArray","sentryXhrData","DEFAULT_BREADCRUMBS","beforeBreadcrumb","finalBreadcrumb","addConsoleInstrumentationHandler","instrumentConsole","addFetchInstrumentationHandler","skipNativeFetchCheck","instrumentFetch","onFetchResolved","originalFetch","fetchArgs","getUrlFromResource","hasProp","parseFetchArgs","handlerData","fetchData","virtualStackTrace","streamHandler","clonedResponseForResolving","onFinishedResolving","responseReader","getReader","maxFetchDurationTimeout","readingActive","chunkTimeout","releaseLock","resolveResponse","validSeverityLevels","severityLevelFromString","getBreadcrumbLogLevelFromHttpStatusCode","statusCode","relative","MAX_ALLOWED_STRING_LENGTH","breadcrumbsIntegration","_getConsoleBreadcrumbHandler","serializeAttribute","_isEvent","_getDomBreadcrumbHandler","_getXhrBreadcrumbHandler","_getFetchBreadcrumbHandler","parsedLoc","parsedFrom","parsedTo","_getHistoryBreadcrumbHandler","_getSentryBreadcrumbHandler","DEFAULT_EVENT_TARGET","browserApiErrorsIntegration","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","originalCallback","wrapOptions","globalObject","handleEvent","wrappedEventHandler","originalEventHandler","_oldOnErrorHandler","addGlobalErrorInstrumentationHandler","instrumentError","__SENTRY_LOADER__","__SENTRY_INSTRUMENTED__","_oldOnUnhandledRejectionHandler","addGlobalUnhandledRejectionInstrumentationHandler","instrumentUnhandledRejection","onunhandledrejection","globalHandlersIntegration","stackTraceLimit","ev0","ev0s","ev0sf","in_app","_enhanceEventWithInitialFrame","_installGlobalOnErrorHandler","globalHandlerLog","_getUnhandledRejectionError","_installGlobalOnUnhandledRejectionHandler","httpContextIntegration","referrer","Referer","applyAggregateErrorsToEvent","exceptionFromErrorImplementation","maxValueLimit","aggregateExceptionsFromError","prevExceptions","exceptionId","newExceptions","applyExceptionGroupFieldsForParentException","newException","newExceptionId","applyExceptionGroupFieldsForChildException","childError","is_exception_group","exception_id","parent_id","linkedErrorsIntegration","createFrame","chromeRegexNoFnName","chromeRegex","chromeEvalRegex","chromeStackLineParser","noFnParts","subMatch","extractSafariExtensionDetails","geckoREgex","geckoEvalRegex","geckoStackLineParser","winjsRegex","winjsStackLineParser","opera10Regex","opera10StackLineParser","opera11Regex","opera11StackLineParser","defaultStackLineParsers","defaultStackParser","isSafariExtension","isSafariWebExtension","cachedImplementations","getNativeImplementation","impl","clearCachedImplementation","makePromiseBuffer","task","$","taskProducer","drain","capturedSetTimeout","DEFAULT_RETRY_AFTER","parseRetryAfterHeader","headerDelay","headerDate","isRateLimited","disabledUntil","updateRateLimits","updatedRateLimits","rateLimitHeader","retryAfterHeader","retryAfter","namespaces","DEFAULT_TRANSPORT_BUFFER_SIZE","createTransport","makeRequest","bufferSize","rateLimits","filteredEnvelopeItems","getEventForEnvelopeItem","filteredEnvelope","recordEnvelopeLoss","makeFetchTransport","nativeFetch","pendingBodySize","pendingCount","requestSize","requestOptions","referrerPolicy","keepalive","fetchOptions","getDefaultIntegrations","browserOptions","optionsArg","__SENTRY_RELEASE__","SENTRY_RELEASE","autoSessionTracking","applyDefaultOptions","skipBrowserExtensionCheck","windowWithMaybeExtension","extensionObject","runtimeId","isDedicatedExtensionPage","isNWjs","nw","shouldShowBrowserExtensionError","clientClass","initialScope","initAndBind","startSessionTracking","showReportDialog","dsnLike","dialogOptions","endpoint","encodedOptions","getReportDialogEndpoint","onClose","reportDialogClosedMessageHandler","injectionPoint","forceLoad","DEFAULT_HOOKS","classifyRE","ANONYMOUS_COMPONENT_NAME","includeFile","file","__file","classify","attachErrorHandler","originalErrorHandler","lifecycleHook","currentRecursiveSequence","formattedTree","attachProps","$props","vue","logErrors","hasConsole","handleCallbackErrors","onError","onFinally","maybeHandlePromiseRejection","SentryNonRecordingSpan","_traceId","_spanId","_timestamp","setAttributes","_values","_status","updateName","_name","isRecording","addEvent","_attributesOrStartTime","_startTime","addLink","addLinks","_links","recordException","_exception","_time","setMeasurement","activeSpan","timedEventsToMeasurements","measurements","SCOPE_ON_START_SPAN_FIELD","ISOLATION_SCOPE_ON_START_SPAN_FIELD","getCapturedScopesOnSpan","SentrySpan","_attributes","_parentSpanId","_sampled","_endTime","_isStandaloneSpan","isStandalone","_onSpanEnded","updateStartTime","timeInput","logSpanEnd","profile_id","exclusive_time","is_segment","segment_id","attributesOrStartTime","isSpanTimeInput","isStandaloneSpan","spanItems","sendSpanEnvelope","dscHasRequiredProps","convertToSpanJSON","createSpanEnvelope","transactionEvent","_convertSpanToTransaction","isFullFinishedSpan","SUPPRESS_TRACING_KEY","startSpan","getAcs","spanArguments","parseSentrySpanArguments","forceTransaction","parentSpan","customParentSpan","getActiveSpanWrapper","getParentSpan","onlyIfParent","createChildOrRootSpan","startSpanManual","finishAndSetSpan","startInactiveSpan","withActiveSpan","continueTrace","suppressTracing","startNewTrace","_startChildSpan","_startRootSpan","isRootSpan","infoParts","logSpanStart","setCapturedScopesOnSpan","initialCtx","experimental","standalone","samplingContext","tracesSampler","tracesSampleRate","sampleSpan","transactionContext","VUE_OP","HOOKS","unmount","findTrackComponent","trackComponents","formattedName","extractComponentName","compo","createTracingMixins","operation","internalHooks","internalHook","$_sentryRootSpan","shouldTrack","$_sentrySpans","oldSpan","$_sentryRootSpanTimer","DEFAULT_CONFIG","vueIntegration","integrationOptions","vueInit","_setupIntegration","appWithInstance","_instance","isMounted","tracingOptions","markdownItAttrs","stats","Sentry","sqlhabitRelease","sqlhabitEnv","userSlug","devtoolHook","forEachValue","Module","rawModule","_children","_rawModule","rawState","namespaced","addChild","getChild","hasChild","mutations","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","targetModule","newModule","getNamespace","rawChildModule","isRegistered","Store","strict","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","store","dispatch","commit","installModule","resetStoreVM","_devtoolHook","targetState","mutation","prepend","subscribeAction","devtoolPlugin","prototypeAccessors$1","genericSubscribe","resetStore","hot","oldVm","wrappedGetters","partial","$$state","enableStrictMode","_withCommit","rootState","parentState","getNestedState","noNamespace","_type","_payload","unifyObjectStyle","gettersProxy","splitPos","localType","makeLocalGetters","makeLocalContext","registerMutation","rootGetters","registerAction","rawGetter","registerGetter","vuexInit","$store","applyMixin","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","isValidMap","helper","startMessage","collapsed","groupCollapsed","group","endMessage","groupEnd","getFormattedTime","pad","getHours","getMinutes","getSeconds","getMilliseconds","createNamespacedHelpers","createLogger","stateBefore","stateAfter","transformer","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","formattedTime","formattedMutation","formattedAction","isGuest","authToken","loggedIn","authenticated","firstName","userHandle","isCustomer","isFreeUser","authentication","guest","setUsername","authenticate","legendPositions","legendPosition","xAxis","yAxis","seriesColumns","tableColumns","series","xAxisTitle","xAxisType","yAxisTitle","stacked","fields","fieldTypes","labels","datasetUpdatedAt","datasets","databases","currentDatabaseId","showAllXAxisLabels","xAxisTimeUnit","sqlReference","chart","tooltipEl","tooltipContainer","tooltipArrow","getOrCreateTooltip","labelColors","seriesName","dataPointX","dataPointY","dataPoints","tooltipBodyHtml","tooltipBody","positionX","positionY","caretX","caretY","bodyFont","colorPallette","detectTimeAggregation","fieldsIndexes","columnName","rawXValues","xValues","relativeDiffs","relativeDiffsDistr","aggregation","calculateXAxisTimeUnit","orderedXValues","chartInterval","aggregationUnit","calculateXAxisType","xAxisColumnType","generateSeriesKey","yAxisColumn","seriesValues","calculateLabels","columnIndex","seenLabels","orderedLabels","timeAggregation","calculateDatasets","calculatePieDatasets","datasetSeriesValues","seriesKey","yValue","orderedResult","xAxisColumnIndex","xLabel","yValueType","lineTension","borderColor","countInArray","formatDistanceLocale","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","addSuffix","comparison","buildFormatLongFn","defaultWidth","full","long","medium","short","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","_date","_baseDate","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","ordinalNumber","dirtyNumber","rem100","era","narrow","abbreviated","wide","quarter","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","parsePattern","parseResult","any","formatDistance","formatLong","formatRelative","localize","weekStartsOn","firstWeekContainsDate","chartTypes","chartType","currentDatabase","hasErrors","showLegend","optionsPlugins","align","external","externalTooltipHandler","legend","boxWidth","boxHeight","pointStyle","usePointStyle","optionsXAxis","displayFormats","millisecond","week","adapters","enUS","scaleLabel","labelString","ticks","autoSkip","maxTicksLimit","grid","drawOnChartArea","optionsYAxis","drawBorder","tickLength","databaseId","axesAndSeries","detectAxesAndSeries","yAxes","timeColumnsCount","timeColumnIndex","numericColumnsCount","numericColumnIndex","fieldIndex","textColumnsCount","textColumnIndex","yAxisColumnName","yAxisColumnIndex","yAxisColumnType","field","isStacked","clearState","setChartType","setChartTitle","setXAxisTitle","setYAxisTitle","setXAxis","setYAxis","setTableColumns","setSeries","setStacked","setLegendPosition","setDatabases","setCurrentDatabaseId","datasetId","setShowAllXAxisLabels","setSqlReference","slug","lessonCompleted","setCompletedFlag","setSlug","exerciseCompleted","exerciseSlug","Vuex","lesson","exercise","COMMENT_MODE","DOLLAR_STRING","TYPES","TYPES_RE","FUNCTIONS_RE","SQL_KW","built_in","SQL_BI","highlightChildren","errorsInstrumented","registerSpanErrorInstrumentation","errorCallback","addTracingExtensions","captureConsoleIntegration","consoleHandler","captureFeedback","associatedEventId","feedbackEvent","contact_email","associated_event_id","debugIntegration","debugger","extraErrorDataIntegration","captureErrorCause","exceptionName","errorData","nativeKeys","extraErrorInfo","cause","serializedError","_extractErrorData","normalizedErrorData","_enhanceEventWithErrorData","getCurrentHub","bindClient","getIntegration","eventFromEnvelope","makeMultiplexedTransport","fallbackTransport","otherTransports","validatedDsn","makeOverrideReleaseTransport","transports","getEvent","eventTypes","transportsWithFallback","overrideDsn","allTransports","filenameMetadataMap","parsedStacks","getMetadataForUrl","_sentryModuleMetadata","ensureMetadataStacksAreParsed","addMetadataToStackFrames","module_metadata","stripMetadataFromStackFrames","moduleMetadataIntegration","parameterize","strings","normalizeArray","allowAboveRoot","splitPathRe","splitPath","truncated","resolvedPath","resolvedAbsolute","rewriteFramesIntegration","isBrowser","iteratee","isWindowsFrame","startsWithSlash","oldFilename","fromParts","toParts","samePartsLength","outputParts","basename","generateIteratee","originalEvent","_processExceptionsEvent","sessionTimingIntegration","thirdPartyErrorFilterIntegration","frameKeys","BUNDLER_PLUGIN_APP_KEY_PREFIX","getBundleKeysForAllFramesWithFilenames","behaviourApplies","behaviour","filterKeys","third_party_code","formatIssueTitle","issue","unionErrors","formatIssueMessage","zodError","errorKeyMap","iss","issues","applyZodErrorsToEvent","zodErrorsIntegration","LazyLoadableIntegrations","replayIntegration","replayCanvasIntegration","feedbackIntegration","feedbackModalIntegration","feedbackScreenshotIntegration","contextLinesIntegration","httpClientIntegration","reportingObserverIntegration","browserProfilingIntegration","WindowWithMaybeIntegration","lazyLoadIntegration","scriptNonce","bundle","sentryOnWindow","cdnBaseUrl","getScriptURL","waitForLoad","integrationFn","reports","report","details","plainBody","crashId","ReportingObserver","buffered","isSentryRequestUrl","checkDsn","removeTrailingSlash","checkTunnel","failedRequestStatusCodes","failedRequestTargets","requestInfo","requestInit","_shouldCaptureResponse","bodyUsed","_getRequest","requestCookies","responseCookies","_shouldSendDefaultPii","_parseCookieHeaders","_createEvent","_fetchResponseHandler","_wrapFetch","cookieString","getResponseHeader","_parseCookieString","_getXHRResponseHeaders","_xhrResponseHandler","cookieHeader","_extractFetchHeaders","_getResponseSizeFromHeaders","contentLength","_isInGivenStatusRanges","givenRequestTarget","_isInGivenRequestTargets","body_size","sendDefaultPii","contextLines","frameContextLines","htmlFilename","urlPath","htmlLines","linesOfContext","sourceLine","pre_context","context_line","post_context","addContextToFrame","applySourceContextToFrame","addSourceContext","_optionalChain","lastAccessLHS","isNodeEnv","__SENTRY_BROWSER_BUNDLE__","bindReporter","metric","thresholds","reportAllChanges","prevValue","forceReport","rating","getRating","getNavigationEntry","getEntriesByType","getActivationStart","navEntry","activationStart","initMetric","navigationType","prerendering","wasDiscarded","PerformanceObserver","supportedEntryTypes","po","getEntries","onHidden","onHiddenOrPageHide","runOnce","firstHiddenTime","onVisibilityUpdate","getVisibilityWatcher","whenActivated","FCPThresholds","CLSThresholds","onCLS","onReport","visibilityWatcher","onFCP","sessionValue","sessionEntries","handleEntries","hadRecentInput","firstSessionEntry","lastSessionEntry","takeRecords","FIDThresholds","onFID","handleEntry","processingStart","interactionCountEstimate","minKnownInteractionId","maxKnownInteractionId","updateEstimate","interactionId","initInteractionCountPolyfill","durationThreshold","INPThresholds","getInteractionCountForNavigation","interactionCount","longestInteractionList","longestInteractionMap","processEntry","minLongestInteraction","existingInteraction","latency","interaction","onINP","entryType","prevEntry","inp","candidateInteractionIndex","estimateP98LongestInteraction","PerformanceEventTiming","LCPThresholds","reportedMetricIDs","onLCP","lastEntry","stopListening","TTFBThresholds","whenReady","onTTFB","responseStart","_previousCls","_previousFid","_previousLcp","_previousTtfb","_previousInp","addClsInstrumentationHandler","stopOnCallback","addMetricObserver","instrumentCls","addLcpInstrumentationHandler","instrumentLcp","addFidInstrumentationHandler","instrumentFid","addInpInstrumentationHandler","instrumentInp","addPerformanceInstrumentationHandler","instrumentPerformanceObserver","getCleanupCallback","instrumentTtfb","previousValue","REPLAY_SESSION_KEY","REPLAY_EVENT_NAME","UNABLE_TO_SEND_REPLAY","NETWORK_BODY_MAX_SIZE","CONSOLE_ARG_MAX_SIZE","REPLAY_MAX_EVENT_BUFFER_SIZE","MAX_REPLAY_DURATION","_nullishCoalesce$1","lhs","rhsFn","_optionalChain$5","NodeType$1","isShadowRoot","_2","isNativeShadowDom","stringifyStylesheet","stringifyRule","importStringified","isCSSImportRule","styleSheet","statement","layerName","supportsText","media","mediaText","escapeImportStatement","isCSSStyleRule","selectorText","cssStringified","fixSafariColons","NodeType","Mirror","idNodeMap","nodeMetaMap","getId","_3","getMeta","_4","_5","getNode","getIds","removeNodeFromMap","hasNode","shouldMaskInput","maskInputOptions","maskInputValue","isMasked","maskInputFn","ORIGINAL_ATTRIBUTE_NAME","getInputType","extractFileExtension","_6","cachedImplementations$1","getImplementation$1","setTimeout$2","clearTimeout$2","tagNameRegex","IGNORED_NODE","genId","canvasService","canvasCtx","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","absoluteToStylesheet","quote1","quote2","path3","filePath","maybeQuote","extractOrigin","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","attributeValue","getHref","ownerSVGElement","customHref","transformAttribute","maskAttributeFn","collectCharacters","regEx","descriptorsStr","inParens","getAbsoluteSrcsetString","ignoreAttribute","distanceToMatch","matchPredicate","createMatchPredicate","selector","eIndex","elementClassMatchesRegex","needMaskingText","maskTextClass","maskTextSelector","unmaskTextClass","unmaskTextSelector","maskAllText","autocomplete","maskDistance","unmaskDistance","serializeNode","mirror","blockClass","blockSelector","unblockSelector","inlineStylesheet","maskTextFn","dataURLOptions","recordCanvas","keepIframeSrcFn","newlyAddedElement","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","DOCUMENT_TYPE_NODE","DocumentType","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","stylesheet","styleSheets","_cssText","innerText","forceMask","__context","originalGetImageData","pixel","is2DCanvasBlank","rr_dataURL","quality","canvasDataURL","imageSrc","priorCrossOrigin","recordInlineImage","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_scrollLeft","rr_scrollTop","rr_width","rr_height","contentDocument","rr_src","customElements","isCustom","serializeElementNode","parentTagName","isStyle","isScript","isTextarea","previousSibling","_7","_8","_9","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","as","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isElement$1","isShadow","iframeEl","fired","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","_optionalChain$4","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle$1","remaining","getImplementation","clearTimeout$1","setTimeout$1","hookSetter","isRevoked","__rrweb_original__","receiver","nowTimestamp","getWindowScroll","scrollingElement","_10","_11","_12","_13","_14","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","checkAncestors","blockedPredicate","isUnblocked","blockDistance","unblockDistance","isIgnored","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","_18","StyleSheetMirror","styleIDMap","idStyleMap","newId","generateId","getShadowHost","shadowHost","_19","_20","_21","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","_optionalChain$3","isNodeInLinkedList","DoubleLinkedList","addNode","__ln","moveKey","MutationBuffer","frozen","locked","texts","attributeMap","removes","mapRemoves","movedMap","addedSet","movedSet","droppedSet","processMutations","processMutation","adds","addedIds","getNextId","nextId","pushAdd","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","childSn","attachIframe","canvasManager","addWindow","observeAttachShadow","attachLinkElement","isParentRemoved","isAncestorInSet","candidate","tailNode","_node","unhandledNode","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","mutationCb","attributeName","isInputMasked","unattachedDoc","implementation","createHTMLDocument","pname","newPriority","getPropertyPriority","addedNodes","genAdds","removedNodes","nodeId","isSerialized","deepDelete","processedNodeManager","inOtherBuffer","targetId","lock","unlock","addsSet","_isParentRemoved","_isAncestorInSet","registerErrorHandler","unregisterErrorHandler","callbackWrapper","_optionalChain$2","mutationBuffers","composedPath","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","onMutation","attributeOldValue","characterDataOldValue","childList","subtree","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","currentPointerType","eventKey","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","getHandler","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","updatePosition","scrollLeftTop","scroll","INPUT_TAGS","lastInputValueMap","initInputObserver","inputCb","ignoreClass","ignoreSelector","userTriggeredOnInput","userTriggered","isTrusted","isChecked","cbWithDedup","lastInputValue","currentWindow","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","styleId","ownerNode","initAdoptedStyleSheetObserver","hostId","patchTarget","ShadowRoot","originalPropertyDescriptor","_15","_16","adoptStyleSheets","initObservers","mutationObserver","recordDOM","mousemoveHandler","mousemoveCb","callbackThreshold","mousemoveCallback","timeBaseline","wrappedCb","totalOffset","timeOffset","DragEvent","Drag","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","viewportResizeCb","lastH","lastW","initViewportResizeObserver","mediaInteractionHandler","mediaInteractionCb","volume","muted","playbackRate","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","styleSheetRuleCb","CSSStyleSheet","insertRule","argumentsList","deleteRule","replaceSync","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","styleDeclarationCb","ignoreCSSAttributes","CSSStyleDeclaration","_17","removeProperty","initStyleDeclarationObserver","collectFonts","fontCb","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","restoreHandler","initFontObserver","selectionObserver","selectionCb","updateSelection","isCollapsed","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","customElementCb","initCustomElementObserver","pluginHandlers","_22","_23","CrossOriginIframeMirror","generateIdFn","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","_optionalChain$1","IframeManagerNoop","crossOriginIframeMirror","crossOriginIframeRootIdMap","addLoadListener","IframeManager","iframes","crossOriginIframeMap","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","handleMessage","loadListener","isAttachIframe","adoptedStyleSheets","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","replaceIdOnNode","patchRootIdOnNode","IncrementalSnapshot","Mutation","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","Input","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","AdoptedStyleSheet","iframeMirror","ShadowDomManagerNoop","ShadowDomManager","shadowDoms","restoreHandlers","patchAttachShadow","iframeElement","manager","resetShadowRoots","CanvasManagerNoop","snapshot","StylesheetManager","trackedLinkElements","adoptedStyleSheetCb","linkEl","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","ProcessedNodeManager","nodeMap","thisBuffer","onRequestAnimationFrame","_takeFullSnapshot","cleanFrame","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","maxCanvasSize","packFn","mousemoveWait","recordAfter","getCanvasManager","inEmittingFrame","passEmitsToParent","tel","radio","checkbox","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill","incrementalSnapshotCount","exceedCount","exceedTime","takeFullSnapshot","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","__RRWEB_EXCLUDE_IFRAME__","getMirror","nodeMirror","getCanvasManagerFn","_getCanvasManager","__RRWEB_EXCLUDE_SHADOW_DOM__","slimDOM","initialOffset","canvasMutationCb","CustomElement","_addBreadcrumb","_capture","_trace","_logger","infoTick","setConfig","captureExceptions","traceInternals","makeReplayLogger","ReplayEventTypeIncrementalSnapshot","timestampToMs","timestampToS","addBreadcrumbEvent","triggerUserActivity","checkAndHandleExpiredSession","addUpdate","throttledAddEvent","INTERACTIVE_SELECTOR","getClosestInteractive","getClickTargetNode","getTargetNode","isEventWithTarget","onWindowOpen","originalWindowOpen","IncrementalMutationSources","ClickDetector","slowClickConfig","_addBreadcrumbEvent","_lastMutation","_lastScroll","_timeout","_threshold","_scrollTimeout","scrollTimeout","_replay","_ignoreSelector","addListeners","cleanupWindowOpen","nowInSeconds","_teardown","removeListeners","_checkClickTimeout","SLOW_CLICK_TAGS","ignoreElement","isClickBreadcrumb","newClick","clickBreadcrumb","click","_scheduleCheckClicks","registerScroll","registerClick","_handleMultiClick","_getClicks","_checkClicks","timedOutClicks","mutationAfter","scrollAfter","_generateBreadcrumbs","hadScroll","hadMutation","isSlowClick","timeAfterClickMs","endReason","route","getCurrentRoute","updateClickDetectorForRecordingEvent","clickDetector","isIncrementalEvent","isIncrementalMouseInteraction","createBreadcrumb","ATTRIBUTES_TO_RECORD","getAttributesToRecord","normalizedKey","handleDomListener","isClick","getDomTarget","getBaseDomBreadcrumb","handleDom","handleKeyboardEvent","updateUserActivity","hasModifierKey","isCharacterKey","baseBreadcrumb","getKeyboardBreadcrumb","ENTRY_TYPES","initiatorType","responseEnd","decodedBodySize","encodedBodySize","responseStatus","transferSize","getAbsoluteTime","navigation","domComplete","domContentLoadedEventStart","domContentLoadedEventEnd","domInteractive","loadEventStart","loadEventEnd","redirectCount","webVitalHandler","replayPerformanceEntries","createPerformanceEntry","getLargestContentfulPaint","getWebVital","isLayoutShift","sources","getCumulativeLayoutShift","layoutShifts","nodeIds","getFirstInputDelay","getInteractionToNextPaint","attributions","EventBufferSizeExceededError","EventBufferArray","_totalSize","hasCheckout","hasEvents","eventSize","finish","eventsRet","getEarliestTimestamp","WorkerHandler","_worker","ensureReady","_ensureReadyPromise","_getAndIncrementId","EventBufferCompressionWorker","_earliestTimestamp","_sendEventToWorker","_finishRequest","EventBufferProxy","_fallback","_compression","_used","_ensureWorkerIsLoadedPromise","_ensureWorkerIsLoaded","ensureWorkerIsLoaded","_switchToCompressionWorker","addEventPromises","createEventBuffer","useCompression","customWorkerUrl","__SENTRY_EXCLUDE_REPLAY_WORKER__","_getWorkerUrl","_loadWorker","hasSessionStorage","sessionStorage","clearSession","removeItem","deleteSession","isSampled","lastActivity","segmentId","previousSessionId","saveSession","setItem","createSession","sessionSampleRate","allowBuffering","stickySession","getSessionSampleType","isExpired","initialTime","expiry","targetTime","isSessionExpired","maxReplayDuration","sessionIdleExpire","shouldRefreshSession","loadOrCreateSession","sessionOptions","existingSession","sessionStringFromStorage","getItem","sessionObj","fetchSession","addEventSync","shouldAddEvent","_addEvent","eventBuffer","recordingMode","eventAfterPossibleCallback","isCustomEvent","maybeApplyCallback","beforeAddRecordingEvent","handleException","isPaused","timestampInMs","sessionIdlePause","initialTimestamp","isFeedbackEvent","handleAfterSendEvent","replayContext","traceIds","handleTransactionEvent","errorIds","replayId","beforeErrorSampling","sendBufferedReplayOrFlush","handleErrorEvent","handleBeforeSendEvent","exceptionValue","handleHydrationError","handleBreadcrumbs","isBreadcrumbWithCategory","isTruncated","normalizedArgs","normalizedArg","_meta","warnings","normalizeConsoleBreadcrumb","normalizeBreadcrumb","beforeAddBreadcrumb","handleGlobalEventListener","isReplayEvent","replay_id","getSessionId","feedbackId","addFeedbackBreadcrumb","__rrweb__","isRrwebError","_experiments","isErrorEventSampled","errorSampleRate","shouldSampleForBufferEvent","createPerformanceSpans","handleHistorySpanListener","handleHistory","urls","addNetworkBreadcrumb","shouldFilterRequest","getBodySize","textEncoder","formDataStr","_serializeFormData","byteLength","parseContentLengthHeader","getBodyString","mergeWarning","newMeta","existingWarnings","makeNetworkReplayBreadcrumb","buildSkippedNetworkRequestOrResponse","bodySize","buildNetworkRequestOrResponse","normalizedBody","exceedsSizeLimit","isProbablyJson","_strIsProbablyJson","truncatedBody","normalizeNetworkBody","getAllowedHeaders","allowedHeaders","filteredHeaders","formData","urlMatches","baseURI","fixedUrl","getFullUrl","captureFetchBreadcrumbToReplay","request_body_size","requestBodySize","response_body_size","responseBodySize","captureDetails","networkDetailAllowUrls","networkDetailDenyUrls","networkCaptureBodies","networkRequestHeaders","getHeadersFromOptions","getRequestHeaders","requestBody","_getFetchRequestArgBody","bodyStr","_getRequestInfo","networkResponseHeaders","getAllHeaders","bodyText","_tryCloneResponse","_getResponseText","finally","_tryGetResponseText","_parseFetchResponseBody","getResponseData","_getResponseInfo","_prepareFetchData","allHeaders","captureXhrBreadcrumbToReplay","getResponseHeaders","requestWarning","responseBody","responseWarning","_parseXhrResponse","_getXhrResponseBody","_prepareXhrData","enrichXhrBreadcrumb","reqSize","resSize","_getBodySize","handleNetworkBreadcrumbs","_isXhrBreadcrumb","_isXhrHint","_isFetchBreadcrumb","_isFetchHint","enrichFetchBreadcrumb","beforeAddNetworkBreadcrumb","createMemoryEntry","memoryEntry","jsHeapSizeLimit","totalJSHeapSize","usedJSHeapSize","memory","getHandleRecordingEmit","hadFirstEvent","_isCheckout","setInitialState","shouldRecordCanvas","isRecordingCanvas","useCompressionOption","blockAllMedia","networkDetailHasUrls","networkRequestHasHeaders","networkResponseHasHeaders","createOptionsEvent","addSettingsEvent","earliestEvent","sendReplayRequest","recordingData","eventContext","preparedRecordingData","payloadWithSequence","replayHeaders","sequence","prepareRecordingData","baseEvent","replay_start_timestamp","error_ids","trace_ids","replay_type","replayEvent","eventHint","preparedEvent","prepareReplayEvent","createReplayEnvelope","TransportStatusCodeError","RateLimitError","sendReplay","replayData","retryConfig","_retryCount","THROTTLED","throttle","maxCount","durationSeconds","isThrottled","_cleanup","wasThrottled","ReplayContainer","recordingOptions","__init5","__init6","performanceEntries","_lastActivity","_isPaused","_requiresManualStart","_hasInitializedCoreListeners","initialUrl","_recordingOptions","_debouncedFlush","callbackReturnValue","maxTimerId","cancelTimers","debounce","flushMinDelay","flushMaxDelay","_throttledAddEvent","slowClickTimeout","slowClickIgnoreSelectors","experiments","_canvas","initializeSampling","requiresManualStart","_initializeSessionForSampling","_initializeRecording","_updateUserActivity","startBuffering","startRecording","canvasOptions","_stopRecording","continuousCheckout","_onMutationHandler","stopRecording","forceFlush","resetReplayIdOnDynamicSamplingContext","_removeListeners","_checkSession","continueRecording","flushImmediate","activityTime","hasStoppedRecording","_updateSessionActivity","_maybeSaveSession","cbResult","conditionalFlush","cancelFlush","_clearContext","lastActiveSpan","lastRootSpan","_addListeners","_refreshSession","_handleVisibilityChange","_handleWindowBlur","_handleWindowFocus","_handleKeyboardEvent","includeReplay","addGlobalListeners","_performanceCleanupCallback","addPerformanceEntry","onEntries","clearCallbacks","clearCallback","setupPerformanceObserver","_doChangeToForegroundTasks","_doChangeToBackgroundTasks","_createCustomBreadcrumb","_addPerformanceEntries","initialTimestampInSeconds","_updateInitialTimestampFromEventBuffer","_popEventContext","_runFlush","addMemoryEntry","dropReason","tooShort","minReplayDuration","tooLong","_flushInProgress","_flushLock","mutationLimit","overMutationLimit","mutationBreadcrumbLimit","selectors","defaultSelectors","MEDIA_SELECTORS","DEFAULT_NETWORK_HEADERS","_initialized","Replay","__initStatic","maskAttributes","unmask","unblock","maskFn","privacyOptions","getPrivacyOptions","maskAttribute","_initialOptions","_getMergedNetworkHeaders","_isInitialized","_setup","_initialize","getReplayId","getRecordingMode","_maybeLoadFromReplayCanvasIntegration","initialOptions","replaysSessionSampleRate","replaysOnErrorSampleRate","loadReplayOptionsFromClient","canvasIntegration","getReplay","CanvasContext","CanvasContext2","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","contextMap","variableListFor","serializeArg","Float32Array","Float64Array","Int32Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","arraybuffer","DataView","byteOffset","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","patchGLPrototype","recordArgs","hookHandler","CanvasManager","pendingCanvasMutations","windowsSet","windows","snapshotInProgressMap","enableManualSnapshot","initFPSWorker","rafStamps","latestId","invokeId","startRAFTimestamping","startPendingCanvasMutationFlusher","initCanvasFPSObserver","WeakRef","initCanvasMutationObserver","canvasContextReset","fps","rafId","takeSnapshot","cancelAnimationFrame","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","canvasElement","isManualSnapshot","timeBetweenSnapshots","lastSnapshotTime","getCanvas","matchedCanvas","searchCanvas","deref","takeCanvasSnapshots","COLOR_BUFFER_BIT","createImageBitmap","bitmap","flushPendingCanvasMutations","setLatestRAFTimestamp","flushPendingCanvasMutationFor","valuesWithType","CANVAS_QUALITY","high","DEFAULT_MAX_CANVAS_SIZE","maxCanvasWidth","maxCanvasHeight","_canvasOptions","canvasManagerResolve","_canvasManager","getCanvasManagerOptions","DOCUMENT","NAVIGATOR","TRIGGER_LABEL","FEEDBACK_WIDGET_SOURCE","sendFeedback","optionOverrides","onFormOpen","onFormClose","onSubmitSuccess","onSubmitError","onFormSubmitted","themeDark","themeLight","setAttributesNS","SIZE","XMLNS$2","Actor","triggerLabel","triggerAriaLabel","styleNonce","ariaHidden","viewBox","clipPath","speakerDefs","speakerClipPathDef","speakerRect","FeedbackIcon","createActorStyles","appendToDom","removeFromDom","DEFAULT_LIGHT","foreground","accentForeground","accentBackground","successColor","errorColor","outline","interactiveFilter","DEFAULT_DARK","getThemedCssVariables","buildFeedbackIntegration","getModalIntegration","getScreenshotIntegration","autoInject","showBranding","isEmailRequired","isNameRequired","showEmail","showName","enableScreenshot","useSentryUser","colorScheme","addScreenshotButtonLabel","cancelButtonLabel","confirmButtonLabel","emailLabel","emailPlaceholder","formTitle","isRequiredLabel","messageLabel","messagePlaceholder","nameLabel","namePlaceholder","removeScreenshotButtonLabel","submitButtonLabel","successMessageText","_shadow","_subscriptions","_createShadow","attachShadow","createMainStyles","_findIntegration","functionMethodName","_loadAndRenderDialog","screenshotRequired","maxTouchPoints","isSecureContext","modalIntegration","screenshotIntegration","dialog","createDialog","_attachTo","targetEl","_createActor","actor","attachTo","createWidget","createForm","getFeedback","l$1","u$1","o$1","r$1","f$1","c$1","s$1","a$1","h$1","v$1","p$1","y$1","defaultProps","d$1","__k","__b","__e","__d","__c","__v","__i","__u","g$1","b$1","m$1","w$1","__P","M","__n","k$1","x$1","C$1","__r","debounceRendering","j$1","P$1","I","N","T$1","A$1","D$1","C","H","__E","q$1","__h","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","z$1","diffed","localName","__html","componentWillUnmount","getDerivedStateFromError","componentDidCatch","forceUpdate","__H","__V","D","__N","__m","useCallback","useContext","useDebugValue","useEffect","useErrorBoundary","useId","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","XMLNS$1","SentryLogo","_jsxFileName$5","DialogHeader","logoHtml","__self","__source","dangerouslySetInnerHTML","_jsxFileName$4","retrieveStringValue","Form","defaultEmail","defaultName","onSubmit","screenshotInput","setError","showScreenshotInput","setShowScreenshotInput","ScreenshotInputComponent","screenshotError","setScreenshotError","onScreenshotError","hasAllRequiredFields","missingFields","emptyFields","getMissingFields","handleSubmit","LabelText","isRequired","defaultValue","autoFocus","WIDTH","HEIGHT","XMLNS","SuccessIcon","_jsxFileName$3","Dialog","successIconHtml","setTimeoutId","handleOnSuccessClick","userKey","currentUser","isolationUser","globalUser","createDialogStyles","originalOverflow","renderContent","createInput","B$1","_jsxFileName$1","createScreenshotInputStyles","surface200","gray100","_jsxFileName","CROP_BUTTON_OFFSET","CROP_BUTTON_SIZE","DPI","constructRect","getContainedSize","imgClientHeight","imgClientWidth","ratio","ScreenshotEditorFactory","imageBuffer","useTakeScreenshot","onBeforeScreenshot","onScreenshot","onAfterScreenshot","stream","mediaDevices","getDisplayMedia","audio","monitorTypeSurfaces","preferCurrentTab","selfBrowserSurface","surfaceSwitching","srcObject","onloadedmetadata","getTracks","track","play","takeScreenshot","useTakeScreenshotFactory","CropCorner","onGrabButton","CropCornerFactory","canvasContainerRef","cropContainerRef","croppingRef","croppingRect","setCroppingRect","confirmCrop","setConfirmCrop","isResizing","setIsResizing","resizeCropper","cropper","imageDimensions","cropButton","handleMouseMove","makeHandleMouseMove","handleMouseUp","croppingBox","strokeRect","cropCanvas","cropBoundingRect","initialPositionRef","initialX","initialY","imageSource","videoWidth","videoHeight","nonce","moveEvent","newStartX","newStartY","newEndX","newEndY","cutoutCanvas","imageBox","cutoutCtx","submit","toBlob","arrayBuffer","feedbackAsyncIntegration","feedbackSyncIntegration","COUNTER_METRIC_TYPE","GAUGE_METRIC_TYPE","SET_METRIC_TYPE","DISTRIBUTION_METRIC_TYPE","getMetricsAggregatorForClient","Aggregator","globalMetricsAggregators","aggregator","newAggregator","addToMetricsAggregator","metricTags","distribution","ensureNumber","metrics","gauge","sanitizeTagKey","tagValueReplacements","sanitizeTagValue","getCharOrReplacement","captureAggregateMetrics","metricBucketItems","metricsEnvelope","tagEntries","maybeTags","serializeMetricBuckets","createMetricEnvelopeItem","createMetricEnvelope","METRIC_MAP","weight","_last","_min","_max","_sum","_count","rv","simpleHash","BrowserMetricsAggregator","_buckets","_interval","unsanitizedName","unsanitizedUnit","unsanitizedTags","maybeFloatTimestamp","sanitizeTags","sanitizeUnit","stringifiedTags","getBucketKey","previousWeight","metricBuckets","instrumentFetchRequest","shouldCreateSpan","shouldAttachHeaders","spanOrigin","shouldCreateSpanResult","__span","contentLengthNum","endSpan","getFullURL","hasParent","fetchOptionsObj","sentryTraceHeader","sentryBaggageHeader","newHeaders","prevBaggageHeader","prevHeaderStrippedFromSentryBaggage","stripBaggageHeaderOfSentryBaggageValues","headerName","headerValue","existingBaggageHeader","newBaggageHeaders","headerItem","addTracingHeadersToFetchRequest","responseToSpanId","spanIdToEndTimestamp","defaultRequestInstrumentationOptions","traceFetch","traceXHR","enableHTTPTimings","trackFetchStreamPerformance","instrumentOutgoingRequests","shouldCreateSpanForRequest","tracePropagationTargets","shouldAttachHeadersWithTargets","targetUrl","resolvedUrl","currentOrigin","isSameOriginRequest","isRelativeSameOriginRequest","updatedTimestamp","addFetchEndInstrumentationHandler","createdSpan","addHTTPTimings","__sentry_xhr_span_id__","setHeaderOnXhr","addTracingHeadersToXhrRequest","xhrCallback","nextHopProtocol","isPerformanceResourceTiming","spanData","resourceTiming","extractNetworkProtocol","timingSpanData","redirectStart","fetchStart","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","resourceTimingEntryToSpanData","isMeasurementValue","startAndEndSpan","startTimeInSeconds","parentStartTime","startStandaloneWebVitalSpan","passedAttributes","userDisplay","profileId","getBrowserPerformanceAPI","msToSec","trackClsAsStandaloneSpan","standaloneClsEntry","pageloadSpanId","standaloneCLsValue","supportsLayoutShift","sentSpan","_collectClsOnce","clsValue","routeName","sendStandaloneClsSpan","cleanupClsHandler","unsubscribeStartNavigation","spanJSON","MAX_INT_AS_BYTES","_lcpEntry","_clsEntry","_performanceCursor","_measurements","startTrackingWebVitals","recordClsStandaloneSpans","fidCleanupCallback","lcpCleanupCallback","ttfbCleanupCallback","addTtfbInstrumentationHandler","clsCleanupCallback","addPerformanceEntries","transactionStartTime","_addPerformanceNavigationTiming","requestStartTimestamp","responseEndTimestamp","responseStartTimestamp","_addRequest","_addNavigationSpans","requestTime","measureStartTimestamp","startTimeStamp","measureEndTimestamp","_addMeasureSpans","firstHidden","shouldRecord","resourceUrl","parsedUrl","setResourceEntrySizeData","deliveryType","renderBlockingStatus","_addResourceSpans","connection","effectiveType","rtt","deviceMemory","hardwareConcurrency","_trackNavigator","_addTtfbRequestTimeToMeasurements","fidMark","recordClsOnPageloadSpan","measurementName","measurement","_setWebVitalAttributes","eventEnd","dataKey","entryVal","LAST_INTERACTIONS","INTERACTIONS_SPAN_MAP","startTrackingINP","inpCallback","INP_ENTRY_MAP","interactionType","spanToUse","pointerdown","pointerup","mousedown","mouseup","touchstart","touchend","mouseover","mouseout","mouseenter","mouseleave","pointerover","pointerout","pointerenter","pointerleave","dragstart","dragend","drag","dragenter","dragleave","dragover","drop","keydown","keyup","keypress","TRACING_DEFAULTS","idleTimeout","finalTimeout","childSpanTimeout","FINISH_REASON_HEARTBEAT_FAILED","FINISH_REASON_IDLE_TIMEOUT","FINISH_REASON_FINAL_TIMEOUT","FINISH_REASON_EXTERNAL_FINISH","startIdleSpan","startSpanOptions","activities","_idleTimeoutID","_finished","_finishReason","_autoFinishAllowed","disableAutoFinish","_cleanupHooks","beforeSpanEnd","previousActiveSpan","_startIdleSpan","_cancelIdleTimeout","_restartIdleTimeout","_restartChildSpanTimeout","onIdleSpanEnded","discardedSpans","childSpanJSON","childEndTimestamp","childStartTimestamp","spanStartedBeforeIdleSpanEnd","spanEndedBeforeFinalTimeout","stringifiedSpan","removeChildSpanFromSpan","definedEndTimestamp","spanEndTimestamp","childEndTimestamps","latestSpanEndTimestamp","spanStartTimestamp","startedSpan","endedSpan","spanToAllowAutoFinish","DEFAULT_BROWSER_TRACING_OPTIONS","instrumentNavigation","instrumentPageLoad","markBackgroundSpan","enableLongTask","enableLongAnimationFrame","enableInp","browserTracingIntegration","enableInteractions","enableStandaloneClsSpans","beforeStartSpan","_collectWebVitals","initialScript","invokerType","sourceURL","sourceFunctionName","sourceCharPosition","parentOp","parentStartTimestamp","spanOptions","latestRoute","_createRouteSpan","isPageloadTransaction","finalStartSpanOptions","idleSpan","emitFinish","startingUrl","traceOptions","getMetaContent","oldPropagationContext","startBrowserTracingPageLoadSpan","startBrowserTracingNavigationSpan","cancelledStatus","inflightInteractionSpan","registerInteractionTransaction","currentRootSpanOp","registerInteractionListener","_latestRoute","activeRootSpan","isPerformanceEventTiming","registerInpInteractionListener","metaName","metaTag","MIN_DELAY","START_DELAY","MAX_DELAY","makeOfflineTransport","createStore","flushTimer","retryDelay","flushIn","unref","flushWithBackOff","isRetry","shouldStore","flushAtStartup","promisifyRequest","oncomplete","onsuccess","getAllKeys","createIndexedDbStore","getStore","dbName","storeName","indexedDB","onupgradeneeded","createObjectStore","dbp","db","objectStore","maxQueueSize","put","deserialized","makeBrowserOfflineTransport","makeIndexedDbOfflineTransport","MS_TO_NS","THREAD_ID_STRING","THREAD_NAME","OS_PLATFORM","OS_PLATFORM_VERSION","OS_ARCH","OS_BROWSER","OS_MODEL","OS_LOCALE","userAgentData","enrichWithThreadInformation","isProcessedJSSelfProfile","EMPTY_STACK_ID","STACK_ID","samples","stacks","thread_metadata","firstSample","adjustForOriginChange","jsSample","stackId","elapsed_since_start_ns","stack_id","thread_id","stackTop","frameId","resourceId","resources","sample","convertJSSelfProfileToSampledFormat","createProfilePayload","processed_profile","getTraceId","enrichedThreadProfile","transactionStartMs","transactionEndMs","build_number","device","manufacturer","architecture","is_emulator","applyDebugMetadata","transactions","active_thread_id","relative_start_ns","relative_end_ns","isAutomatedPageLoadSpan","getHighEntropyValues","platformVersion","fullVersionList","firstUa","brand","resource_paths","PROFILING_CONSTRUCTOR_FAILED","MAX_PROFILE_DURATION_MS","shouldProfileSpan","profilesSampleRate","createProfilingEvent","isValidProfile","PROFILE_MAP","takeProfileFromGlobalCache","startProfileForSpan","profiler","JSProfilerConstructor","Profiler","maxSamples","sampleInterval","maxBufferSize","startJSSelfProfile","onProfileHandler","maxDurationTimeoutID","addProfileToGlobalCache","originalEnd","profiledTransactionEvents","findProfiledTransactionsFromEnvelope","profilesToAddToEnvelope","profiledTransaction","profileEvent","profiles","addProfilesToEnvelope","localResult","localDuration","formattedDuration","oldVal","$metaTag","VueToast","LightStarIcon","SolidStarIcon","starred","queryBody","starIcon","mountStarQueryIcon","$container","star_icon","StarQueryIcon","rowDelta","columnDelta","currentCursorPosition","newColumn","prevRowLength","editorContainer","schemaAutoCompleter","ea","sqlAutoCompleter","matchedKeywords","PGSQL_KEYWORDS","screen","queryBodyField","latestQuery","defaultQuery","form","$queryResult","alert","submitQueryFrom","$queryResultContainer","QueryResult","$submitButton","$queryForm","formSubmitted","$result","query_result","QueryError","showHeadline","resultLength","en","isNullOrUndef","isNumberFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","each","loopable","_elementsEqual","a0","ilen","v0","v1","datasetIndex","clone$1","klen","isValidKey","_merger","tval","sval","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","_splitKey","_getKeyResolver","_capitalize","defined","setsEqual","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","niceNum","roundedRange","almostEquals","niceRange","epsilon","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","table","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","requestAnimFrame","throttled","updateFn","updateArgs","ticking","_toLeftRightCenter","_alignStartEnd","_getStartAndCountOfVisiblePoints","points","animationsDisabled","pointCount","_sorted","iScale","_parsed","axis","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","xmin","xmax","ymin","ymax","atEdge","elasticIn","elasticOut","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","lim","p2b","n2b","b2n","n2p","map$1","h1","h2","eq","hexString","isShort","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb2hsl","hueValue","calln","hsl2rgb","hueParse","hwb2rgb","hsv2rgb","Y","X","W","Q","K","G","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","unpacked","tkeys","nk","unpack","transparent","RGB_RE","modHSL","fromObject","functionParse","rgbParse","Color","hexParse","_rgb","_valid","valid","rgbString","hslString","mix","w2","rgb1","rgb2","clearer","greyscale","opaquer","lighten","darken","saturate","desaturate","rotate","index_esm","isPatternOrGradient","getHoverColor","overrides","getScope$1","_descriptors","animation","getDevicePixelRatio","hover","hoverBackgroundColor","hoverBorderColor","hoverColor","indexAxis","intersect","includeInvisible","maintainAspectRatio","onHover","parsing","responsive","scales","showLine","drawActiveElementsOnTop","describe","override","targetScope","targetName","scopeObject","targetScopeObject","privateName","_scriptable","_indexable","_measureText","gc","longest","textWidth","_longestText","arrayOfThings","garbageCollect","jlen","nestedThing","gcLen","_alignPixel","currentDevicePixelRatio","clearCanvas","resetTransform","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","rotation","radius","rad","ellipse","SQRT1_2","borderWidth","_isPointInArea","area","clipArea","unclipArea","_steppedLineTo","flip","midpoint","_bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","strokeWidth","strokeColor","translation","setRenderOpts","maxWidth","decorateText","strikethrough","underline","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","objProps","toTRBL","toTRBLCorners","toPadding","toFont","toFontString","inputs","cacheable","createContext","parentContext","_createResolver","prefixes","rootScopes","getTarget","_cacheable","_scopes","_rootScopes","_getTarget","deleteProperty","_keys","_cached","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getKeysFromAllScopes","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_subProxy","isScriptable","_resolveScriptable","isIndexable","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","resolveFallback","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","EPSILON","getPoint","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","splineCurveMonotone","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","iPixel","vPixel","monotoneCompute","capControlPoint","pt","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","getPositionedStyle","useOffsetPos","getRelativePosition","boxSizing","paddings","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","containerSize","containerStyle","containerBorder","containerPadding","getContainerSize","retinaScale","forceRatio","forceStyle","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","cacheKey","getRtlAdapter","rtl","rectX","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","prevTextDirection","restoreTextDirection","propertyFn","between","normalizeSegment","_boundSegment","startBound","endBound","getSegment","subStart","shouldStart","shouldStop","_boundSegments","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","p0","p0DataIndex","p1DataIndex","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","animator","_request","_charts","_running","_lastDate","_notify","anims","numSteps","currentStep","_refresh","draw","_active","_total","tick","_getAnims","charts","progress","listen","_duration","interpolators","factor","c0","Animation","cfg","_fn","_easing","easing","_start","_loop","_prop","_to","_promises","elapsed","remain","rej","animationOptions","properties","animations","visible","Animations","_properties","animatedProps","_animateOptions","$shared","$animations","resolveTargetOptions","_createAnimations","awaitAll","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","singleMode","otherValue","getOrCreateStack","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_bottom","getFirstScaleId","clearStacks","isDirectUpdateMode","cloneIfNotShared","shared","DatasetController","_ctx","_cachedDataOpts","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","_stacked","addElements","updateIndex","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","_destroy","_dataCheck","adata","convertObjectDataToArray","datasetElementType","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","NaN","getMinMax","canStack","otherScale","createStack","NEGATIVE_INFINITY","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","getLabelForValue","_clip","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","sharing","datasetElementScopeKeys","resolveNamedOptions","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","updateElements","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","$bar","visibleMetas","getAllScaleValues","updateMinAndPrev","getPixelForTick","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","getBasePixel","isHorizontal","_getRuler","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","_getStacks","grouped","skipNull","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","maxBarThickness","percent","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","rects","_index_","_value_","beginAtZero","BubbleController","DoughnutController","innerRadius","outerRadius","_getRotation","_getCircumference","circumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","cutout","chartWeight","_getRingWeight","ratioX","ratioY","startAngle","endAngle","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","LineController","_dataset","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","tooltipPosition","useFinalPosition","getProps","defaultRoutes","formatters","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","tickOpts","ticksLimit","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","majorIndices","major","getMajorIndices","numMajorIndices","newTicks","skipMajors","evenMajorSpacing","getEvenSpacing","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","grace","drawTicks","tickWidth","tickColor","minRotation","maxRotation","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","offsetFromEdge","numItems","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_reversePixels","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getPadding","getTicks","xLabels","yLabels","beforeLayout","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetRight","isFullSize","fullSize","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x2","positionAxisID","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","_computeLabelItems","tickAndPadding","hTickAndPadding","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","drawGrid","drawLine","lineDashOffset","lastLineWidth","drawLabels","drawTitle","titleX","titleY","titleArgs","_layers","tz","gz","getSortedVisibleDatasetMetas","axisID","_maxDigits","TypedRegistry","isForType","isPrototypeOf","parentScope","isIChartComponent","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","registry","controllers","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","_getRegistryForType","_exec","itemReg","camelMethod","ScatterController","DateAdapter","chartOptions","startOf","endOf","members","metaset","lookupMethod","evaluateInteractionItems","getIntersectItems","isPointInArea","inRange","getNearestCartesianItems","distanceMetric","useX","useY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","layout","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","newWidth","outerWidth","newHeight","outerHeight","widthChanged","same","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","autoPadding","addBox","removeBox","layoutItem","minPadding","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","visibleVerticalBoxCount","updatePos","handleMaxPadding","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchmove","pointermove","isNullOrEmpty","eventListenerOptions","nodeListContains","nodeList","createAttachObserver","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","listenDevicePixelRatioChanges","releaseObserver","unlistenDevicePixelRatioChanges","createProxyAndListen","fromNativeEvent","DomPlatform","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","isConnected","PluginService","_createDescriptors","cancelable","invalidate","_oldCache","_notifyStateChanges","localIds","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","keyCache","keysCached","cachedKeys","addIfFound","Config","_config","initConfig","_scopeCache","_resolverCache","clearCache","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getChart","moveNumericKeys","intKey","Chart","userConfig","initialCanvas","existingChart","OffscreenCanvas","_detectPlatform","_aspectRatio","_metasets","_lastEvent","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","toBase64Image","bindUserEvents","bindResponsiveEvents","_add","_remove","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","hoverOptions","deactivated","inChartArea","eventFilter","_handleEvent","_getActiveElements","_isClickEvent","determineLastEvent","invalidatePlugins","clipArc","pixelMargin","angleMargin","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","outerStartX","outerStartY","outerEndX","outerEndY","fullCircles","drawFullCircleBorders","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_points","_segments","_pointsUpdated","findStartAndEnd","solidSegments","_computeSegments","_getInterpolationMethod","interpolated","inRange$1","hitRadius","PointElement","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","boundingRects","maxW","parseBorderWidth","maxR","enableBorder","parseBorderRadius","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","getStartAndCountOfVisiblePointsSimplified","decimated","bucketWidth","sampledIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","lttbDecimation","minIndex","maxIndex","xMin","intermediateIndex1","intermediateIndex2","minMaxDecimation","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","linePoints","_pointsFromSegments","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","fillOption","parseFillOption","firstCh","decodeTargetIndex","addPointsBelow","sourcePoint","linesBelow","postponed","findPoint","pointValue","firstValue","simpleArc","getLineByIndex","sourcePoints","below","getLinesBelow","_buildStackLine","_getTargetValue","computeCircularBoundary","_getTargetPixel","computeLinearBoundary","computeBoundary","_drawfill","lineOpts","above","clipVertical","doFill","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","_args","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","pointStyleWidth","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","fontColor","halfFontSize","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","onLeave","isListened","hoveredItem","sameItem","itemsEqual","plugin_legend","_element","afterEvent","ci","Title","_padding","textSize","_drawArgs","fontOpts","plugin_title","titleBlock","createTitle","plugin_subtitle","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getTooltipSize","footer","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","_eventPosition","_size","_cachedAnimations","_tooltipItems","labelPointStyles","labelTextColors","tooltipItems","createTooltipContext","getTitle","beforeTitle","afterTitle","getBeforeBody","getBody","bodyItems","scoped","beforeLabel","afterLabel","getAfterBody","getFooter","beforeFooter","afterFooter","_createItems","itemSort","labelColor","labelPointStyle","labelTextColor","positionAndSize","backgroundPoint","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","labelCount","findOrAddLabel","addedLabels","addIfString","CategoryScale","_startValue","_valueRange","_addedLabels","generateTicks$1","generationOptions","dataRange","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","rounded","almostWhole","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","getTickLimit","stepSize","computeTickLimit","LinearScale","isMajor","tickVal","LogarithmicScale","_zero","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","determineLimits","fitWithPointLabels","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","buildPointLabelItems","hLimits","vLimits","pathRadiusLine","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","gridLineOpts","drawRadiusLine","INTERVALS","UNITS","sorter","_adapter","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","datetime","_tickFormatFunction","minorFormat","majorFormat","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","_typeof","requiredArgs","toDate","argument","argStr","_arrayLikeToArray","_createForOfIteratorHelper","toInteger","addMilliseconds","dirtyDate","dirtyAmount","subMilliseconds","dateLongFormatter","timeLongFormatter","longFormatters","datePattern","timePattern","getTimezoneOffsetInMilliseconds","utcDate","UTC","getFullYear","getMonth","getDate","setUTCFullYear","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","_assertThisInitialized","ReferenceError","_setPrototypeOf","_inherits","_getPrototypeOf","_isNativeReflectConstruct","construct","_createSuper","_classCallCheck","toPropertyKey","toPrimitive","_defineProperties","_createClass","_defineProperty","Setter","_utcDate","ValueSetter","_Setter","validateValue","subPriority","DateToSystemTimezoneSetter","_Setter2","_super2","_this2","_len","timestampIsSet","convertedDate","setFullYear","getUTCFullYear","getUTCMonth","getUTCDate","setHours","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","dateString","EraParser","_Parser","setUTCHours","millisecondsInMinute","millisecondsInHour","numericPatterns","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","hours","minutes","seconds","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","isLeapYearIndex","YearParser","isTwoDigitYear","normalizedTwoDigitYear","getDefaultOptions","startOfUTCWeek","_ref","_ref2","_ref3","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","getUTCDay","setUTCDate","getUTCWeekYear","_options$firstWeekCon","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","LocalWeekYearParser","startOfUTCISOWeek","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","setUTCMonth","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","MILLISECONDS_IN_WEEK","getUTCWeek","firstWeek","startOfUTCWeekYear","LocalWeekParser","dirtyWeek","setUTCWeek","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","getUTCISOWeek","fourthOfJanuary","startOfUTCISOWeekYear","ISOWeekParser","dirtyISOWeek","isoWeek","setUTCISOWeek","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","DayOfYearParser","setUTCDay","dirtyDay","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","ISODayParser","setUTCISODay","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","setUTCMinutes","SecondParser","setUTCSeconds","FractionOfSecondParser","setUTCMilliseconds","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","notWhitespaceRegExp","unescapedLatinCharacterRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","defaultLocale","_step","subFnOptions","setters","firstCharacter","longFormatter","usedTokens","_iterator","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","incompatibleTokens","incompatibleToken","usedToken","fullToken","_ret","uniquePrioritySetters","setterArray","_step2","_iterator2","parseISO","_options$additionalDi","additionalDigits","dateStrings","timeString","dateTimeDelimiter","timeZoneDelimiter","timezone","splitDateString","parseYearResult","captures","restDateString","century","parseYear","dateRegex","isWeekDate","dayOfYear","parseDateUnit","dayOfWeek","_year","validateWeekDate","isoWeekYear","fourthOfJanuaryDay","dayOfISOWeekYear","daysInMonths","validateDate","validateDayOfYearDate","parseDate","timeRegex","parseTimeUnit","validateTime","parseTime","timezoneString","timezoneRegex","_hours","validateTimezone","parseTimezone","isValid","addLeadingZeros","targetLength","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","dayPeriodEnum","lightFormatters","signedWeekYear","weekYear","difference","getUTCDayOfYear","localDayOfWeek","isoDayOfWeek","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","originalDate","dirtyDelimiter","absOffset","dirtyFormatStr","formatStr","formatterOptions","addDays","setDate","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","differenceInMilliseconds","dateLeft","dateRight","roundingMap","trunc","defaultRoundingMethod","getRoundingMethod","startOfDay","compareLocalAsc","differenceInDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","differenceInCalendarDays","compareAsc","endOfDay","endOfMonth","differenceInMonths","differenceInCalendarMonths","isLastMonthNotFull","isLastDayOfMonth","differenceInYears","differenceInCalendarYears","isLastYearNotFull","startOfWeek","getDay","FORMATS","addSeconds","addMinutes","addHours","addWeeks","addQuarters","addYears","roundingMethod","differenceInSeconds","differenceInMinutes","differenceInHours","differenceInWeeks","differenceInQuarters","setMilliseconds","startOfSecond","setSeconds","startOfMinute","setMinutes","startOfHour","startOfMonth","currentMonth","startOfQuarter","cleanDate","startOfYear","endOfSecond","endOfMinute","endOfHour","endOfWeek","endOfQuarter","endOfYear","paddedWidth","PADDING","paddedHeight","offscreenCanvas","offscreenCtx","download","Decimation","Filler","SubTitle","chartConfig","updateChart","downloadImage","downloadChartImage","pointHoverRadius","pointHitRadius","maxTableRows","limitedResult","columnIndices","fieldName","chartTable","revokeObjectURL","BarChart","LineChart","PieChart","TableChart","ChartErrors","ChevronDown","BarChartIcon","PieChartIcon","LineChartIcon","TableChartIcon","DatabaseIcon","LockIcon","currentOption","showDrawer","inputOptions","hiddenInputField","windowStateKey","availableOptions","allModifiers","bemClass","baseClass","newOptionId","newOption","iconComponent","toggleDropdown","selectOption","optionId","toggleChecked","SelectDropdown","Checkbox","RadioButton","chartTypesInputOptions","legendPositionInputOptions","positionKey","databasesInputOptions","updateType","newType","updateChartTitle","newTitle","updateXAxisTitle","updateYAxisTitle","updateXAxis","updateYAxis","updateSeries","updateTableColumns","updateStacked","updateLegendPosition","newPosition","updateDatabase","updateShowAllXAxisLabels","pie","chartTypeIcon","Logo","LeftArrow","databaseSlug","CloseIcon","TableIcon","SchemaVisualizerButton","searchQuery","updateSearchQuery","newSearchQuery","highlightSearchQuery","showColumn","showTable","mdWithP","documentation","referenceTables","containsSearchQuery","searchMask","matchedSubstring","startOfMarkdownCode","endOfMarkdownCode","section","fetchSqlReference","sql_reference","postgresDescription","VerticalLogo","CodeIcon","DatasetDocumentation","SQLReference","activeTab","toggleTab","QueryResultWrapper","ChartEditor","ChartConfig","Header","RandomIcon","SidebarMenu","LeftArrowIcon","queryFields","queryResult","queryDuration","queryErrors","showResultAndChart","interviewItem","showRandomQueryLink","closeLinkCopy","inputQuery","inputDatasetId","setInputQuery","databasesLoaded","clearQuery","fetchDatasets","setRandomQuery","queries","databaseName","database","submitQuery","contentItem","contentId","errorMessage","$editorContainer","newQuery","$menuItem","$menu","tabId","$tab","ChartSqlEditor","closeChartEditor","toggle","$activeMenuItem","runQueryScrollY","focusAndMoveCursorToTheEnd","cursorPosition","SqlReference","$dropdownContainers","windowState","forceDatasetId","showDatasetMenu","fetchDocumentation","tableName","DatabaseDocumentation","gtmDL","ratings","closeSurvey","submitRating","trackEvent","submitFeedback","getWindowDimensions","setCookie","days","setTime","$npsSurveyContainer","seenNpsSurvey","getCookie","show_nps_score","NpsSurvey","BookmarkEmpty","BookmarkFull","contentSlug","iconSize","iconOnly","initActive","showCopy","toggleBookmark","content_slug"],"sourceRoot":""}