From 22c71649058f8ac14fa7a83361b6d821a7c2cbcf Mon Sep 17 00:00:00 2001 From: Justin Kim Date: Fri, 12 Jun 2026 21:20:37 -0700 Subject: [PATCH 01/88] fix(config-schema): combine minLength+maxLength+validate into single osdCustom rule (#12215) In joi 17, calling .osdCustom() multiple times on the same schema overwrites the previous rule instead of stacking. This caused: - schema.string({ minLength: 1, maxLength: N }) to only enforce maxLength - schema.string({ minLength, maxLength, validate }) to only enforce validate Combine all string length validations and user validate function into a single osdCustom call. Also prevent the base Type class from adding a separate osdCustom for the validate option when StringType already handles it. Signed-off-by: Justin Kim --- .../src/types/string_type.test.ts | 43 +++++++++++++++++++ .../src/types/string_type.ts | 21 ++++----- packages/osd-pm/dist/index.js.map | 1 + 3 files changed, 55 insertions(+), 10 deletions(-) create mode 100644 packages/osd-pm/dist/index.js.map diff --git a/packages/osd-config-schema/src/types/string_type.test.ts b/packages/osd-config-schema/src/types/string_type.test.ts index 6a6598347937..b6314a21e91f 100644 --- a/packages/osd-config-schema/src/types/string_type.test.ts +++ b/packages/osd-config-schema/src/types/string_type.test.ts @@ -86,6 +86,49 @@ describe('#maxLength', () => { }); }); +describe('#minLength and #maxLength combined', () => { + test('returns value when within range', () => { + expect(schema.string({ minLength: 1, maxLength: 10 }).validate('hello')).toBe('hello'); + }); + + test('rejects empty string when minLength is 1', () => { + expect(() => + schema.string({ minLength: 1, maxLength: 200000 }).validate('') + ).toThrowErrorMatchingInlineSnapshot( + `"value has length [0] but it must have a minimum length of [1]."` + ); + }); + + test('rejects string exceeding maxLength', () => { + expect(() => + schema.string({ minLength: 1, maxLength: 5 }).validate('toolong') + ).toThrowErrorMatchingInlineSnapshot( + `"value has length [7] but it must have a maximum length of [5]."` + ); + }); + + test('rejects empty string inside schema.object', () => { + const objSchema = schema.object({ + value: schema.string({ minLength: 1, maxLength: 200000 }), + }); + expect(() => objSchema.validate({ value: '' })).toThrow( + 'value has length [0] but it must have a minimum length of [1]' + ); + }); + + test('works with minLength + maxLength + validate combined', () => { + const s = schema.string({ + minLength: 1, + maxLength: 512, + validate: (value) => (/^[A-Za-z0-9_-]+$/.test(value) ? undefined : 'invalid chars'), + }); + expect(() => s.validate('')).toThrow('minimum length of [1]'); + expect(() => s.validate('a'.repeat(513))).toThrow('maximum length of [512]'); + expect(() => s.validate('abc/def')).toThrow('invalid chars'); + expect(s.validate('valid-id_123')).toBe('valid-id_123'); + }); +}); + describe('#hostname', () => { test('returns value for valid hostname as per RFC1123', () => { const hostNameSchema = schema.string({ hostname: true }); diff --git a/packages/osd-config-schema/src/types/string_type.ts b/packages/osd-config-schema/src/types/string_type.ts index 8ec3219c48d2..3dd0bec11816 100644 --- a/packages/osd-config-schema/src/types/string_type.ts +++ b/packages/osd-config-schema/src/types/string_type.ts @@ -53,20 +53,21 @@ export class StringType extends Type { } }); - if (options.minLength !== undefined) { + if (options.minLength !== undefined || options.maxLength !== undefined || options.validate) { + const { minLength, maxLength, validate: userValidate } = options; schema = ((schema as unknown) as OsdSchema).osdCustom((value: any) => { - if (value.length < options.minLength!) { - return `value has length [${value.length}] but it must have a minimum length of [${options.minLength}].`; + if (minLength !== undefined && value.length < minLength) { + return `value has length [${value.length}] but it must have a minimum length of [${minLength}].`; } - }); - } - - if (options.maxLength !== undefined) { - schema = ((schema as unknown) as OsdSchema).osdCustom((value: any) => { - if (value.length > options.maxLength!) { - return `value has length [${value.length}] but it must have a maximum length of [${options.maxLength}].`; + if (maxLength !== undefined && value.length > maxLength) { + return `value has length [${value.length}] but it must have a maximum length of [${maxLength}].`; + } + if (userValidate) { + return userValidate(value); } }); + // Prevent the base Type class from adding another osdCustom for validate + delete (options as any).validate; } super(schema, options); diff --git a/packages/osd-pm/dist/index.js.map b/packages/osd-pm/dist/index.js.map new file mode 100644 index 000000000000..dded2cd2bdc4 --- /dev/null +++ b/packages/osd-pm/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["webpack://@osd/pm/../../node_modules/@nodelib/fs.scandir/out/adapters/fs.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.scandir/out/constants.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.scandir/out/index.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.scandir/out/providers/async.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.scandir/out/providers/common.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.scandir/out/providers/sync.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.scandir/out/settings.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.scandir/out/utils/fs.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.scandir/out/utils/index.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.stat/out/adapters/fs.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.stat/out/index.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.stat/out/providers/async.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.stat/out/providers/sync.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.stat/out/settings.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.walk/out/index.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.walk/out/providers/async.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.walk/out/providers/stream.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.walk/out/providers/sync.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.walk/out/readers/async.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.walk/out/readers/common.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.walk/out/readers/reader.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.walk/out/readers/sync.js","webpack://@osd/pm/../../node_modules/@nodelib/fs.walk/out/settings.js","webpack://@osd/pm/../../node_modules/@yarnpkg/lockfile/index.js","webpack://@osd/pm/../../node_modules/aggregate-error/index.js","webpack://@osd/pm/../../node_modules/ansi-regex/index.js","webpack://@osd/pm/../../node_modules/ansi-styles/index.js","webpack://@osd/pm/../../node_modules/ansi-styles/node_modules/color-convert/conversions.js","webpack://@osd/pm/../../node_modules/ansi-styles/node_modules/color-convert/index.js","webpack://@osd/pm/../../node_modules/ansi-styles/node_modules/color-convert/route.js","webpack://@osd/pm/../../node_modules/array-differ/index.js","webpack://@osd/pm/../../node_modules/array-union/index.js","webpack://@osd/pm/../../node_modules/arrify/index.js","webpack://@osd/pm/../../node_modules/balanced-match/index.js","webpack://@osd/pm/../../node_modules/braces/index.js","webpack://@osd/pm/../../node_modules/braces/lib/compile.js","webpack://@osd/pm/../../node_modules/braces/lib/constants.js","webpack://@osd/pm/../../node_modules/braces/lib/expand.js","webpack://@osd/pm/../../node_modules/braces/lib/parse.js","webpack://@osd/pm/../../node_modules/braces/lib/stringify.js","webpack://@osd/pm/../../node_modules/braces/lib/utils.js","webpack://@osd/pm/../../node_modules/chalk/source/index.js","webpack://@osd/pm/../../node_modules/chalk/source/templates.js","webpack://@osd/pm/../../node_modules/chalk/source/util.js","webpack://@osd/pm/../../node_modules/clean-stack/index.js","webpack://@osd/pm/../../node_modules/cli-cursor/index.js","webpack://@osd/pm/../../node_modules/cli-spinners/index.js","webpack://@osd/pm/../../node_modules/cmd-shim/index.js","webpack://@osd/pm/../../node_modules/cmd-shim/lib/to-batch-syntax.js","webpack://@osd/pm/../../node_modules/color-convert/conversions.js","webpack://@osd/pm/../../node_modules/color-convert/index.js","webpack://@osd/pm/../../node_modules/color-convert/node_modules/color-name/index.js","webpack://@osd/pm/../../node_modules/color-convert/route.js","webpack://@osd/pm/../../node_modules/color-name/index.js","webpack://@osd/pm/../../node_modules/concat-map/index.js","webpack://@osd/pm/../../node_modules/cp-file/cp-file-error.js","webpack://@osd/pm/../../node_modules/cp-file/fs.js","webpack://@osd/pm/../../node_modules/cp-file/index.js","webpack://@osd/pm/../../node_modules/cp-file/progress-emitter.js","webpack://@osd/pm/../../node_modules/cpy/cpy-error.js","webpack://@osd/pm/../../node_modules/cpy/index.js","webpack://@osd/pm/../../node_modules/cpy/node_modules/globby/gitignore.js","webpack://@osd/pm/../../node_modules/cpy/node_modules/globby/index.js","webpack://@osd/pm/../../node_modules/cpy/node_modules/globby/stream-utils.js","webpack://@osd/pm/../../node_modules/cpy/node_modules/p-map/index.js","webpack://@osd/pm/../../node_modules/cross-spawn/index.js","webpack://@osd/pm/../../node_modules/cross-spawn/lib/enoent.js","webpack://@osd/pm/../../node_modules/cross-spawn/lib/parse.js","webpack://@osd/pm/../../node_modules/cross-spawn/lib/util/escape.js","webpack://@osd/pm/../../node_modules/cross-spawn/lib/util/readShebang.js","webpack://@osd/pm/../../node_modules/cross-spawn/lib/util/resolveCommand.js","webpack://@osd/pm/../../node_modules/dedent/dist/dedent.js","webpack://@osd/pm/../../node_modules/defaults/index.js","webpack://@osd/pm/../../node_modules/defaults/node_modules/clone/clone.js","webpack://@osd/pm/../../node_modules/del/index.js","webpack://@osd/pm/../../node_modules/del/node_modules/rimraf/rimraf.js","webpack://@osd/pm/../../node_modules/detect-indent/index.js","webpack://@osd/pm/../../node_modules/dir-glob/index.js","webpack://@osd/pm/../../node_modules/duplexer/index.js","webpack://@osd/pm/../../node_modules/end-of-stream/index.js","webpack://@osd/pm/../../node_modules/error-ex/index.js","webpack://@osd/pm/../../node_modules/escape-string-regexp/index.js","webpack://@osd/pm/../../node_modules/execa/index.js","webpack://@osd/pm/../../node_modules/execa/lib/command.js","webpack://@osd/pm/../../node_modules/execa/lib/error.js","webpack://@osd/pm/../../node_modules/execa/lib/kill.js","webpack://@osd/pm/../../node_modules/execa/lib/promise.js","webpack://@osd/pm/../../node_modules/execa/lib/stdio.js","webpack://@osd/pm/../../node_modules/execa/lib/stream.js","webpack://@osd/pm/../../node_modules/fast-glob/out/index.js","webpack://@osd/pm/../../node_modules/fast-glob/out/managers/patterns.js","webpack://@osd/pm/../../node_modules/fast-glob/out/managers/tasks.js","webpack://@osd/pm/../../node_modules/fast-glob/out/providers/async.js","webpack://@osd/pm/../../node_modules/fast-glob/out/providers/filters/deep.js","webpack://@osd/pm/../../node_modules/fast-glob/out/providers/filters/entry.js","webpack://@osd/pm/../../node_modules/fast-glob/out/providers/filters/error.js","webpack://@osd/pm/../../node_modules/fast-glob/out/providers/matchers/matcher.js","webpack://@osd/pm/../../node_modules/fast-glob/out/providers/matchers/partial.js","webpack://@osd/pm/../../node_modules/fast-glob/out/providers/provider.js","webpack://@osd/pm/../../node_modules/fast-glob/out/providers/stream.js","webpack://@osd/pm/../../node_modules/fast-glob/out/providers/sync.js","webpack://@osd/pm/../../node_modules/fast-glob/out/providers/transformers/entry.js","webpack://@osd/pm/../../node_modules/fast-glob/out/readers/reader.js","webpack://@osd/pm/../../node_modules/fast-glob/out/readers/stream.js","webpack://@osd/pm/../../node_modules/fast-glob/out/readers/sync.js","webpack://@osd/pm/../../node_modules/fast-glob/out/settings.js","webpack://@osd/pm/../../node_modules/fast-glob/out/utils/array.js","webpack://@osd/pm/../../node_modules/fast-glob/out/utils/errno.js","webpack://@osd/pm/../../node_modules/fast-glob/out/utils/fs.js","webpack://@osd/pm/../../node_modules/fast-glob/out/utils/index.js","webpack://@osd/pm/../../node_modules/fast-glob/out/utils/path.js","webpack://@osd/pm/../../node_modules/fast-glob/out/utils/pattern.js","webpack://@osd/pm/../../node_modules/fast-glob/out/utils/stream.js","webpack://@osd/pm/../../node_modules/fast-glob/out/utils/string.js","webpack://@osd/pm/../../node_modules/fastq/queue.js","webpack://@osd/pm/../../node_modules/fill-range/index.js","webpack://@osd/pm/../../node_modules/fs.realpath/index.js","webpack://@osd/pm/../../node_modules/fs.realpath/old.js","webpack://@osd/pm/../../node_modules/function-bind/implementation.js","webpack://@osd/pm/../../node_modules/function-bind/index.js","webpack://@osd/pm/../../node_modules/get-stream/buffer-stream.js","webpack://@osd/pm/../../node_modules/get-stream/index.js","webpack://@osd/pm/../../node_modules/glob-parent/index.js","webpack://@osd/pm/../../node_modules/glob/common.js","webpack://@osd/pm/../../node_modules/glob/glob.js","webpack://@osd/pm/../../node_modules/glob/sync.js","webpack://@osd/pm/../../node_modules/globby/gitignore.js","webpack://@osd/pm/../../node_modules/globby/index.js","webpack://@osd/pm/../../node_modules/globby/stream-utils.js","webpack://@osd/pm/../../node_modules/graceful-fs/clone.js","webpack://@osd/pm/../../node_modules/graceful-fs/graceful-fs.js","webpack://@osd/pm/../../node_modules/graceful-fs/legacy-streams.js","webpack://@osd/pm/../../node_modules/graceful-fs/polyfills.js","webpack://@osd/pm/../../node_modules/has-flag/index.js","webpack://@osd/pm/../../node_modules/has-glob/index.js","webpack://@osd/pm/../../node_modules/has-glob/node_modules/is-glob/index.js","webpack://@osd/pm/../../node_modules/hasown/index.js","webpack://@osd/pm/../../node_modules/hosted-git-info/git-host-info.js","webpack://@osd/pm/../../node_modules/hosted-git-info/git-host.js","webpack://@osd/pm/../../node_modules/hosted-git-info/index.js","webpack://@osd/pm/../../node_modules/human-signals/build/src/core.js","webpack://@osd/pm/../../node_modules/human-signals/build/src/main.js","webpack://@osd/pm/../../node_modules/human-signals/build/src/realtime.js","webpack://@osd/pm/../../node_modules/human-signals/build/src/signals.js","webpack://@osd/pm/../../node_modules/ignore/index.js","webpack://@osd/pm/../../node_modules/imurmurhash/imurmurhash.js","webpack://@osd/pm/../../node_modules/indent-string/index.js","webpack://@osd/pm/../../node_modules/inflight/inflight.js","webpack://@osd/pm/../../node_modules/inherits/inherits.js","webpack://@osd/pm/../../node_modules/inherits/inherits_browser.js","webpack://@osd/pm/../../node_modules/is-arrayish/index.js","webpack://@osd/pm/../../node_modules/is-core-module/index.js","webpack://@osd/pm/../../node_modules/is-extglob/index.js","webpack://@osd/pm/../../node_modules/is-glob/index.js","webpack://@osd/pm/../../node_modules/is-interactive/index.js","webpack://@osd/pm/../../node_modules/is-number/index.js","webpack://@osd/pm/../../node_modules/is-path-cwd/index.js","webpack://@osd/pm/../../node_modules/is-path-inside/index.js","webpack://@osd/pm/../../node_modules/is-plain-obj/index.js","webpack://@osd/pm/../../node_modules/is-stream/index.js","webpack://@osd/pm/../../node_modules/isexe/index.js","webpack://@osd/pm/../../node_modules/isexe/mode.js","webpack://@osd/pm/../../node_modules/isexe/windows.js","webpack://@osd/pm/../../node_modules/js-tokens/index.js","webpack://@osd/pm/../../node_modules/json-parse-even-better-errors/index.js","webpack://@osd/pm/../../node_modules/junk/index.js","webpack://@osd/pm/../../node_modules/load-json-file/index.js","webpack://@osd/pm/../../node_modules/make-dir/index.js","webpack://@osd/pm/../../node_modules/merge-stream/index.js","webpack://@osd/pm/../../node_modules/merge2/index.js","webpack://@osd/pm/../../node_modules/micromatch/index.js","webpack://@osd/pm/../../node_modules/mimic-fn/index.js","webpack://@osd/pm/../../node_modules/minimatch/minimatch.js","webpack://@osd/pm/../../node_modules/minimatch/node_modules/brace-expansion/index.js","webpack://@osd/pm/../../node_modules/minimist/index.js","webpack://@osd/pm/../../node_modules/mkdirp/index.js","webpack://@osd/pm/../../node_modules/multimatch/index.js","webpack://@osd/pm/../../node_modules/mute-stream/mute.js","webpack://@osd/pm/../../node_modules/ncp/lib/ncp.js","webpack://@osd/pm/../../node_modules/nested-error-stacks/index.js","webpack://@osd/pm/../../node_modules/normalize-package-data/lib/extract_description.js","webpack://@osd/pm/../../node_modules/normalize-package-data/lib/fixer.js","webpack://@osd/pm/../../node_modules/normalize-package-data/lib/make_warning.js","webpack://@osd/pm/../../node_modules/normalize-package-data/lib/normalize.js","webpack://@osd/pm/../../node_modules/npm-run-path/index.js","webpack://@osd/pm/../../node_modules/once/once.js","webpack://@osd/pm/../../node_modules/onetime/index.js","webpack://@osd/pm/../../node_modules/ora/index.js","webpack://@osd/pm/../../node_modules/ora/node_modules/chalk/source/index.js","webpack://@osd/pm/../../node_modules/ora/node_modules/chalk/source/templates.js","webpack://@osd/pm/../../node_modules/ora/node_modules/chalk/source/util.js","webpack://@osd/pm/../../node_modules/ora/node_modules/has-flag/index.js","webpack://@osd/pm/../../node_modules/ora/node_modules/log-symbols/index.js","webpack://@osd/pm/../../node_modules/ora/node_modules/log-symbols/node_modules/ansi-styles/index.js","webpack://@osd/pm/../../node_modules/ora/node_modules/log-symbols/node_modules/chalk/index.js","webpack://@osd/pm/../../node_modules/ora/node_modules/log-symbols/node_modules/chalk/templates.js","webpack://@osd/pm/../../node_modules/ora/node_modules/log-symbols/node_modules/supports-color/index.js","webpack://@osd/pm/../../node_modules/p-event/index.js","webpack://@osd/pm/../../node_modules/p-filter/index.js","webpack://@osd/pm/../../node_modules/p-filter/node_modules/p-map/index.js","webpack://@osd/pm/../../node_modules/p-finally/index.js","webpack://@osd/pm/../../node_modules/p-map/index.js","webpack://@osd/pm/../../node_modules/p-timeout/index.js","webpack://@osd/pm/../../node_modules/parse-json/index.js","webpack://@osd/pm/../../node_modules/parse-json/node_modules/lines-and-columns/build/index.js","webpack://@osd/pm/../../node_modules/path-is-absolute/index.js","webpack://@osd/pm/../../node_modules/path-key/index.js","webpack://@osd/pm/../../node_modules/path-parse/index.js","webpack://@osd/pm/../../node_modules/path-type/index.js","webpack://@osd/pm/../../node_modules/picocolors/picocolors.js","webpack://@osd/pm/../../node_modules/picomatch/index.js","webpack://@osd/pm/../../node_modules/picomatch/lib/constants.js","webpack://@osd/pm/../../node_modules/picomatch/lib/parse.js","webpack://@osd/pm/../../node_modules/picomatch/lib/picomatch.js","webpack://@osd/pm/../../node_modules/picomatch/lib/scan.js","webpack://@osd/pm/../../node_modules/picomatch/lib/utils.js","webpack://@osd/pm/../../node_modules/pify/index.js","webpack://@osd/pm/../../node_modules/pump/index.js","webpack://@osd/pm/../../node_modules/queue-microtask/index.js","webpack://@osd/pm/../../node_modules/read-pkg/index.js","webpack://@osd/pm/../../node_modules/resolve/index.js","webpack://@osd/pm/../../node_modules/resolve/lib/async.js","webpack://@osd/pm/../../node_modules/resolve/lib/caller.js","webpack://@osd/pm/../../node_modules/resolve/lib/core.js","webpack://@osd/pm/../../node_modules/resolve/lib/homedir.js","webpack://@osd/pm/../../node_modules/resolve/lib/is-core.js","webpack://@osd/pm/../../node_modules/resolve/lib/node-modules-paths.js","webpack://@osd/pm/../../node_modules/resolve/lib/normalize-options.js","webpack://@osd/pm/../../node_modules/resolve/lib/sync.js","webpack://@osd/pm/../../node_modules/restore-cursor/index.js","webpack://@osd/pm/../../node_modules/reusify/reusify.js","webpack://@osd/pm/../../node_modules/run-parallel/index.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/index.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/AsyncSubject.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/BehaviorSubject.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/InnerSubscriber.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/Notification.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/Observable.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/Observer.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/OuterSubscriber.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/ReplaySubject.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/Scheduler.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/Subject.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/SubjectSubscription.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/Subscriber.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/Subscription.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/config.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/innerSubscribe.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/bindCallback.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/combineLatest.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/concat.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/defer.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/empty.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/forkJoin.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/from.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/fromArray.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/fromEvent.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/generate.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/iif.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/interval.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/merge.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/never.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/of.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/pairs.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/partition.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/race.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/range.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/throwError.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/timer.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/using.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/observable/zip.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/catchError.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/concatAll.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/delay.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/filter.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/finalize.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/first.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/groupBy.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/map.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/mapTo.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/mergeAll.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/mergeMap.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/observeOn.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/refCount.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/take.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/timeout.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/operators/timeoutWith.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduled/scheduled.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduler/Action.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduler/asap.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduler/async.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/scheduler/queue.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/symbol/iterator.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/symbol/observable.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/EmptyError.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/Immediate.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/TimeoutError.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/canReportError.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/hostReportError.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/identity.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/isArray.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/isArrayLike.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/isDate.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/isFunction.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/isInteropObservable.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/isIterable.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/isNumeric.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/isObject.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/isObservable.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/isPromise.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/isScheduler.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/noop.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/not.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/pipe.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/subscribeTo.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/subscribeToArray.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/subscribeToResult.js","webpack://@osd/pm/../../node_modules/rxjs/_esm5/internal/util/toSubscriber.js","webpack://@osd/pm/../../node_modules/rxjs/node_modules/tslib/tslib.es6.js","webpack://@osd/pm/../../node_modules/semver/classes/comparator.js","webpack://@osd/pm/../../node_modules/semver/classes/range.js","webpack://@osd/pm/../../node_modules/semver/classes/semver.js","webpack://@osd/pm/../../node_modules/semver/functions/clean.js","webpack://@osd/pm/../../node_modules/semver/functions/cmp.js","webpack://@osd/pm/../../node_modules/semver/functions/coerce.js","webpack://@osd/pm/../../node_modules/semver/functions/compare-build.js","webpack://@osd/pm/../../node_modules/semver/functions/compare-loose.js","webpack://@osd/pm/../../node_modules/semver/functions/compare.js","webpack://@osd/pm/../../node_modules/semver/functions/diff.js","webpack://@osd/pm/../../node_modules/semver/functions/eq.js","webpack://@osd/pm/../../node_modules/semver/functions/gt.js","webpack://@osd/pm/../../node_modules/semver/functions/gte.js","webpack://@osd/pm/../../node_modules/semver/functions/inc.js","webpack://@osd/pm/../../node_modules/semver/functions/lt.js","webpack://@osd/pm/../../node_modules/semver/functions/lte.js","webpack://@osd/pm/../../node_modules/semver/functions/major.js","webpack://@osd/pm/../../node_modules/semver/functions/minor.js","webpack://@osd/pm/../../node_modules/semver/functions/neq.js","webpack://@osd/pm/../../node_modules/semver/functions/parse.js","webpack://@osd/pm/../../node_modules/semver/functions/patch.js","webpack://@osd/pm/../../node_modules/semver/functions/prerelease.js","webpack://@osd/pm/../../node_modules/semver/functions/rcompare.js","webpack://@osd/pm/../../node_modules/semver/functions/rsort.js","webpack://@osd/pm/../../node_modules/semver/functions/satisfies.js","webpack://@osd/pm/../../node_modules/semver/functions/sort.js","webpack://@osd/pm/../../node_modules/semver/functions/valid.js","webpack://@osd/pm/../../node_modules/semver/index.js","webpack://@osd/pm/../../node_modules/semver/internal/constants.js","webpack://@osd/pm/../../node_modules/semver/internal/debug.js","webpack://@osd/pm/../../node_modules/semver/internal/identifiers.js","webpack://@osd/pm/../../node_modules/semver/internal/parse-options.js","webpack://@osd/pm/../../node_modules/semver/internal/re.js","webpack://@osd/pm/../../node_modules/semver/node_modules/lru-cache/index.js","webpack://@osd/pm/../../node_modules/semver/ranges/gtr.js","webpack://@osd/pm/../../node_modules/semver/ranges/intersects.js","webpack://@osd/pm/../../node_modules/semver/ranges/ltr.js","webpack://@osd/pm/../../node_modules/semver/ranges/max-satisfying.js","webpack://@osd/pm/../../node_modules/semver/ranges/min-satisfying.js","webpack://@osd/pm/../../node_modules/semver/ranges/min-version.js","webpack://@osd/pm/../../node_modules/semver/ranges/outside.js","webpack://@osd/pm/../../node_modules/semver/ranges/simplify.js","webpack://@osd/pm/../../node_modules/semver/ranges/subset.js","webpack://@osd/pm/../../node_modules/semver/ranges/to-comparators.js","webpack://@osd/pm/../../node_modules/semver/ranges/valid.js","webpack://@osd/pm/../../node_modules/shebang-command/index.js","webpack://@osd/pm/../../node_modules/shebang-regex/index.js","webpack://@osd/pm/../../node_modules/signal-exit/index.js","webpack://@osd/pm/../../node_modules/signal-exit/signals.js","webpack://@osd/pm/../../node_modules/slash/index.js","webpack://@osd/pm/../../node_modules/sort-keys/index.js","webpack://@osd/pm/../../node_modules/spdx-correct/index.js","webpack://@osd/pm/../../node_modules/spdx-expression-parse/index.js","webpack://@osd/pm/../../node_modules/spdx-expression-parse/parse.js","webpack://@osd/pm/../../node_modules/spdx-expression-parse/scan.js","webpack://@osd/pm/../../node_modules/strip-ansi/index.js","webpack://@osd/pm/../../node_modules/strip-bom/index.js","webpack://@osd/pm/../../node_modules/strip-final-newline/index.js","webpack://@osd/pm/../../node_modules/strong-log-transformer/index.js","webpack://@osd/pm/../../node_modules/strong-log-transformer/lib/cli.js","webpack://@osd/pm/../../node_modules/strong-log-transformer/lib/logger.js","webpack://@osd/pm/../../node_modules/supports-color/index.js","webpack://@osd/pm/../../node_modules/through/index.js","webpack://@osd/pm/../../node_modules/to-regex-range/index.js","webpack://@osd/pm/../../node_modules/validate-npm-package-license/index.js","webpack://@osd/pm/../../node_modules/wcwidth/combining.js","webpack://@osd/pm/../../node_modules/wcwidth/index.js","webpack://@osd/pm/../../node_modules/which/which.js","webpack://@osd/pm/../../node_modules/wrappy/wrappy.js","webpack://@osd/pm/../../node_modules/write-json-file/index.js","webpack://@osd/pm/../../node_modules/write-json-file/node_modules/make-dir/index.js","webpack://@osd/pm/../../node_modules/write-json-file/node_modules/write-file-atomic/index.js","webpack://@osd/pm/../../node_modules/write-pkg/index.js","webpack://@osd/pm/../../node_modules/yallist/iterator.js","webpack://@osd/pm/../../node_modules/yallist/yallist.js","webpack://@osd/pm/../osd-cross-platform/target/index.js","webpack://@osd/pm/../osd-cross-platform/target/path.js","webpack://@osd/pm/../osd-cross-platform/target/process.js","webpack://@osd/pm/../osd-cross-platform/target/repo_root.js","webpack://@osd/pm/../osd-dev-utils/target/tooling_log/index.js","webpack://@osd/pm/../osd-dev-utils/target/tooling_log/log_levels.js","webpack://@osd/pm/../osd-dev-utils/target/tooling_log/tooling_log.js","webpack://@osd/pm/../osd-dev-utils/target/tooling_log/tooling_log_collecting_writer.js","webpack://@osd/pm/../osd-dev-utils/target/tooling_log/tooling_log_text_writer.js","webpack://@osd/pm/./src/cli.ts","webpack://@osd/pm/./src/commands/bootstrap.ts","webpack://@osd/pm/./src/commands/clean.ts","webpack://@osd/pm/./src/commands/index.ts","webpack://@osd/pm/./src/commands/run.ts","webpack://@osd/pm/./src/commands/watch.ts","webpack://@osd/pm/./src/config.ts","webpack://@osd/pm/./src/production/build_production_projects.ts","webpack://@osd/pm/./src/production/index.ts","webpack://@osd/pm/./src/run.ts","webpack://@osd/pm/./src/utils/bootstrap_cache_file.ts","webpack://@osd/pm/./src/utils/bootstrap_fingerprint.ts","webpack://@osd/pm/./src/utils/child_process.ts","webpack://@osd/pm/./src/utils/errors.ts","webpack://@osd/pm/./src/utils/fs.ts","webpack://@osd/pm/./src/utils/link_project_executables.ts","webpack://@osd/pm/./src/utils/log.ts","webpack://@osd/pm/./src/utils/opensearch_dashboards.ts","webpack://@osd/pm/./src/utils/package_json.ts","webpack://@osd/pm/./src/utils/parallelize.ts","webpack://@osd/pm/./src/utils/project.ts","webpack://@osd/pm/./src/utils/project_checksums.ts","webpack://@osd/pm/./src/utils/projects.ts","webpack://@osd/pm/./src/utils/projects_tree.ts","webpack://@osd/pm/./src/utils/scripts.ts","webpack://@osd/pm/./src/utils/targeted_build.ts","webpack://@osd/pm/./src/utils/validate_dependencies.ts","webpack://@osd/pm/./src/utils/watch.ts","webpack://@osd/pm/./src/utils/workspaces.ts","webpack://@osd/pm/./src/utils/yarn_lock.ts","webpack://@osd/pm/../../node_modules/@babel/code-frame/lib/index.js","webpack://@osd/pm/../../node_modules/@babel/helper-validator-identifier/lib/identifier.js","webpack://@osd/pm/../../node_modules/@babel/helper-validator-identifier/lib/index.js","webpack://@osd/pm/../../node_modules/@babel/helper-validator-identifier/lib/keyword.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_array_like_to_array.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_array_with_holes.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_array_without_holes.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_assert_this_initialized.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_async_iterator.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_async_to_generator.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_call_super.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_class_call_check.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_construct.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_create_class.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_define_property.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_get_prototype_of.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_inherits.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_instanceof.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_is_native_function.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_iterable_to_array.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_iterable_to_array_limit.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_non_iterable_rest.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_non_iterable_spread.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_object_spread.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_object_spread_props.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_possible_constructor_return.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_set_prototype_of.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_sliced_to_array.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_tagged_template_literal.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_to_array.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_to_consumable_array.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_ts_generator.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_type_of.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","webpack://@osd/pm/../../node_modules/@swc/helpers/esm/_wrap_native_super.js","webpack://@osd/pm/../../node_modules/@swc/helpers/node_modules/tslib/tslib.es6.mjs","webpack://@osd/pm/../../node_modules/tslib/tslib.es6.mjs","webpack://@osd/pm/./node_modules/getopts/index.js","webpack://@osd/pm/webpack/runtime/compat_get_default_export","webpack://@osd/pm/webpack/runtime/define_property_getters","webpack://@osd/pm/webpack/runtime/has_own_property","webpack://@osd/pm/webpack/runtime/make_namespace_object","webpack://@osd/pm/webpack/runtime/node_module_decorator","webpack://@osd/pm/./src/index.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\nconst fs = require(\"fs\");\nexports.FILE_SYSTEM_ADAPTER = {\n lstat: fs.lstat,\n stat: fs.stat,\n lstatSync: fs.lstatSync,\n statSync: fs.statSync,\n readdir: fs.readdir,\n readdirSync: fs.readdirSync\n};\nfunction createFileSystemAdapter(fsMethods) {\n if (fsMethods === undefined) {\n return exports.FILE_SYSTEM_ADAPTER;\n }\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\n}\nexports.createFileSystemAdapter = createFileSystemAdapter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = void 0;\nconst NODE_PROCESS_VERSION_PARTS = process.versions.node.split('.');\nif (NODE_PROCESS_VERSION_PARTS[0] === undefined || NODE_PROCESS_VERSION_PARTS[1] === undefined) {\n throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);\n}\nconst MAJOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[0], 10);\nconst MINOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[1], 10);\nconst SUPPORTED_MAJOR_VERSION = 10;\nconst SUPPORTED_MINOR_VERSION = 10;\nconst IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION;\nconst IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION;\n/**\n * IS `true` for Node.js 10.10 and greater.\n */\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Settings = exports.scandirSync = exports.scandir = void 0;\nconst async = require(\"./providers/async\");\nconst sync = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nexports.Settings = settings_1.default;\nfunction scandir(path, optionsOrSettingsOrCallback, callback) {\n if (typeof optionsOrSettingsOrCallback === 'function') {\n async.read(path, getSettings(), optionsOrSettingsOrCallback);\n return;\n }\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\n}\nexports.scandir = scandir;\nfunction scandirSync(path, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n return sync.read(path, settings);\n}\nexports.scandirSync = scandirSync;\nfunction getSettings(settingsOrOptions = {}) {\n if (settingsOrOptions instanceof settings_1.default) {\n return settingsOrOptions;\n }\n return new settings_1.default(settingsOrOptions);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst rpl = require(\"run-parallel\");\nconst constants_1 = require(\"../constants\");\nconst utils = require(\"../utils\");\nconst common = require(\"./common\");\nfunction read(directory, settings, callback) {\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\n readdirWithFileTypes(directory, settings, callback);\n return;\n }\n readdir(directory, settings, callback);\n}\nexports.read = read;\nfunction readdirWithFileTypes(directory, settings, callback) {\n settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => {\n if (readdirError !== null) {\n callFailureCallback(callback, readdirError);\n return;\n }\n const entries = dirents.map((dirent) => ({\n dirent,\n name: dirent.name,\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\n }));\n if (!settings.followSymbolicLinks) {\n callSuccessCallback(callback, entries);\n return;\n }\n const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings));\n rpl(tasks, (rplError, rplEntries) => {\n if (rplError !== null) {\n callFailureCallback(callback, rplError);\n return;\n }\n callSuccessCallback(callback, rplEntries);\n });\n });\n}\nexports.readdirWithFileTypes = readdirWithFileTypes;\nfunction makeRplTaskEntry(entry, settings) {\n return (done) => {\n if (!entry.dirent.isSymbolicLink()) {\n done(null, entry);\n return;\n }\n settings.fs.stat(entry.path, (statError, stats) => {\n if (statError !== null) {\n if (settings.throwErrorOnBrokenSymbolicLink) {\n done(statError);\n return;\n }\n done(null, entry);\n return;\n }\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\n done(null, entry);\n });\n };\n}\nfunction readdir(directory, settings, callback) {\n settings.fs.readdir(directory, (readdirError, names) => {\n if (readdirError !== null) {\n callFailureCallback(callback, readdirError);\n return;\n }\n const tasks = names.map((name) => {\n const path = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);\n return (done) => {\n fsStat.stat(path, settings.fsStatSettings, (error, stats) => {\n if (error !== null) {\n done(error);\n return;\n }\n const entry = {\n name,\n path,\n dirent: utils.fs.createDirentFromStats(name, stats)\n };\n if (settings.stats) {\n entry.stats = stats;\n }\n done(null, entry);\n });\n };\n });\n rpl(tasks, (rplError, entries) => {\n if (rplError !== null) {\n callFailureCallback(callback, rplError);\n return;\n }\n callSuccessCallback(callback, entries);\n });\n });\n}\nexports.readdir = readdir;\nfunction callFailureCallback(callback, error) {\n callback(error);\n}\nfunction callSuccessCallback(callback, result) {\n callback(null, result);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joinPathSegments = void 0;\nfunction joinPathSegments(a, b, separator) {\n /**\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\n */\n if (a.endsWith(separator)) {\n return a + b;\n }\n return a + separator + b;\n}\nexports.joinPathSegments = joinPathSegments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst constants_1 = require(\"../constants\");\nconst utils = require(\"../utils\");\nconst common = require(\"./common\");\nfunction read(directory, settings) {\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\n return readdirWithFileTypes(directory, settings);\n }\n return readdir(directory, settings);\n}\nexports.read = read;\nfunction readdirWithFileTypes(directory, settings) {\n const dirents = settings.fs.readdirSync(directory, { withFileTypes: true });\n return dirents.map((dirent) => {\n const entry = {\n dirent,\n name: dirent.name,\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\n };\n if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) {\n try {\n const stats = settings.fs.statSync(entry.path);\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\n }\n catch (error) {\n if (settings.throwErrorOnBrokenSymbolicLink) {\n throw error;\n }\n }\n }\n return entry;\n });\n}\nexports.readdirWithFileTypes = readdirWithFileTypes;\nfunction readdir(directory, settings) {\n const names = settings.fs.readdirSync(directory);\n return names.map((name) => {\n const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);\n const stats = fsStat.statSync(entryPath, settings.fsStatSettings);\n const entry = {\n name,\n path: entryPath,\n dirent: utils.fs.createDirentFromStats(name, stats)\n };\n if (settings.stats) {\n entry.stats = stats;\n }\n return entry;\n });\n}\nexports.readdir = readdir;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst fs = require(\"./adapters/fs\");\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false);\n this.fs = fs.createFileSystemAdapter(this._options.fs);\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\n this.stats = this._getValue(this._options.stats, false);\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\n this.fsStatSettings = new fsStat.Settings({\n followSymbolicLink: this.followSymbolicLinks,\n fs: this.fs,\n throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink\n });\n }\n _getValue(option, value) {\n return option !== null && option !== void 0 ? option : value;\n }\n}\nexports.default = Settings;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDirentFromStats = void 0;\nclass DirentFromStats {\n constructor(name, stats) {\n this.name = name;\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\n this.isDirectory = stats.isDirectory.bind(stats);\n this.isFIFO = stats.isFIFO.bind(stats);\n this.isFile = stats.isFile.bind(stats);\n this.isSocket = stats.isSocket.bind(stats);\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\n }\n}\nfunction createDirentFromStats(name, stats) {\n return new DirentFromStats(name, stats);\n}\nexports.createDirentFromStats = createDirentFromStats;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fs = void 0;\nconst fs = require(\"./fs\");\nexports.fs = fs;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\nconst fs = require(\"fs\");\nexports.FILE_SYSTEM_ADAPTER = {\n lstat: fs.lstat,\n stat: fs.stat,\n lstatSync: fs.lstatSync,\n statSync: fs.statSync\n};\nfunction createFileSystemAdapter(fsMethods) {\n if (fsMethods === undefined) {\n return exports.FILE_SYSTEM_ADAPTER;\n }\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\n}\nexports.createFileSystemAdapter = createFileSystemAdapter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.statSync = exports.stat = exports.Settings = void 0;\nconst async = require(\"./providers/async\");\nconst sync = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nexports.Settings = settings_1.default;\nfunction stat(path, optionsOrSettingsOrCallback, callback) {\n if (typeof optionsOrSettingsOrCallback === 'function') {\n async.read(path, getSettings(), optionsOrSettingsOrCallback);\n return;\n }\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\n}\nexports.stat = stat;\nfunction statSync(path, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n return sync.read(path, settings);\n}\nexports.statSync = statSync;\nfunction getSettings(settingsOrOptions = {}) {\n if (settingsOrOptions instanceof settings_1.default) {\n return settingsOrOptions;\n }\n return new settings_1.default(settingsOrOptions);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.read = void 0;\nfunction read(path, settings, callback) {\n settings.fs.lstat(path, (lstatError, lstat) => {\n if (lstatError !== null) {\n callFailureCallback(callback, lstatError);\n return;\n }\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\n callSuccessCallback(callback, lstat);\n return;\n }\n settings.fs.stat(path, (statError, stat) => {\n if (statError !== null) {\n if (settings.throwErrorOnBrokenSymbolicLink) {\n callFailureCallback(callback, statError);\n return;\n }\n callSuccessCallback(callback, lstat);\n return;\n }\n if (settings.markSymbolicLink) {\n stat.isSymbolicLink = () => true;\n }\n callSuccessCallback(callback, stat);\n });\n });\n}\nexports.read = read;\nfunction callFailureCallback(callback, error) {\n callback(error);\n}\nfunction callSuccessCallback(callback, result) {\n callback(null, result);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.read = void 0;\nfunction read(path, settings) {\n const lstat = settings.fs.lstatSync(path);\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\n return lstat;\n }\n try {\n const stat = settings.fs.statSync(path);\n if (settings.markSymbolicLink) {\n stat.isSymbolicLink = () => true;\n }\n return stat;\n }\n catch (error) {\n if (!settings.throwErrorOnBrokenSymbolicLink) {\n return lstat;\n }\n throw error;\n }\n}\nexports.read = read;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = require(\"./adapters/fs\");\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true);\n this.fs = fs.createFileSystemAdapter(this._options.fs);\n this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false);\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\n }\n _getValue(option, value) {\n return option !== null && option !== void 0 ? option : value;\n }\n}\nexports.default = Settings;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Settings = exports.walkStream = exports.walkSync = exports.walk = void 0;\nconst async_1 = require(\"./providers/async\");\nconst stream_1 = require(\"./providers/stream\");\nconst sync_1 = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nexports.Settings = settings_1.default;\nfunction walk(directory, optionsOrSettingsOrCallback, callback) {\n if (typeof optionsOrSettingsOrCallback === 'function') {\n new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback);\n return;\n }\n new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback);\n}\nexports.walk = walk;\nfunction walkSync(directory, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n const provider = new sync_1.default(directory, settings);\n return provider.read();\n}\nexports.walkSync = walkSync;\nfunction walkStream(directory, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n const provider = new stream_1.default(directory, settings);\n return provider.read();\n}\nexports.walkStream = walkStream;\nfunction getSettings(settingsOrOptions = {}) {\n if (settingsOrOptions instanceof settings_1.default) {\n return settingsOrOptions;\n }\n return new settings_1.default(settingsOrOptions);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst async_1 = require(\"../readers/async\");\nclass AsyncProvider {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._reader = new async_1.default(this._root, this._settings);\n this._storage = [];\n }\n read(callback) {\n this._reader.onError((error) => {\n callFailureCallback(callback, error);\n });\n this._reader.onEntry((entry) => {\n this._storage.push(entry);\n });\n this._reader.onEnd(() => {\n callSuccessCallback(callback, this._storage);\n });\n this._reader.read();\n }\n}\nexports.default = AsyncProvider;\nfunction callFailureCallback(callback, error) {\n callback(error);\n}\nfunction callSuccessCallback(callback, entries) {\n callback(null, entries);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\nconst async_1 = require(\"../readers/async\");\nclass StreamProvider {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._reader = new async_1.default(this._root, this._settings);\n this._stream = new stream_1.Readable({\n objectMode: true,\n read: () => { },\n destroy: () => {\n if (!this._reader.isDestroyed) {\n this._reader.destroy();\n }\n }\n });\n }\n read() {\n this._reader.onError((error) => {\n this._stream.emit('error', error);\n });\n this._reader.onEntry((entry) => {\n this._stream.push(entry);\n });\n this._reader.onEnd(() => {\n this._stream.push(null);\n });\n this._reader.read();\n return this._stream;\n }\n}\nexports.default = StreamProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst sync_1 = require(\"../readers/sync\");\nclass SyncProvider {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._reader = new sync_1.default(this._root, this._settings);\n }\n read() {\n return this._reader.read();\n }\n}\nexports.default = SyncProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst events_1 = require(\"events\");\nconst fsScandir = require(\"@nodelib/fs.scandir\");\nconst fastq = require(\"fastq\");\nconst common = require(\"./common\");\nconst reader_1 = require(\"./reader\");\nclass AsyncReader extends reader_1.default {\n constructor(_root, _settings) {\n super(_root, _settings);\n this._settings = _settings;\n this._scandir = fsScandir.scandir;\n this._emitter = new events_1.EventEmitter();\n this._queue = fastq(this._worker.bind(this), this._settings.concurrency);\n this._isFatalError = false;\n this._isDestroyed = false;\n this._queue.drain = () => {\n if (!this._isFatalError) {\n this._emitter.emit('end');\n }\n };\n }\n read() {\n this._isFatalError = false;\n this._isDestroyed = false;\n setImmediate(() => {\n this._pushToQueue(this._root, this._settings.basePath);\n });\n return this._emitter;\n }\n get isDestroyed() {\n return this._isDestroyed;\n }\n destroy() {\n if (this._isDestroyed) {\n throw new Error('The reader is already destroyed');\n }\n this._isDestroyed = true;\n this._queue.killAndDrain();\n }\n onEntry(callback) {\n this._emitter.on('entry', callback);\n }\n onError(callback) {\n this._emitter.once('error', callback);\n }\n onEnd(callback) {\n this._emitter.once('end', callback);\n }\n _pushToQueue(directory, base) {\n const queueItem = { directory, base };\n this._queue.push(queueItem, (error) => {\n if (error !== null) {\n this._handleError(error);\n }\n });\n }\n _worker(item, done) {\n this._scandir(item.directory, this._settings.fsScandirSettings, (error, entries) => {\n if (error !== null) {\n done(error, undefined);\n return;\n }\n for (const entry of entries) {\n this._handleEntry(entry, item.base);\n }\n done(null, undefined);\n });\n }\n _handleError(error) {\n if (this._isDestroyed || !common.isFatalError(this._settings, error)) {\n return;\n }\n this._isFatalError = true;\n this._isDestroyed = true;\n this._emitter.emit('error', error);\n }\n _handleEntry(entry, base) {\n if (this._isDestroyed || this._isFatalError) {\n return;\n }\n const fullpath = entry.path;\n if (base !== undefined) {\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\n }\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\n this._emitEntry(entry);\n }\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\n this._pushToQueue(fullpath, base === undefined ? undefined : entry.path);\n }\n }\n _emitEntry(entry) {\n this._emitter.emit('entry', entry);\n }\n}\nexports.default = AsyncReader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joinPathSegments = exports.replacePathSegmentSeparator = exports.isAppliedFilter = exports.isFatalError = void 0;\nfunction isFatalError(settings, error) {\n if (settings.errorFilter === null) {\n return true;\n }\n return !settings.errorFilter(error);\n}\nexports.isFatalError = isFatalError;\nfunction isAppliedFilter(filter, value) {\n return filter === null || filter(value);\n}\nexports.isAppliedFilter = isAppliedFilter;\nfunction replacePathSegmentSeparator(filepath, separator) {\n return filepath.split(/[/\\\\]/).join(separator);\n}\nexports.replacePathSegmentSeparator = replacePathSegmentSeparator;\nfunction joinPathSegments(a, b, separator) {\n if (a === '') {\n return b;\n }\n /**\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\n */\n if (a.endsWith(separator)) {\n return a + b;\n }\n return a + separator + b;\n}\nexports.joinPathSegments = joinPathSegments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst common = require(\"./common\");\nclass Reader {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator);\n }\n}\nexports.default = Reader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fsScandir = require(\"@nodelib/fs.scandir\");\nconst common = require(\"./common\");\nconst reader_1 = require(\"./reader\");\nclass SyncReader extends reader_1.default {\n constructor() {\n super(...arguments);\n this._scandir = fsScandir.scandirSync;\n this._storage = [];\n this._queue = new Set();\n }\n read() {\n this._pushToQueue(this._root, this._settings.basePath);\n this._handleQueue();\n return this._storage;\n }\n _pushToQueue(directory, base) {\n this._queue.add({ directory, base });\n }\n _handleQueue() {\n for (const item of this._queue.values()) {\n this._handleDirectory(item.directory, item.base);\n }\n }\n _handleDirectory(directory, base) {\n try {\n const entries = this._scandir(directory, this._settings.fsScandirSettings);\n for (const entry of entries) {\n this._handleEntry(entry, base);\n }\n }\n catch (error) {\n this._handleError(error);\n }\n }\n _handleError(error) {\n if (!common.isFatalError(this._settings, error)) {\n return;\n }\n throw error;\n }\n _handleEntry(entry, base) {\n const fullpath = entry.path;\n if (base !== undefined) {\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\n }\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\n this._pushToStorage(entry);\n }\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\n this._pushToQueue(fullpath, base === undefined ? undefined : entry.path);\n }\n }\n _pushToStorage(entry) {\n this._storage.push(entry);\n }\n}\nexports.default = SyncReader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst fsScandir = require(\"@nodelib/fs.scandir\");\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.basePath = this._getValue(this._options.basePath, undefined);\n this.concurrency = this._getValue(this._options.concurrency, Number.POSITIVE_INFINITY);\n this.deepFilter = this._getValue(this._options.deepFilter, null);\n this.entryFilter = this._getValue(this._options.entryFilter, null);\n this.errorFilter = this._getValue(this._options.errorFilter, null);\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\n this.fsScandirSettings = new fsScandir.Settings({\n followSymbolicLinks: this._options.followSymbolicLinks,\n fs: this._options.fs,\n pathSegmentSeparator: this._options.pathSegmentSeparator,\n stats: this._options.stats,\n throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink\n });\n }\n _getValue(option, value) {\n return option !== null && option !== void 0 ? option : value;\n }\n}\nexports.default = Settings;\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 14);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"path\");\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _promise = __webpack_require__(173);\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new _promise2.default(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return _promise2.default.resolve(value).then(function (value) {\n step(\"next\", value);\n }, function (err) {\n step(\"throw\", err);\n });\n }\n }\n\n return step(\"next\");\n });\n };\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"util\");\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"fs\");\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nclass MessageError extends Error {\n constructor(msg, code) {\n super(msg);\n this.code = code;\n }\n\n}\n\nexports.MessageError = MessageError;\nclass ProcessSpawnError extends MessageError {\n constructor(msg, code, process) {\n super(msg, code);\n this.process = process;\n }\n\n}\n\nexports.ProcessSpawnError = ProcessSpawnError;\nclass SecurityError extends MessageError {}\n\nexports.SecurityError = SecurityError;\nclass ProcessTermError extends MessageError {}\n\nexports.ProcessTermError = ProcessTermError;\nclass ResponseError extends Error {\n constructor(msg, responseCode) {\n super(msg);\n this.responseCode = responseCode;\n }\n\n}\nexports.ResponseError = ResponseError;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFirstSuitableFolder = exports.readFirstAvailableStream = exports.makeTempDir = exports.hardlinksWork = exports.writeFilePreservingEol = exports.getFileSizeOnDisk = exports.walk = exports.symlink = exports.find = exports.readJsonAndFile = exports.readJson = exports.readFileAny = exports.hardlinkBulk = exports.copyBulk = exports.unlink = exports.glob = exports.link = exports.chmod = exports.lstat = exports.exists = exports.mkdirp = exports.stat = exports.access = exports.rename = exports.readdir = exports.realpath = exports.readlink = exports.writeFile = exports.open = exports.readFileBuffer = exports.lockQueue = exports.constants = undefined;\n\nvar _asyncToGenerator2;\n\nfunction _load_asyncToGenerator() {\n return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1));\n}\n\nlet buildActionsForCopy = (() => {\n var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) {\n\n //\n let build = (() => {\n var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) {\n const src = data.src,\n dest = data.dest,\n type = data.type;\n\n const onFresh = data.onFresh || noop;\n const onDone = data.onDone || noop;\n\n // TODO https://github.com/yarnpkg/yarn/issues/3751\n // related to bundled dependencies handling\n if (files.has(dest.toLowerCase())) {\n reporter.verbose(`The case-insensitive file ${dest} shouldn't be copied twice in one bulk copy`);\n } else {\n files.add(dest.toLowerCase());\n }\n\n if (type === 'symlink') {\n yield mkdirp((_path || _load_path()).default.dirname(dest));\n onFresh();\n actions.symlink.push({\n dest,\n linkname: src\n });\n onDone();\n return;\n }\n\n if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) {\n // ignored file\n return;\n }\n\n const srcStat = yield lstat(src);\n let srcFiles;\n\n if (srcStat.isDirectory()) {\n srcFiles = yield readdir(src);\n }\n\n let destStat;\n try {\n // try accessing the destination\n destStat = yield lstat(dest);\n } catch (e) {\n // proceed if destination doesn't exist, otherwise error\n if (e.code !== 'ENOENT') {\n throw e;\n }\n }\n\n // if destination exists\n if (destStat) {\n const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink();\n const bothFolders = srcStat.isDirectory() && destStat.isDirectory();\n const bothFiles = srcStat.isFile() && destStat.isFile();\n\n // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving\n // us modes that aren't valid. investigate this, it's generally safe to proceed.\n\n /* if (srcStat.mode !== destStat.mode) {\n try {\n await access(dest, srcStat.mode);\n } catch (err) {}\n } */\n\n if (bothFiles && artifactFiles.has(dest)) {\n // this file gets changed during build, likely by a custom install script. Don't bother checking it.\n onDone();\n reporter.verbose(reporter.lang('verboseFileSkipArtifact', src));\n return;\n }\n\n if (bothFiles && srcStat.size === destStat.size && (0, (_fsNormalized || _load_fsNormalized()).fileDatesEqual)(srcStat.mtime, destStat.mtime)) {\n // we can safely assume this is the same file\n onDone();\n reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.size, +srcStat.mtime));\n return;\n }\n\n if (bothSymlinks) {\n const srcReallink = yield readlink(src);\n if (srcReallink === (yield readlink(dest))) {\n // if both symlinks are the same then we can continue on\n onDone();\n reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink));\n return;\n }\n }\n\n if (bothFolders) {\n // mark files that aren't in this folder as possibly extraneous\n const destFiles = yield readdir(dest);\n invariant(srcFiles, 'src files not initialised');\n\n for (var _iterator4 = destFiles, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n var _ref6;\n\n if (_isArray4) {\n if (_i4 >= _iterator4.length) break;\n _ref6 = _iterator4[_i4++];\n } else {\n _i4 = _iterator4.next();\n if (_i4.done) break;\n _ref6 = _i4.value;\n }\n\n const file = _ref6;\n\n if (srcFiles.indexOf(file) < 0) {\n const loc = (_path || _load_path()).default.join(dest, file);\n possibleExtraneous.add(loc);\n\n if ((yield lstat(loc)).isDirectory()) {\n for (var _iterator5 = yield readdir(loc), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {\n var _ref7;\n\n if (_isArray5) {\n if (_i5 >= _iterator5.length) break;\n _ref7 = _iterator5[_i5++];\n } else {\n _i5 = _iterator5.next();\n if (_i5.done) break;\n _ref7 = _i5.value;\n }\n\n const file = _ref7;\n\n possibleExtraneous.add((_path || _load_path()).default.join(loc, file));\n }\n }\n }\n }\n }\n }\n\n if (destStat && destStat.isSymbolicLink()) {\n yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest);\n destStat = null;\n }\n\n if (srcStat.isSymbolicLink()) {\n onFresh();\n const linkname = yield readlink(src);\n actions.symlink.push({\n dest,\n linkname\n });\n onDone();\n } else if (srcStat.isDirectory()) {\n if (!destStat) {\n reporter.verbose(reporter.lang('verboseFileFolder', dest));\n yield mkdirp(dest);\n }\n\n const destParts = dest.split((_path || _load_path()).default.sep);\n while (destParts.length) {\n files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase());\n destParts.pop();\n }\n\n // push all files to queue\n invariant(srcFiles, 'src files not initialised');\n let remaining = srcFiles.length;\n if (!remaining) {\n onDone();\n }\n for (var _iterator6 = srcFiles, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {\n var _ref8;\n\n if (_isArray6) {\n if (_i6 >= _iterator6.length) break;\n _ref8 = _iterator6[_i6++];\n } else {\n _i6 = _iterator6.next();\n if (_i6.done) break;\n _ref8 = _i6.value;\n }\n\n const file = _ref8;\n\n queue.push({\n dest: (_path || _load_path()).default.join(dest, file),\n onFresh,\n onDone: function (_onDone) {\n function onDone() {\n return _onDone.apply(this, arguments);\n }\n\n onDone.toString = function () {\n return _onDone.toString();\n };\n\n return onDone;\n }(function () {\n if (--remaining === 0) {\n onDone();\n }\n }),\n src: (_path || _load_path()).default.join(src, file)\n });\n }\n } else if (srcStat.isFile()) {\n onFresh();\n actions.file.push({\n src,\n dest,\n atime: srcStat.atime,\n mtime: srcStat.mtime,\n mode: srcStat.mode\n });\n onDone();\n } else {\n throw new Error(`unsure how to copy this: ${src}`);\n }\n });\n\n return function build(_x5) {\n return _ref5.apply(this, arguments);\n };\n })();\n\n const artifactFiles = new Set(events.artifactFiles || []);\n const files = new Set();\n\n // initialise events\n for (var _iterator = queue, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref2 = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref2 = _i.value;\n }\n\n const item = _ref2;\n\n const onDone = item.onDone;\n item.onDone = function () {\n events.onProgress(item.dest);\n if (onDone) {\n onDone();\n }\n };\n }\n events.onStart(queue.length);\n\n // start building actions\n const actions = {\n file: [],\n symlink: [],\n link: []\n };\n\n // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items\n // at a time due to the requirement to push items onto the queue\n while (queue.length) {\n const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS);\n yield Promise.all(items.map(build));\n }\n\n // simulate the existence of some files to prevent considering them extraneous\n for (var _iterator2 = artifactFiles, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref3 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref3 = _i2.value;\n }\n\n const file = _ref3;\n\n if (possibleExtraneous.has(file)) {\n reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file));\n possibleExtraneous.delete(file);\n }\n }\n\n for (var _iterator3 = possibleExtraneous, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref4;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref4 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref4 = _i3.value;\n }\n\n const loc = _ref4;\n\n if (files.has(loc.toLowerCase())) {\n possibleExtraneous.delete(loc);\n }\n }\n\n return actions;\n });\n\n return function buildActionsForCopy(_x, _x2, _x3, _x4) {\n return _ref.apply(this, arguments);\n };\n})();\n\nlet buildActionsForHardlink = (() => {\n var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) {\n\n //\n let build = (() => {\n var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) {\n const src = data.src,\n dest = data.dest;\n\n const onFresh = data.onFresh || noop;\n const onDone = data.onDone || noop;\n if (files.has(dest.toLowerCase())) {\n // Fixes issue https://github.com/yarnpkg/yarn/issues/2734\n // When bulk hardlinking we have A -> B structure that we want to hardlink to A1 -> B1,\n // package-linker passes that modules A1 and B1 need to be hardlinked,\n // the recursive linking algorithm of A1 ends up scheduling files in B1 to be linked twice which will case\n // an exception.\n onDone();\n return;\n }\n files.add(dest.toLowerCase());\n\n if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) {\n // ignored file\n return;\n }\n\n const srcStat = yield lstat(src);\n let srcFiles;\n\n if (srcStat.isDirectory()) {\n srcFiles = yield readdir(src);\n }\n\n const destExists = yield exists(dest);\n if (destExists) {\n const destStat = yield lstat(dest);\n\n const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink();\n const bothFolders = srcStat.isDirectory() && destStat.isDirectory();\n const bothFiles = srcStat.isFile() && destStat.isFile();\n\n if (srcStat.mode !== destStat.mode) {\n try {\n yield access(dest, srcStat.mode);\n } catch (err) {\n // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving\n // us modes that aren't valid. investigate this, it's generally safe to proceed.\n reporter.verbose(err);\n }\n }\n\n if (bothFiles && artifactFiles.has(dest)) {\n // this file gets changed during build, likely by a custom install script. Don't bother checking it.\n onDone();\n reporter.verbose(reporter.lang('verboseFileSkipArtifact', src));\n return;\n }\n\n // correct hardlink\n if (bothFiles && srcStat.ino !== null && srcStat.ino === destStat.ino) {\n onDone();\n reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.ino));\n return;\n }\n\n if (bothSymlinks) {\n const srcReallink = yield readlink(src);\n if (srcReallink === (yield readlink(dest))) {\n // if both symlinks are the same then we can continue on\n onDone();\n reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink));\n return;\n }\n }\n\n if (bothFolders) {\n // mark files that aren't in this folder as possibly extraneous\n const destFiles = yield readdir(dest);\n invariant(srcFiles, 'src files not initialised');\n\n for (var _iterator10 = destFiles, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {\n var _ref14;\n\n if (_isArray10) {\n if (_i10 >= _iterator10.length) break;\n _ref14 = _iterator10[_i10++];\n } else {\n _i10 = _iterator10.next();\n if (_i10.done) break;\n _ref14 = _i10.value;\n }\n\n const file = _ref14;\n\n if (srcFiles.indexOf(file) < 0) {\n const loc = (_path || _load_path()).default.join(dest, file);\n possibleExtraneous.add(loc);\n\n if ((yield lstat(loc)).isDirectory()) {\n for (var _iterator11 = yield readdir(loc), _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) {\n var _ref15;\n\n if (_isArray11) {\n if (_i11 >= _iterator11.length) break;\n _ref15 = _iterator11[_i11++];\n } else {\n _i11 = _iterator11.next();\n if (_i11.done) break;\n _ref15 = _i11.value;\n }\n\n const file = _ref15;\n\n possibleExtraneous.add((_path || _load_path()).default.join(loc, file));\n }\n }\n }\n }\n }\n }\n\n if (srcStat.isSymbolicLink()) {\n onFresh();\n const linkname = yield readlink(src);\n actions.symlink.push({\n dest,\n linkname\n });\n onDone();\n } else if (srcStat.isDirectory()) {\n reporter.verbose(reporter.lang('verboseFileFolder', dest));\n yield mkdirp(dest);\n\n const destParts = dest.split((_path || _load_path()).default.sep);\n while (destParts.length) {\n files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase());\n destParts.pop();\n }\n\n // push all files to queue\n invariant(srcFiles, 'src files not initialised');\n let remaining = srcFiles.length;\n if (!remaining) {\n onDone();\n }\n for (var _iterator12 = srcFiles, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) {\n var _ref16;\n\n if (_isArray12) {\n if (_i12 >= _iterator12.length) break;\n _ref16 = _iterator12[_i12++];\n } else {\n _i12 = _iterator12.next();\n if (_i12.done) break;\n _ref16 = _i12.value;\n }\n\n const file = _ref16;\n\n queue.push({\n onFresh,\n src: (_path || _load_path()).default.join(src, file),\n dest: (_path || _load_path()).default.join(dest, file),\n onDone: function (_onDone2) {\n function onDone() {\n return _onDone2.apply(this, arguments);\n }\n\n onDone.toString = function () {\n return _onDone2.toString();\n };\n\n return onDone;\n }(function () {\n if (--remaining === 0) {\n onDone();\n }\n })\n });\n }\n } else if (srcStat.isFile()) {\n onFresh();\n actions.link.push({\n src,\n dest,\n removeDest: destExists\n });\n onDone();\n } else {\n throw new Error(`unsure how to copy this: ${src}`);\n }\n });\n\n return function build(_x10) {\n return _ref13.apply(this, arguments);\n };\n })();\n\n const artifactFiles = new Set(events.artifactFiles || []);\n const files = new Set();\n\n // initialise events\n for (var _iterator7 = queue, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {\n var _ref10;\n\n if (_isArray7) {\n if (_i7 >= _iterator7.length) break;\n _ref10 = _iterator7[_i7++];\n } else {\n _i7 = _iterator7.next();\n if (_i7.done) break;\n _ref10 = _i7.value;\n }\n\n const item = _ref10;\n\n const onDone = item.onDone || noop;\n item.onDone = function () {\n events.onProgress(item.dest);\n onDone();\n };\n }\n events.onStart(queue.length);\n\n // start building actions\n const actions = {\n file: [],\n symlink: [],\n link: []\n };\n\n // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items\n // at a time due to the requirement to push items onto the queue\n while (queue.length) {\n const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS);\n yield Promise.all(items.map(build));\n }\n\n // simulate the existence of some files to prevent considering them extraneous\n for (var _iterator8 = artifactFiles, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {\n var _ref11;\n\n if (_isArray8) {\n if (_i8 >= _iterator8.length) break;\n _ref11 = _iterator8[_i8++];\n } else {\n _i8 = _iterator8.next();\n if (_i8.done) break;\n _ref11 = _i8.value;\n }\n\n const file = _ref11;\n\n if (possibleExtraneous.has(file)) {\n reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file));\n possibleExtraneous.delete(file);\n }\n }\n\n for (var _iterator9 = possibleExtraneous, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {\n var _ref12;\n\n if (_isArray9) {\n if (_i9 >= _iterator9.length) break;\n _ref12 = _iterator9[_i9++];\n } else {\n _i9 = _iterator9.next();\n if (_i9.done) break;\n _ref12 = _i9.value;\n }\n\n const loc = _ref12;\n\n if (files.has(loc.toLowerCase())) {\n possibleExtraneous.delete(loc);\n }\n }\n\n return actions;\n });\n\n return function buildActionsForHardlink(_x6, _x7, _x8, _x9) {\n return _ref9.apply(this, arguments);\n };\n})();\n\nlet copyBulk = exports.copyBulk = (() => {\n var _ref17 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) {\n const events = {\n onStart: _events && _events.onStart || noop,\n onProgress: _events && _events.onProgress || noop,\n possibleExtraneous: _events ? _events.possibleExtraneous : new Set(),\n ignoreBasenames: _events && _events.ignoreBasenames || [],\n artifactFiles: _events && _events.artifactFiles || []\n };\n\n const actions = yield buildActionsForCopy(queue, events, events.possibleExtraneous, reporter);\n events.onStart(actions.file.length + actions.symlink.length + actions.link.length);\n\n const fileActions = actions.file;\n\n const currentlyWriting = new Map();\n\n yield (_promise || _load_promise()).queue(fileActions, (() => {\n var _ref18 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) {\n let writePromise;\n while (writePromise = currentlyWriting.get(data.dest)) {\n yield writePromise;\n }\n\n reporter.verbose(reporter.lang('verboseFileCopy', data.src, data.dest));\n const copier = (0, (_fsNormalized || _load_fsNormalized()).copyFile)(data, function () {\n return currentlyWriting.delete(data.dest);\n });\n currentlyWriting.set(data.dest, copier);\n events.onProgress(data.dest);\n return copier;\n });\n\n return function (_x14) {\n return _ref18.apply(this, arguments);\n };\n })(), CONCURRENT_QUEUE_ITEMS);\n\n // we need to copy symlinks last as they could reference files we were copying\n const symlinkActions = actions.symlink;\n yield (_promise || _load_promise()).queue(symlinkActions, function (data) {\n const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname);\n reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname));\n return symlink(linkname, data.dest);\n });\n });\n\n return function copyBulk(_x11, _x12, _x13) {\n return _ref17.apply(this, arguments);\n };\n})();\n\nlet hardlinkBulk = exports.hardlinkBulk = (() => {\n var _ref19 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) {\n const events = {\n onStart: _events && _events.onStart || noop,\n onProgress: _events && _events.onProgress || noop,\n possibleExtraneous: _events ? _events.possibleExtraneous : new Set(),\n artifactFiles: _events && _events.artifactFiles || [],\n ignoreBasenames: []\n };\n\n const actions = yield buildActionsForHardlink(queue, events, events.possibleExtraneous, reporter);\n events.onStart(actions.file.length + actions.symlink.length + actions.link.length);\n\n const fileActions = actions.link;\n\n yield (_promise || _load_promise()).queue(fileActions, (() => {\n var _ref20 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) {\n reporter.verbose(reporter.lang('verboseFileLink', data.src, data.dest));\n if (data.removeDest) {\n yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(data.dest);\n }\n yield link(data.src, data.dest);\n });\n\n return function (_x18) {\n return _ref20.apply(this, arguments);\n };\n })(), CONCURRENT_QUEUE_ITEMS);\n\n // we need to copy symlinks last as they could reference files we were copying\n const symlinkActions = actions.symlink;\n yield (_promise || _load_promise()).queue(symlinkActions, function (data) {\n const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname);\n reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname));\n return symlink(linkname, data.dest);\n });\n });\n\n return function hardlinkBulk(_x15, _x16, _x17) {\n return _ref19.apply(this, arguments);\n };\n})();\n\nlet readFileAny = exports.readFileAny = (() => {\n var _ref21 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (files) {\n for (var _iterator13 = files, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) {\n var _ref22;\n\n if (_isArray13) {\n if (_i13 >= _iterator13.length) break;\n _ref22 = _iterator13[_i13++];\n } else {\n _i13 = _iterator13.next();\n if (_i13.done) break;\n _ref22 = _i13.value;\n }\n\n const file = _ref22;\n\n if (yield exists(file)) {\n return readFile(file);\n }\n }\n return null;\n });\n\n return function readFileAny(_x19) {\n return _ref21.apply(this, arguments);\n };\n})();\n\nlet readJson = exports.readJson = (() => {\n var _ref23 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) {\n return (yield readJsonAndFile(loc)).object;\n });\n\n return function readJson(_x20) {\n return _ref23.apply(this, arguments);\n };\n})();\n\nlet readJsonAndFile = exports.readJsonAndFile = (() => {\n var _ref24 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) {\n const file = yield readFile(loc);\n try {\n return {\n object: (0, (_map || _load_map()).default)(JSON.parse(stripBOM(file))),\n content: file\n };\n } catch (err) {\n err.message = `${loc}: ${err.message}`;\n throw err;\n }\n });\n\n return function readJsonAndFile(_x21) {\n return _ref24.apply(this, arguments);\n };\n})();\n\nlet find = exports.find = (() => {\n var _ref25 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (filename, dir) {\n const parts = dir.split((_path || _load_path()).default.sep);\n\n while (parts.length) {\n const loc = parts.concat(filename).join((_path || _load_path()).default.sep);\n\n if (yield exists(loc)) {\n return loc;\n } else {\n parts.pop();\n }\n }\n\n return false;\n });\n\n return function find(_x22, _x23) {\n return _ref25.apply(this, arguments);\n };\n})();\n\nlet symlink = exports.symlink = (() => {\n var _ref26 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest) {\n try {\n const stats = yield lstat(dest);\n if (stats.isSymbolicLink()) {\n const resolved = yield realpath(dest);\n if (resolved === src) {\n return;\n }\n }\n } catch (err) {\n if (err.code !== 'ENOENT') {\n throw err;\n }\n }\n // We use rimraf for unlink which never throws an ENOENT on missing target\n yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest);\n\n if (process.platform === 'win32') {\n // use directory junctions if possible on win32, this requires absolute paths\n yield fsSymlink(src, dest, 'junction');\n } else {\n // use relative paths otherwise which will be retained if the directory is moved\n let relative;\n try {\n relative = (_path || _load_path()).default.relative((_fs || _load_fs()).default.realpathSync((_path || _load_path()).default.dirname(dest)), (_fs || _load_fs()).default.realpathSync(src));\n } catch (err) {\n if (err.code !== 'ENOENT') {\n throw err;\n }\n relative = (_path || _load_path()).default.relative((_path || _load_path()).default.dirname(dest), src);\n }\n // When path.relative returns an empty string for the current directory, we should instead use\n // '.', which is a valid fs.symlink target.\n yield fsSymlink(relative || '.', dest);\n }\n });\n\n return function symlink(_x24, _x25) {\n return _ref26.apply(this, arguments);\n };\n})();\n\nlet walk = exports.walk = (() => {\n var _ref27 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir, relativeDir, ignoreBasenames = new Set()) {\n let files = [];\n\n let filenames = yield readdir(dir);\n if (ignoreBasenames.size) {\n filenames = filenames.filter(function (name) {\n return !ignoreBasenames.has(name);\n });\n }\n\n for (var _iterator14 = filenames, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) {\n var _ref28;\n\n if (_isArray14) {\n if (_i14 >= _iterator14.length) break;\n _ref28 = _iterator14[_i14++];\n } else {\n _i14 = _iterator14.next();\n if (_i14.done) break;\n _ref28 = _i14.value;\n }\n\n const name = _ref28;\n\n const relative = relativeDir ? (_path || _load_path()).default.join(relativeDir, name) : name;\n const loc = (_path || _load_path()).default.join(dir, name);\n const stat = yield lstat(loc);\n\n files.push({\n relative,\n basename: name,\n absolute: loc,\n mtime: +stat.mtime\n });\n\n if (stat.isDirectory()) {\n files = files.concat((yield walk(loc, relative, ignoreBasenames)));\n }\n }\n\n return files;\n });\n\n return function walk(_x26, _x27) {\n return _ref27.apply(this, arguments);\n };\n})();\n\nlet getFileSizeOnDisk = exports.getFileSizeOnDisk = (() => {\n var _ref29 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) {\n const stat = yield lstat(loc);\n const size = stat.size,\n blockSize = stat.blksize;\n\n\n return Math.ceil(size / blockSize) * blockSize;\n });\n\n return function getFileSizeOnDisk(_x28) {\n return _ref29.apply(this, arguments);\n };\n})();\n\nlet getEolFromFile = (() => {\n var _ref30 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path) {\n if (!(yield exists(path))) {\n return undefined;\n }\n\n const buffer = yield readFileBuffer(path);\n\n for (let i = 0; i < buffer.length; ++i) {\n if (buffer[i] === cr) {\n return '\\r\\n';\n }\n if (buffer[i] === lf) {\n return '\\n';\n }\n }\n return undefined;\n });\n\n return function getEolFromFile(_x29) {\n return _ref30.apply(this, arguments);\n };\n})();\n\nlet writeFilePreservingEol = exports.writeFilePreservingEol = (() => {\n var _ref31 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path, data) {\n const eol = (yield getEolFromFile(path)) || (_os || _load_os()).default.EOL;\n if (eol !== '\\n') {\n data = data.replace(/\\n/g, eol);\n }\n yield writeFile(path, data);\n });\n\n return function writeFilePreservingEol(_x30, _x31) {\n return _ref31.apply(this, arguments);\n };\n})();\n\nlet hardlinksWork = exports.hardlinksWork = (() => {\n var _ref32 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir) {\n const filename = 'test-file' + Math.random();\n const file = (_path || _load_path()).default.join(dir, filename);\n const fileLink = (_path || _load_path()).default.join(dir, filename + '-link');\n try {\n yield writeFile(file, 'test');\n yield link(file, fileLink);\n } catch (err) {\n return false;\n } finally {\n yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(file);\n yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(fileLink);\n }\n return true;\n });\n\n return function hardlinksWork(_x32) {\n return _ref32.apply(this, arguments);\n };\n})();\n\n// not a strict polyfill for Node's fs.mkdtemp\n\n\nlet makeTempDir = exports.makeTempDir = (() => {\n var _ref33 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (prefix) {\n const dir = (_path || _load_path()).default.join((_os || _load_os()).default.tmpdir(), `yarn-${prefix || ''}-${Date.now()}-${Math.random()}`);\n yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dir);\n yield mkdirp(dir);\n return dir;\n });\n\n return function makeTempDir(_x33) {\n return _ref33.apply(this, arguments);\n };\n})();\n\nlet readFirstAvailableStream = exports.readFirstAvailableStream = (() => {\n var _ref34 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths) {\n for (var _iterator15 = paths, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) {\n var _ref35;\n\n if (_isArray15) {\n if (_i15 >= _iterator15.length) break;\n _ref35 = _iterator15[_i15++];\n } else {\n _i15 = _iterator15.next();\n if (_i15.done) break;\n _ref35 = _i15.value;\n }\n\n const path = _ref35;\n\n try {\n const fd = yield open(path, 'r');\n return (_fs || _load_fs()).default.createReadStream(path, { fd });\n } catch (err) {\n // Try the next one\n }\n }\n return null;\n });\n\n return function readFirstAvailableStream(_x34) {\n return _ref34.apply(this, arguments);\n };\n})();\n\nlet getFirstSuitableFolder = exports.getFirstSuitableFolder = (() => {\n var _ref36 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths, mode = constants.W_OK | constants.X_OK) {\n const result = {\n skipped: [],\n folder: null\n };\n\n for (var _iterator16 = paths, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) {\n var _ref37;\n\n if (_isArray16) {\n if (_i16 >= _iterator16.length) break;\n _ref37 = _iterator16[_i16++];\n } else {\n _i16 = _iterator16.next();\n if (_i16.done) break;\n _ref37 = _i16.value;\n }\n\n const folder = _ref37;\n\n try {\n yield mkdirp(folder);\n yield access(folder, mode);\n\n result.folder = folder;\n\n return result;\n } catch (error) {\n result.skipped.push({\n error,\n folder\n });\n }\n }\n return result;\n });\n\n return function getFirstSuitableFolder(_x35) {\n return _ref36.apply(this, arguments);\n };\n})();\n\nexports.copy = copy;\nexports.readFile = readFile;\nexports.readFileRaw = readFileRaw;\nexports.normalizeOS = normalizeOS;\n\nvar _fs;\n\nfunction _load_fs() {\n return _fs = _interopRequireDefault(__webpack_require__(3));\n}\n\nvar _glob;\n\nfunction _load_glob() {\n return _glob = _interopRequireDefault(__webpack_require__(75));\n}\n\nvar _os;\n\nfunction _load_os() {\n return _os = _interopRequireDefault(__webpack_require__(36));\n}\n\nvar _path;\n\nfunction _load_path() {\n return _path = _interopRequireDefault(__webpack_require__(0));\n}\n\nvar _blockingQueue;\n\nfunction _load_blockingQueue() {\n return _blockingQueue = _interopRequireDefault(__webpack_require__(84));\n}\n\nvar _promise;\n\nfunction _load_promise() {\n return _promise = _interopRequireWildcard(__webpack_require__(40));\n}\n\nvar _promise2;\n\nfunction _load_promise2() {\n return _promise2 = __webpack_require__(40);\n}\n\nvar _map;\n\nfunction _load_map() {\n return _map = _interopRequireDefault(__webpack_require__(20));\n}\n\nvar _fsNormalized;\n\nfunction _load_fsNormalized() {\n return _fsNormalized = __webpack_require__(164);\n}\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst constants = exports.constants = typeof (_fs || _load_fs()).default.constants !== 'undefined' ? (_fs || _load_fs()).default.constants : {\n R_OK: (_fs || _load_fs()).default.R_OK,\n W_OK: (_fs || _load_fs()).default.W_OK,\n X_OK: (_fs || _load_fs()).default.X_OK\n};\n\nconst lockQueue = exports.lockQueue = new (_blockingQueue || _load_blockingQueue()).default('fs lock');\n\nconst readFileBuffer = exports.readFileBuffer = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readFile);\nconst open = exports.open = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.open);\nconst writeFile = exports.writeFile = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.writeFile);\nconst readlink = exports.readlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readlink);\nconst realpath = exports.realpath = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.realpath);\nconst readdir = exports.readdir = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readdir);\nconst rename = exports.rename = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.rename);\nconst access = exports.access = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.access);\nconst stat = exports.stat = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.stat);\nconst mkdirp = exports.mkdirp = (0, (_promise2 || _load_promise2()).promisify)(__webpack_require__(116));\nconst exists = exports.exists = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.exists, true);\nconst lstat = exports.lstat = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.lstat);\nconst chmod = exports.chmod = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.chmod);\nconst link = exports.link = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.link);\nconst glob = exports.glob = (0, (_promise2 || _load_promise2()).promisify)((_glob || _load_glob()).default);\nexports.unlink = (_fsNormalized || _load_fsNormalized()).unlink;\n\n// fs.copyFile uses the native file copying instructions on the system, performing much better\n// than any JS-based solution and consumes fewer resources. Repeated testing to fine tune the\n// concurrency level revealed 128 as the sweet spot on a quad-core, 16 CPU Intel system with SSD.\n\nconst CONCURRENT_QUEUE_ITEMS = (_fs || _load_fs()).default.copyFile ? 128 : 4;\n\nconst fsSymlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.symlink);\nconst invariant = __webpack_require__(7);\nconst stripBOM = __webpack_require__(122);\n\nconst noop = () => {};\n\nfunction copy(src, dest, reporter) {\n return copyBulk([{ src, dest }], reporter);\n}\n\nfunction _readFile(loc, encoding) {\n return new Promise((resolve, reject) => {\n (_fs || _load_fs()).default.readFile(loc, encoding, function (err, content) {\n if (err) {\n reject(err);\n } else {\n resolve(content);\n }\n });\n });\n}\n\nfunction readFile(loc) {\n return _readFile(loc, 'utf8').then(normalizeOS);\n}\n\nfunction readFileRaw(loc) {\n return _readFile(loc, 'binary');\n}\n\nfunction normalizeOS(body) {\n return body.replace(/\\r\\n/g, '\\n');\n}\n\nconst cr = '\\r'.charCodeAt(0);\nconst lf = '\\n'.charCodeAt(0);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getPathKey = getPathKey;\nconst os = __webpack_require__(36);\nconst path = __webpack_require__(0);\nconst userHome = __webpack_require__(45).default;\n\nvar _require = __webpack_require__(171);\n\nconst getCacheDir = _require.getCacheDir,\n getConfigDir = _require.getConfigDir,\n getDataDir = _require.getDataDir;\n\nconst isWebpackBundle = __webpack_require__(227);\n\nconst DEPENDENCY_TYPES = exports.DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies', 'peerDependencies'];\nconst RESOLUTIONS = exports.RESOLUTIONS = 'resolutions';\nconst MANIFEST_FIELDS = exports.MANIFEST_FIELDS = [RESOLUTIONS, ...DEPENDENCY_TYPES];\n\nconst SUPPORTED_NODE_VERSIONS = exports.SUPPORTED_NODE_VERSIONS = '^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0';\n\nconst YARN_REGISTRY = exports.YARN_REGISTRY = 'https://registry.yarnpkg.com';\n\nconst YARN_DOCS = exports.YARN_DOCS = 'https://yarnpkg.com/en/docs/cli/';\nconst YARN_INSTALLER_SH = exports.YARN_INSTALLER_SH = 'https://yarnpkg.com/install.sh';\nconst YARN_INSTALLER_MSI = exports.YARN_INSTALLER_MSI = 'https://yarnpkg.com/latest.msi';\n\nconst SELF_UPDATE_VERSION_URL = exports.SELF_UPDATE_VERSION_URL = 'https://yarnpkg.com/latest-version';\n\n// cache version, bump whenever we make backwards incompatible changes\nconst CACHE_VERSION = exports.CACHE_VERSION = 2;\n\n// lockfile version, bump whenever we make backwards incompatible changes\nconst LOCKFILE_VERSION = exports.LOCKFILE_VERSION = 1;\n\n// max amount of network requests to perform concurrently\nconst NETWORK_CONCURRENCY = exports.NETWORK_CONCURRENCY = 8;\n\n// HTTP timeout used when downloading packages\nconst NETWORK_TIMEOUT = exports.NETWORK_TIMEOUT = 30 * 1000; // in milliseconds\n\n// max amount of child processes to execute concurrently\nconst CHILD_CONCURRENCY = exports.CHILD_CONCURRENCY = 5;\n\nconst REQUIRED_PACKAGE_KEYS = exports.REQUIRED_PACKAGE_KEYS = ['name', 'version', '_uid'];\n\nfunction getPreferredCacheDirectories() {\n const preferredCacheDirectories = [getCacheDir()];\n\n if (process.getuid) {\n // $FlowFixMe: process.getuid exists, dammit\n preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache-${process.getuid()}`));\n }\n\n preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache`));\n\n return preferredCacheDirectories;\n}\n\nconst PREFERRED_MODULE_CACHE_DIRECTORIES = exports.PREFERRED_MODULE_CACHE_DIRECTORIES = getPreferredCacheDirectories();\nconst CONFIG_DIRECTORY = exports.CONFIG_DIRECTORY = getConfigDir();\nconst DATA_DIRECTORY = exports.DATA_DIRECTORY = getDataDir();\nconst LINK_REGISTRY_DIRECTORY = exports.LINK_REGISTRY_DIRECTORY = path.join(DATA_DIRECTORY, 'link');\nconst GLOBAL_MODULE_DIRECTORY = exports.GLOBAL_MODULE_DIRECTORY = path.join(DATA_DIRECTORY, 'global');\n\nconst NODE_BIN_PATH = exports.NODE_BIN_PATH = process.execPath;\nconst YARN_BIN_PATH = exports.YARN_BIN_PATH = getYarnBinPath();\n\n// Webpack needs to be configured with node.__dirname/__filename = false\nfunction getYarnBinPath() {\n if (isWebpackBundle) {\n return __filename;\n } else {\n return path.join(__dirname, '..', 'bin', 'yarn.js');\n }\n}\n\nconst NODE_MODULES_FOLDER = exports.NODE_MODULES_FOLDER = 'node_modules';\nconst NODE_PACKAGE_JSON = exports.NODE_PACKAGE_JSON = 'package.json';\n\nconst POSIX_GLOBAL_PREFIX = exports.POSIX_GLOBAL_PREFIX = `${process.env.DESTDIR || ''}/usr/local`;\nconst FALLBACK_GLOBAL_PREFIX = exports.FALLBACK_GLOBAL_PREFIX = path.join(userHome, '.yarn');\n\nconst META_FOLDER = exports.META_FOLDER = '.yarn-meta';\nconst INTEGRITY_FILENAME = exports.INTEGRITY_FILENAME = '.yarn-integrity';\nconst LOCKFILE_FILENAME = exports.LOCKFILE_FILENAME = 'yarn.lock';\nconst METADATA_FILENAME = exports.METADATA_FILENAME = '.yarn-metadata.json';\nconst TARBALL_FILENAME = exports.TARBALL_FILENAME = '.yarn-tarball.tgz';\nconst CLEAN_FILENAME = exports.CLEAN_FILENAME = '.yarnclean';\n\nconst NPM_LOCK_FILENAME = exports.NPM_LOCK_FILENAME = 'package-lock.json';\nconst NPM_SHRINKWRAP_FILENAME = exports.NPM_SHRINKWRAP_FILENAME = 'npm-shrinkwrap.json';\n\nconst DEFAULT_INDENT = exports.DEFAULT_INDENT = ' ';\nconst SINGLE_INSTANCE_PORT = exports.SINGLE_INSTANCE_PORT = 31997;\nconst SINGLE_INSTANCE_FILENAME = exports.SINGLE_INSTANCE_FILENAME = '.yarn-single-instance';\n\nconst ENV_PATH_KEY = exports.ENV_PATH_KEY = getPathKey(process.platform, process.env);\n\nfunction getPathKey(platform, env) {\n let pathKey = 'PATH';\n\n // windows calls its path \"Path\" usually, but this is not guaranteed.\n if (platform === 'win32') {\n pathKey = 'Path';\n\n for (const key in env) {\n if (key.toLowerCase() === 'path') {\n pathKey = key;\n }\n }\n }\n\n return pathKey;\n}\n\nconst VERSION_COLOR_SCHEME = exports.VERSION_COLOR_SCHEME = {\n major: 'red',\n premajor: 'red',\n minor: 'yellow',\n preminor: 'yellow',\n patch: 'green',\n prepatch: 'green',\n prerelease: 'red',\n unchanged: 'white',\n unknown: 'red'\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n\n\n/***/ }),\n/* 8 */,\n/* 9 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"crypto\");\n\n/***/ }),\n/* 10 */,\n/* 11 */\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sortAlpha = sortAlpha;\nexports.entries = entries;\nexports.removePrefix = removePrefix;\nexports.removeSuffix = removeSuffix;\nexports.addSuffix = addSuffix;\nexports.hyphenate = hyphenate;\nexports.camelCase = camelCase;\nexports.compareSortedArrays = compareSortedArrays;\nexports.sleep = sleep;\nconst _camelCase = __webpack_require__(176);\n\nfunction sortAlpha(a, b) {\n // sort alphabetically in a deterministic way\n const shortLen = Math.min(a.length, b.length);\n for (let i = 0; i < shortLen; i++) {\n const aChar = a.charCodeAt(i);\n const bChar = b.charCodeAt(i);\n if (aChar !== bChar) {\n return aChar - bChar;\n }\n }\n return a.length - b.length;\n}\n\nfunction entries(obj) {\n const entries = [];\n if (obj) {\n for (const key in obj) {\n entries.push([key, obj[key]]);\n }\n }\n return entries;\n}\n\nfunction removePrefix(pattern, prefix) {\n if (pattern.startsWith(prefix)) {\n pattern = pattern.slice(prefix.length);\n }\n\n return pattern;\n}\n\nfunction removeSuffix(pattern, suffix) {\n if (pattern.endsWith(suffix)) {\n return pattern.slice(0, -suffix.length);\n }\n\n return pattern;\n}\n\nfunction addSuffix(pattern, suffix) {\n if (!pattern.endsWith(suffix)) {\n return pattern + suffix;\n }\n\n return pattern;\n}\n\nfunction hyphenate(str) {\n return str.replace(/[A-Z]/g, match => {\n return '-' + match.charAt(0).toLowerCase();\n });\n}\n\nfunction camelCase(str) {\n if (/[A-Z]/.test(str)) {\n return null;\n } else {\n return _camelCase(str);\n }\n}\n\nfunction compareSortedArrays(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = 0, len = array1.length; i < len; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction sleep(ms) {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(107)('wks');\nvar uid = __webpack_require__(111);\nvar Symbol = __webpack_require__(11).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.stringify = exports.parse = undefined;\n\nvar _asyncToGenerator2;\n\nfunction _load_asyncToGenerator() {\n return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1));\n}\n\nvar _parse;\n\nfunction _load_parse() {\n return _parse = __webpack_require__(81);\n}\n\nObject.defineProperty(exports, 'parse', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_parse || _load_parse()).default;\n }\n});\n\nvar _stringify;\n\nfunction _load_stringify() {\n return _stringify = __webpack_require__(150);\n}\n\nObject.defineProperty(exports, 'stringify', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_stringify || _load_stringify()).default;\n }\n});\nexports.implodeEntry = implodeEntry;\nexports.explodeEntry = explodeEntry;\n\nvar _misc;\n\nfunction _load_misc() {\n return _misc = __webpack_require__(12);\n}\n\nvar _normalizePattern;\n\nfunction _load_normalizePattern() {\n return _normalizePattern = __webpack_require__(29);\n}\n\nvar _parse2;\n\nfunction _load_parse2() {\n return _parse2 = _interopRequireDefault(__webpack_require__(81));\n}\n\nvar _constants;\n\nfunction _load_constants() {\n return _constants = __webpack_require__(6);\n}\n\nvar _fs;\n\nfunction _load_fs() {\n return _fs = _interopRequireWildcard(__webpack_require__(5));\n}\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst invariant = __webpack_require__(7);\n\nconst path = __webpack_require__(0);\nconst ssri = __webpack_require__(55);\n\nfunction getName(pattern) {\n return (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(pattern).name;\n}\n\nfunction blankObjectUndefined(obj) {\n return obj && Object.keys(obj).length ? obj : undefined;\n}\n\nfunction keyForRemote(remote) {\n return remote.resolved || (remote.reference && remote.hash ? `${remote.reference}#${remote.hash}` : null);\n}\n\nfunction serializeIntegrity(integrity) {\n // We need this because `Integrity.toString()` does not use sorting to ensure a stable string output\n // See https://git.io/vx2Hy\n return integrity.toString().split(' ').sort().join(' ');\n}\n\nfunction implodeEntry(pattern, obj) {\n const inferredName = getName(pattern);\n const integrity = obj.integrity ? serializeIntegrity(obj.integrity) : '';\n const imploded = {\n name: inferredName === obj.name ? undefined : obj.name,\n version: obj.version,\n uid: obj.uid === obj.version ? undefined : obj.uid,\n resolved: obj.resolved,\n registry: obj.registry === 'npm' ? undefined : obj.registry,\n dependencies: blankObjectUndefined(obj.dependencies),\n optionalDependencies: blankObjectUndefined(obj.optionalDependencies),\n permissions: blankObjectUndefined(obj.permissions),\n prebuiltVariants: blankObjectUndefined(obj.prebuiltVariants)\n };\n if (integrity) {\n imploded.integrity = integrity;\n }\n return imploded;\n}\n\nfunction explodeEntry(pattern, obj) {\n obj.optionalDependencies = obj.optionalDependencies || {};\n obj.dependencies = obj.dependencies || {};\n obj.uid = obj.uid || obj.version;\n obj.permissions = obj.permissions || {};\n obj.registry = obj.registry || 'npm';\n obj.name = obj.name || getName(pattern);\n const integrity = obj.integrity;\n if (integrity && integrity.isIntegrity) {\n obj.integrity = ssri.parse(integrity);\n }\n return obj;\n}\n\nclass Lockfile {\n constructor({ cache, source, parseResultType } = {}) {\n this.source = source || '';\n this.cache = cache;\n this.parseResultType = parseResultType;\n }\n\n // source string if the `cache` was parsed\n\n\n // if true, we're parsing an old yarn file and need to update integrity fields\n hasEntriesExistWithoutIntegrity() {\n if (!this.cache) {\n return false;\n }\n\n for (const key in this.cache) {\n // $FlowFixMe - `this.cache` is clearly defined at this point\n if (!/^.*@(file:|http)/.test(key) && this.cache[key] && !this.cache[key].integrity) {\n return true;\n }\n }\n\n return false;\n }\n\n static fromDirectory(dir, reporter) {\n return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {\n // read the manifest in this directory\n const lockfileLoc = path.join(dir, (_constants || _load_constants()).LOCKFILE_FILENAME);\n\n let lockfile;\n let rawLockfile = '';\n let parseResult;\n\n if (yield (_fs || _load_fs()).exists(lockfileLoc)) {\n rawLockfile = yield (_fs || _load_fs()).readFile(lockfileLoc);\n parseResult = (0, (_parse2 || _load_parse2()).default)(rawLockfile, lockfileLoc);\n\n if (reporter) {\n if (parseResult.type === 'merge') {\n reporter.info(reporter.lang('lockfileMerged'));\n } else if (parseResult.type === 'conflict') {\n reporter.warn(reporter.lang('lockfileConflict'));\n }\n }\n\n lockfile = parseResult.object;\n } else if (reporter) {\n reporter.info(reporter.lang('noLockfileFound'));\n }\n\n return new Lockfile({ cache: lockfile, source: rawLockfile, parseResultType: parseResult && parseResult.type });\n })();\n }\n\n getLocked(pattern) {\n const cache = this.cache;\n if (!cache) {\n return undefined;\n }\n\n const shrunk = pattern in cache && cache[pattern];\n\n if (typeof shrunk === 'string') {\n return this.getLocked(shrunk);\n } else if (shrunk) {\n explodeEntry(pattern, shrunk);\n return shrunk;\n }\n\n return undefined;\n }\n\n removePattern(pattern) {\n const cache = this.cache;\n if (!cache) {\n return;\n }\n delete cache[pattern];\n }\n\n getLockfile(patterns) {\n const lockfile = {};\n const seen = new Map();\n\n // order by name so that lockfile manifest is assigned to the first dependency with this manifest\n // the others that have the same remoteKey will just refer to the first\n // ordering allows for consistency in lockfile when it is serialized\n const sortedPatternsKeys = Object.keys(patterns).sort((_misc || _load_misc()).sortAlpha);\n\n for (var _iterator = sortedPatternsKeys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n const pattern = _ref;\n\n const pkg = patterns[pattern];\n const remote = pkg._remote,\n ref = pkg._reference;\n\n invariant(ref, 'Package is missing a reference');\n invariant(remote, 'Package is missing a remote');\n\n const remoteKey = keyForRemote(remote);\n const seenPattern = remoteKey && seen.get(remoteKey);\n if (seenPattern) {\n // no point in duplicating it\n lockfile[pattern] = seenPattern;\n\n // if we're relying on our name being inferred and two of the patterns have\n // different inferred names then we need to set it\n if (!seenPattern.name && getName(pattern) !== pkg.name) {\n seenPattern.name = pkg.name;\n }\n continue;\n }\n const obj = implodeEntry(pattern, {\n name: pkg.name,\n version: pkg.version,\n uid: pkg._uid,\n resolved: remote.resolved,\n integrity: remote.integrity,\n registry: remote.registry,\n dependencies: pkg.dependencies,\n peerDependencies: pkg.peerDependencies,\n optionalDependencies: pkg.optionalDependencies,\n permissions: ref.permissions,\n prebuiltVariants: pkg.prebuiltVariants\n });\n\n lockfile[pattern] = obj;\n\n if (remoteKey) {\n seen.set(remoteKey, obj);\n }\n }\n\n return lockfile;\n }\n}\nexports.default = Lockfile;\n\n/***/ }),\n/* 15 */,\n/* 16 */,\n/* 17 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"stream\");\n\n/***/ }),\n/* 18 */,\n/* 19 */,\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = nullify;\nfunction nullify(obj = {}) {\n if (Array.isArray(obj)) {\n for (var _iterator = obj, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n const item = _ref;\n\n nullify(item);\n }\n } else if (obj !== null && typeof obj === 'object' || typeof obj === 'function') {\n Object.setPrototypeOf(obj, null);\n\n // for..in can only be applied to 'object', not 'function'\n if (typeof obj === 'object') {\n for (const key in obj) {\n nullify(obj[key]);\n }\n }\n }\n\n return obj;\n}\n\n/***/ }),\n/* 21 */,\n/* 22 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"assert\");\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n/* 24 */,\n/* 25 */,\n/* 26 */,\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(34);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n/***/ }),\n/* 28 */,\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.normalizePattern = normalizePattern;\n\n/**\n * Explode and normalize a pattern into its name and range.\n */\n\nfunction normalizePattern(pattern) {\n let hasVersion = false;\n let range = 'latest';\n let name = pattern;\n\n // if we're a scope then remove the @ and add it back later\n let isScoped = false;\n if (name[0] === '@') {\n isScoped = true;\n name = name.slice(1);\n }\n\n // take first part as the name\n const parts = name.split('@');\n if (parts.length > 1) {\n name = parts.shift();\n range = parts.join('@');\n\n if (range) {\n hasVersion = true;\n } else {\n range = '*';\n }\n }\n\n // add back @ scope suffix\n if (isScoped) {\n name = `@${name}`;\n }\n\n return { name, range, hasVersion };\n}\n\n/***/ }),\n/* 30 */,\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(50);\nvar createDesc = __webpack_require__(106);\nmodule.exports = __webpack_require__(33) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(63)\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(85)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"os\");\n\n/***/ }),\n/* 37 */,\n/* 38 */,\n/* 39 */,\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.wait = wait;\nexports.promisify = promisify;\nexports.queue = queue;\nfunction wait(delay) {\n return new Promise(resolve => {\n setTimeout(resolve, delay);\n });\n}\n\nfunction promisify(fn, firstData) {\n return function (...args) {\n return new Promise(function (resolve, reject) {\n args.push(function (err, ...result) {\n let res = result;\n\n if (result.length <= 1) {\n res = result[0];\n }\n\n if (firstData) {\n res = err;\n err = null;\n }\n\n if (err) {\n reject(err);\n } else {\n resolve(res);\n }\n });\n\n fn.apply(null, args);\n });\n };\n}\n\nfunction queue(arr, promiseProducer, concurrency = Infinity) {\n concurrency = Math.min(concurrency, arr.length);\n\n // clone\n arr = arr.slice();\n\n const results = [];\n let total = arr.length;\n if (!total) {\n return Promise.resolve(results);\n }\n\n return new Promise((resolve, reject) => {\n for (let i = 0; i < concurrency; i++) {\n next();\n }\n\n function next() {\n const item = arr.shift();\n const promise = promiseProducer(item);\n\n promise.then(function (result) {\n results.push(result);\n\n total--;\n if (total === 0) {\n resolve(results);\n } else {\n if (arr.length) {\n next();\n }\n }\n }, reject);\n }\n });\n}\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(11);\nvar core = __webpack_require__(23);\nvar ctx = __webpack_require__(48);\nvar hide = __webpack_require__(31);\nvar has = __webpack_require__(49);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\ntry {\n var util = __webpack_require__(2);\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n module.exports = __webpack_require__(224);\n}\n\n\n/***/ }),\n/* 43 */,\n/* 44 */,\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.home = undefined;\n\nvar _rootUser;\n\nfunction _load_rootUser() {\n return _rootUser = _interopRequireDefault(__webpack_require__(169));\n}\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst path = __webpack_require__(0);\n\nconst home = exports.home = __webpack_require__(36).homedir();\n\nconst userHomeDir = (_rootUser || _load_rootUser()).default ? path.resolve('/usr/local/share') : home;\n\nexports.default = userHomeDir;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(46);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(27);\nvar IE8_DOM_DEFINE = __webpack_require__(184);\nvar toPrimitive = __webpack_require__(201);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(33) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n/* 51 */,\n/* 52 */,\n/* 53 */,\n/* 54 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"events\");\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst Buffer = __webpack_require__(32).Buffer\n\nconst crypto = __webpack_require__(9)\nconst Transform = __webpack_require__(17).Transform\n\nconst SPEC_ALGORITHMS = ['sha256', 'sha384', 'sha512']\n\nconst BASE64_REGEX = /^[a-z0-9+/]+(?:=?=?)$/i\nconst SRI_REGEX = /^([^-]+)-([^?]+)([?\\S*]*)$/\nconst STRICT_SRI_REGEX = /^([^-]+)-([A-Za-z0-9+/=]{44,88})(\\?[\\x21-\\x7E]*)*$/\nconst VCHAR_REGEX = /^[\\x21-\\x7E]+$/\n\nclass Hash {\n get isHash () { return true }\n constructor (hash, opts) {\n const strict = !!(opts && opts.strict)\n this.source = hash.trim()\n // 3.1. Integrity metadata (called \"Hash\" by ssri)\n // https://w3c.github.io/webappsec-subresource-integrity/#integrity-metadata-description\n const match = this.source.match(\n strict\n ? STRICT_SRI_REGEX\n : SRI_REGEX\n )\n if (!match) { return }\n if (strict && !SPEC_ALGORITHMS.some(a => a === match[1])) { return }\n this.algorithm = match[1]\n this.digest = match[2]\n\n const rawOpts = match[3]\n this.options = rawOpts ? rawOpts.slice(1).split('?') : []\n }\n hexDigest () {\n return this.digest && Buffer.from(this.digest, 'base64').toString('hex')\n }\n toJSON () {\n return this.toString()\n }\n toString (opts) {\n if (opts && opts.strict) {\n // Strict mode enforces the standard as close to the foot of the\n // letter as it can.\n if (!(\n // The spec has very restricted productions for algorithms.\n // https://www.w3.org/TR/CSP2/#source-list-syntax\n SPEC_ALGORITHMS.some(x => x === this.algorithm) &&\n // Usually, if someone insists on using a \"different\" base64, we\n // leave it as-is, since there's multiple standards, and the\n // specified is not a URL-safe variant.\n // https://www.w3.org/TR/CSP2/#base64_value\n this.digest.match(BASE64_REGEX) &&\n // Option syntax is strictly visual chars.\n // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-option-expression\n // https://tools.ietf.org/html/rfc5234#appendix-B.1\n (this.options || []).every(opt => opt.match(VCHAR_REGEX))\n )) {\n return ''\n }\n }\n const options = this.options && this.options.length\n ? `?${this.options.join('?')}`\n : ''\n return `${this.algorithm}-${this.digest}${options}`\n }\n}\n\nclass Integrity {\n get isIntegrity () { return true }\n toJSON () {\n return this.toString()\n }\n toString (opts) {\n opts = opts || {}\n let sep = opts.sep || ' '\n if (opts.strict) {\n // Entries must be separated by whitespace, according to spec.\n sep = sep.replace(/\\S+/g, ' ')\n }\n return Object.keys(this).map(k => {\n return this[k].map(hash => {\n return Hash.prototype.toString.call(hash, opts)\n }).filter(x => x.length).join(sep)\n }).filter(x => x.length).join(sep)\n }\n concat (integrity, opts) {\n const other = typeof integrity === 'string'\n ? integrity\n : stringify(integrity, opts)\n return parse(`${this.toString(opts)} ${other}`, opts)\n }\n hexDigest () {\n return parse(this, {single: true}).hexDigest()\n }\n match (integrity, opts) {\n const other = parse(integrity, opts)\n const algo = other.pickAlgorithm(opts)\n return (\n this[algo] &&\n other[algo] &&\n this[algo].find(hash =>\n other[algo].find(otherhash =>\n hash.digest === otherhash.digest\n )\n )\n ) || false\n }\n pickAlgorithm (opts) {\n const pickAlgorithm = (opts && opts.pickAlgorithm) || getPrioritizedHash\n const keys = Object.keys(this)\n if (!keys.length) {\n throw new Error(`No algorithms available for ${\n JSON.stringify(this.toString())\n }`)\n }\n return keys.reduce((acc, algo) => {\n return pickAlgorithm(acc, algo) || acc\n })\n }\n}\n\nmodule.exports.parse = parse\nfunction parse (sri, opts) {\n opts = opts || {}\n if (typeof sri === 'string') {\n return _parse(sri, opts)\n } else if (sri.algorithm && sri.digest) {\n const fullSri = new Integrity()\n fullSri[sri.algorithm] = [sri]\n return _parse(stringify(fullSri, opts), opts)\n } else {\n return _parse(stringify(sri, opts), opts)\n }\n}\n\nfunction _parse (integrity, opts) {\n // 3.4.3. Parse metadata\n // https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata\n if (opts.single) {\n return new Hash(integrity, opts)\n }\n return integrity.trim().split(/\\s+/).reduce((acc, string) => {\n const hash = new Hash(string, opts)\n if (hash.algorithm && hash.digest) {\n const algo = hash.algorithm\n if (!acc[algo]) { acc[algo] = [] }\n acc[algo].push(hash)\n }\n return acc\n }, new Integrity())\n}\n\nmodule.exports.stringify = stringify\nfunction stringify (obj, opts) {\n if (obj.algorithm && obj.digest) {\n return Hash.prototype.toString.call(obj, opts)\n } else if (typeof obj === 'string') {\n return stringify(parse(obj, opts), opts)\n } else {\n return Integrity.prototype.toString.call(obj, opts)\n }\n}\n\nmodule.exports.fromHex = fromHex\nfunction fromHex (hexDigest, algorithm, opts) {\n const optString = (opts && opts.options && opts.options.length)\n ? `?${opts.options.join('?')}`\n : ''\n return parse(\n `${algorithm}-${\n Buffer.from(hexDigest, 'hex').toString('base64')\n }${optString}`, opts\n )\n}\n\nmodule.exports.fromData = fromData\nfunction fromData (data, opts) {\n opts = opts || {}\n const algorithms = opts.algorithms || ['sha512']\n const optString = opts.options && opts.options.length\n ? `?${opts.options.join('?')}`\n : ''\n return algorithms.reduce((acc, algo) => {\n const digest = crypto.createHash(algo).update(data).digest('base64')\n const hash = new Hash(\n `${algo}-${digest}${optString}`,\n opts\n )\n if (hash.algorithm && hash.digest) {\n const algo = hash.algorithm\n if (!acc[algo]) { acc[algo] = [] }\n acc[algo].push(hash)\n }\n return acc\n }, new Integrity())\n}\n\nmodule.exports.fromStream = fromStream\nfunction fromStream (stream, opts) {\n opts = opts || {}\n const P = opts.Promise || Promise\n const istream = integrityStream(opts)\n return new P((resolve, reject) => {\n stream.pipe(istream)\n stream.on('error', reject)\n istream.on('error', reject)\n let sri\n istream.on('integrity', s => { sri = s })\n istream.on('end', () => resolve(sri))\n istream.on('data', () => {})\n })\n}\n\nmodule.exports.checkData = checkData\nfunction checkData (data, sri, opts) {\n opts = opts || {}\n sri = parse(sri, opts)\n if (!Object.keys(sri).length) {\n if (opts.error) {\n throw Object.assign(\n new Error('No valid integrity hashes to check against'), {\n code: 'EINTEGRITY'\n }\n )\n } else {\n return false\n }\n }\n const algorithm = sri.pickAlgorithm(opts)\n const digest = crypto.createHash(algorithm).update(data).digest('base64')\n const newSri = parse({algorithm, digest})\n const match = newSri.match(sri, opts)\n if (match || !opts.error) {\n return match\n } else if (typeof opts.size === 'number' && (data.length !== opts.size)) {\n const err = new Error(`data size mismatch when checking ${sri}.\\n Wanted: ${opts.size}\\n Found: ${data.length}`)\n err.code = 'EBADSIZE'\n err.found = data.length\n err.expected = opts.size\n err.sri = sri\n throw err\n } else {\n const err = new Error(`Integrity checksum failed when using ${algorithm}: Wanted ${sri}, but got ${newSri}. (${data.length} bytes)`)\n err.code = 'EINTEGRITY'\n err.found = newSri\n err.expected = sri\n err.algorithm = algorithm\n err.sri = sri\n throw err\n }\n}\n\nmodule.exports.checkStream = checkStream\nfunction checkStream (stream, sri, opts) {\n opts = opts || {}\n const P = opts.Promise || Promise\n const checker = integrityStream(Object.assign({}, opts, {\n integrity: sri\n }))\n return new P((resolve, reject) => {\n stream.pipe(checker)\n stream.on('error', reject)\n checker.on('error', reject)\n let sri\n checker.on('verified', s => { sri = s })\n checker.on('end', () => resolve(sri))\n checker.on('data', () => {})\n })\n}\n\nmodule.exports.integrityStream = integrityStream\nfunction integrityStream (opts) {\n opts = opts || {}\n // For verification\n const sri = opts.integrity && parse(opts.integrity, opts)\n const goodSri = sri && Object.keys(sri).length\n const algorithm = goodSri && sri.pickAlgorithm(opts)\n const digests = goodSri && sri[algorithm]\n // Calculating stream\n const algorithms = Array.from(\n new Set(\n (opts.algorithms || ['sha512'])\n .concat(algorithm ? [algorithm] : [])\n )\n )\n const hashes = algorithms.map(crypto.createHash)\n let streamSize = 0\n const stream = new Transform({\n transform (chunk, enc, cb) {\n streamSize += chunk.length\n hashes.forEach(h => h.update(chunk, enc))\n cb(null, chunk, enc)\n }\n }).on('end', () => {\n const optString = (opts.options && opts.options.length)\n ? `?${opts.options.join('?')}`\n : ''\n const newSri = parse(hashes.map((h, i) => {\n return `${algorithms[i]}-${h.digest('base64')}${optString}`\n }).join(' '), opts)\n // Integrity verification mode\n const match = goodSri && newSri.match(sri, opts)\n if (typeof opts.size === 'number' && streamSize !== opts.size) {\n const err = new Error(`stream size mismatch when checking ${sri}.\\n Wanted: ${opts.size}\\n Found: ${streamSize}`)\n err.code = 'EBADSIZE'\n err.found = streamSize\n err.expected = opts.size\n err.sri = sri\n stream.emit('error', err)\n } else if (opts.integrity && !match) {\n const err = new Error(`${sri} integrity checksum failed when using ${algorithm}: wanted ${digests} but got ${newSri}. (${streamSize} bytes)`)\n err.code = 'EINTEGRITY'\n err.found = newSri\n err.expected = digests\n err.algorithm = algorithm\n err.sri = sri\n stream.emit('error', err)\n } else {\n stream.emit('size', streamSize)\n stream.emit('integrity', newSri)\n match && stream.emit('verified', match)\n }\n })\n return stream\n}\n\nmodule.exports.create = createIntegrity\nfunction createIntegrity (opts) {\n opts = opts || {}\n const algorithms = opts.algorithms || ['sha512']\n const optString = opts.options && opts.options.length\n ? `?${opts.options.join('?')}`\n : ''\n\n const hashes = algorithms.map(crypto.createHash)\n\n return {\n update: function (chunk, enc) {\n hashes.forEach(h => h.update(chunk, enc))\n return this\n },\n digest: function (enc) {\n const integrity = algorithms.reduce((acc, algo) => {\n const digest = hashes.shift().digest('base64')\n const hash = new Hash(\n `${algo}-${digest}${optString}`,\n opts\n )\n if (hash.algorithm && hash.digest) {\n const algo = hash.algorithm\n if (!acc[algo]) { acc[algo] = [] }\n acc[algo].push(hash)\n }\n return acc\n }, new Integrity())\n\n return integrity\n }\n }\n}\n\nconst NODE_HASHES = new Set(crypto.getHashes())\n\n// This is a Best Effort™ at a reasonable priority for hash algos\nconst DEFAULT_PRIORITY = [\n 'md5', 'whirlpool', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512',\n // TODO - it's unclear _which_ of these Node will actually use as its name\n // for the algorithm, so we guesswork it based on the OpenSSL names.\n 'sha3',\n 'sha3-256', 'sha3-384', 'sha3-512',\n 'sha3_256', 'sha3_384', 'sha3_512'\n].filter(algo => NODE_HASHES.has(algo))\n\nfunction getPrioritizedHash (algo1, algo2) {\n return DEFAULT_PRIORITY.indexOf(algo1.toLowerCase()) >= DEFAULT_PRIORITY.indexOf(algo2.toLowerCase())\n ? algo1\n : algo2\n}\n\n\n/***/ }),\n/* 56 */,\n/* 57 */,\n/* 58 */,\n/* 59 */,\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = { sep: '/' }\ntry {\n path = __webpack_require__(0)\n} catch (er) {}\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = __webpack_require__(175)\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n a = a || {}\n b = b || {}\n var t = {}\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return minimatch\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig.minimatch(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return Minimatch\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n // \"\" only matches \"\"\n if (pattern.trim() === '') return p === ''\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n // don't do it more than once.\n if (this._made) return\n\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = console.error\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n if (typeof pattern === 'undefined') {\n throw new TypeError('undefined pattern')\n }\n\n if (options.nobrace ||\n !pattern.match(/\\{.*\\}/)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n if (pattern.length > 1024 * 64) {\n throw new TypeError('pattern is too long')\n }\n\n var options = this.options\n\n // shortcuts\n if (!options.noglobstar && pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n case '/':\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n if (inClass) {\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '.':\n case '[':\n case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = match\nfunction match (f, partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n if (options.nocase) {\n hit = f.toLowerCase() === p.toLowerCase()\n } else {\n hit = f === p\n }\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')\n return emptyFileEnd\n }\n\n // should be unreachable.\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wrappy = __webpack_require__(123)\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n\n\n/***/ }),\n/* 62 */,\n/* 63 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"buffer\");\n\n/***/ }),\n/* 64 */,\n/* 65 */,\n/* 66 */,\n/* 67 */\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(34);\nvar document = __webpack_require__(11).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports) {\n\nmodule.exports = true;\n\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(46);\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(50).f;\nvar has = __webpack_require__(49);\nvar TAG = __webpack_require__(13)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(107)('keys');\nvar uid = __webpack_require__(111);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(131);\nvar defined = __webpack_require__(67);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Approach:\n//\n// 1. Get the minimatch set\n// 2. For each pattern in the set, PROCESS(pattern, false)\n// 3. Store matches per-set, then uniq them\n//\n// PROCESS(pattern, inGlobStar)\n// Get the first [n] items from pattern that are all strings\n// Join these together. This is PREFIX.\n// If there is no more remaining, then stat(PREFIX) and\n// add to matches if it succeeds. END.\n//\n// If inGlobStar and PREFIX is symlink and points to dir\n// set ENTRIES = []\n// else readdir(PREFIX) as ENTRIES\n// If fail, END\n//\n// with ENTRIES\n// If pattern[n] is GLOBSTAR\n// // handle the case where the globstar match is empty\n// // by pruning it out, and testing the resulting pattern\n// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n// // handle other cases.\n// for ENTRY in ENTRIES (not dotfiles)\n// // attach globstar + tail onto the entry\n// // Mark that this entry is a globstar match\n// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n//\n// else // not globstar\n// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n// Test ENTRY against pattern[n]\n// If fails, continue\n// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n//\n// Caveat:\n// Cache all stats and readdirs results to minimize syscall. Since all\n// we ever care about is existence and directory-ness, we can just keep\n// `true` for files, and [children,...] for directories, or `false` for\n// things that don't exist.\n\nmodule.exports = glob\n\nvar fs = __webpack_require__(3)\nvar rp = __webpack_require__(114)\nvar minimatch = __webpack_require__(60)\nvar Minimatch = minimatch.Minimatch\nvar inherits = __webpack_require__(42)\nvar EE = __webpack_require__(54).EventEmitter\nvar path = __webpack_require__(0)\nvar assert = __webpack_require__(22)\nvar isAbsolute = __webpack_require__(76)\nvar globSync = __webpack_require__(218)\nvar common = __webpack_require__(115)\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar inflight = __webpack_require__(223)\nvar util = __webpack_require__(2)\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nvar once = __webpack_require__(61)\n\nfunction glob (pattern, options, cb) {\n if (typeof options === 'function') cb = options, options = {}\n if (!options) options = {}\n\n if (options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return globSync(pattern, options)\n }\n\n return new Glob(pattern, options, cb)\n}\n\nglob.sync = globSync\nvar GlobSync = glob.GlobSync = globSync.GlobSync\n\n// old api surface\nglob.glob = glob\n\nfunction extend (origin, add) {\n if (add === null || typeof add !== 'object') {\n return origin\n }\n\n var keys = Object.keys(add)\n var i = keys.length\n while (i--) {\n origin[keys[i]] = add[keys[i]]\n }\n return origin\n}\n\nglob.hasMagic = function (pattern, options_) {\n var options = extend({}, options_)\n options.noprocess = true\n\n var g = new Glob(pattern, options)\n var set = g.minimatch.set\n\n if (!pattern)\n return false\n\n if (set.length > 1)\n return true\n\n for (var j = 0; j < set[0].length; j++) {\n if (typeof set[0][j] !== 'string')\n return true\n }\n\n return false\n}\n\nglob.Glob = Glob\ninherits(Glob, EE)\nfunction Glob (pattern, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n\n if (options && options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return new GlobSync(pattern, options)\n }\n\n if (!(this instanceof Glob))\n return new Glob(pattern, options, cb)\n\n setopts(this, pattern, options)\n this._didRealPath = false\n\n // process each pattern in the minimatch set\n var n = this.minimatch.set.length\n\n // The matches are stored as {: true,...} so that\n // duplicates are automagically pruned.\n // Later, we do an Object.keys() on these.\n // Keep them as a list so we can fill in when nonull is set.\n this.matches = new Array(n)\n\n if (typeof cb === 'function') {\n cb = once(cb)\n this.on('error', cb)\n this.on('end', function (matches) {\n cb(null, matches)\n })\n }\n\n var self = this\n this._processing = 0\n\n this._emitQueue = []\n this._processQueue = []\n this.paused = false\n\n if (this.noprocess)\n return this\n\n if (n === 0)\n return done()\n\n var sync = true\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false, done)\n }\n sync = false\n\n function done () {\n --self._processing\n if (self._processing <= 0) {\n if (sync) {\n process.nextTick(function () {\n self._finish()\n })\n } else {\n self._finish()\n }\n }\n }\n}\n\nGlob.prototype._finish = function () {\n assert(this instanceof Glob)\n if (this.aborted)\n return\n\n if (this.realpath && !this._didRealpath)\n return this._realpath()\n\n common.finish(this)\n this.emit('end', this.found)\n}\n\nGlob.prototype._realpath = function () {\n if (this._didRealpath)\n return\n\n this._didRealpath = true\n\n var n = this.matches.length\n if (n === 0)\n return this._finish()\n\n var self = this\n for (var i = 0; i < this.matches.length; i++)\n this._realpathSet(i, next)\n\n function next () {\n if (--n === 0)\n self._finish()\n }\n}\n\nGlob.prototype._realpathSet = function (index, cb) {\n var matchset = this.matches[index]\n if (!matchset)\n return cb()\n\n var found = Object.keys(matchset)\n var self = this\n var n = found.length\n\n if (n === 0)\n return cb()\n\n var set = this.matches[index] = Object.create(null)\n found.forEach(function (p, i) {\n // If there's a problem with the stat, then it means that\n // one or more of the links in the realpath couldn't be\n // resolved. just return the abs value in that case.\n p = self._makeAbs(p)\n rp.realpath(p, self.realpathCache, function (er, real) {\n if (!er)\n set[real] = true\n else if (er.syscall === 'stat')\n set[p] = true\n else\n self.emit('error', er) // srsly wtf right here\n\n if (--n === 0) {\n self.matches[index] = set\n cb()\n }\n })\n })\n}\n\nGlob.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlob.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n\nGlob.prototype.abort = function () {\n this.aborted = true\n this.emit('abort')\n}\n\nGlob.prototype.pause = function () {\n if (!this.paused) {\n this.paused = true\n this.emit('pause')\n }\n}\n\nGlob.prototype.resume = function () {\n if (this.paused) {\n this.emit('resume')\n this.paused = false\n if (this._emitQueue.length) {\n var eq = this._emitQueue.slice(0)\n this._emitQueue.length = 0\n for (var i = 0; i < eq.length; i ++) {\n var e = eq[i]\n this._emitMatch(e[0], e[1])\n }\n }\n if (this._processQueue.length) {\n var pq = this._processQueue.slice(0)\n this._processQueue.length = 0\n for (var i = 0; i < pq.length; i ++) {\n var p = pq[i]\n this._processing--\n this._process(p[0], p[1], p[2], p[3])\n }\n }\n }\n}\n\nGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n assert(this instanceof Glob)\n assert(typeof cb === 'function')\n\n if (this.aborted)\n return\n\n this._processing++\n if (this.paused) {\n this._processQueue.push([pattern, index, inGlobStar, cb])\n return\n }\n\n //console.error('PROCESS %d', this._processing, pattern)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // see if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index, cb)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip _processing\n if (childrenIgnored(this, read))\n return cb()\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)\n}\n\nGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\nGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return cb()\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return cb()\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return cb()\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n this._process([e].concat(remain), index, inGlobStar, cb)\n }\n cb()\n}\n\nGlob.prototype._emitMatch = function (index, e) {\n if (this.aborted)\n return\n\n if (isIgnored(this, e))\n return\n\n if (this.paused) {\n this._emitQueue.push([index, e])\n return\n }\n\n var abs = isAbsolute(e) ? e : this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute)\n e = abs\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n var st = this.statCache[abs]\n if (st)\n this.emit('stat', e, st)\n\n this.emit('match', e)\n}\n\nGlob.prototype._readdirInGlobStar = function (abs, cb) {\n if (this.aborted)\n return\n\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false, cb)\n\n var lstatkey = 'lstat\\0' + abs\n var self = this\n var lstatcb = inflight(lstatkey, lstatcb_)\n\n if (lstatcb)\n fs.lstat(abs, lstatcb)\n\n function lstatcb_ (er, lstat) {\n if (er && er.code === 'ENOENT')\n return cb()\n\n var isSym = lstat && lstat.isSymbolicLink()\n self.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory()) {\n self.cache[abs] = 'FILE'\n cb()\n } else\n self._readdir(abs, false, cb)\n }\n}\n\nGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n if (this.aborted)\n return\n\n cb = inflight('readdir\\0'+abs+'\\0'+inGlobStar, cb)\n if (!cb)\n return\n\n //console.error('RD %j %j', +inGlobStar, abs)\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs, cb)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return cb()\n\n if (Array.isArray(c))\n return cb(null, c)\n }\n\n var self = this\n fs.readdir(abs, readdirCb(this, abs, cb))\n}\n\nfunction readdirCb (self, abs, cb) {\n return function (er, entries) {\n if (er)\n self._readdirError(abs, er, cb)\n else\n self._readdirEntries(abs, entries, cb)\n }\n}\n\nGlob.prototype._readdirEntries = function (abs, entries, cb) {\n if (this.aborted)\n return\n\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n return cb(null, entries)\n}\n\nGlob.prototype._readdirError = function (f, er, cb) {\n if (this.aborted)\n return\n\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n this.emit('error', error)\n this.abort()\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict) {\n this.emit('error', er)\n // If the error is handled, then we abort\n // if not, we threw out of here\n this.abort()\n }\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n\n return cb()\n}\n\nGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\n\nGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n //console.error('pgs2', prefix, remain[0], entries)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return cb()\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false, cb)\n\n var isSym = this.symlinks[abs]\n var len = entries.length\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return cb()\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true, cb)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true, cb)\n }\n\n cb()\n}\n\nGlob.prototype._processSimple = function (prefix, index, cb) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var self = this\n this._stat(prefix, function (er, exists) {\n self._processSimple2(prefix, index, er, exists, cb)\n })\n}\nGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n\n //console.error('ps2', prefix, exists)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return cb()\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n cb()\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlob.prototype._stat = function (f, cb) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return cb()\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return cb(null, c)\n\n if (needDir && c === 'FILE')\n return cb()\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (stat !== undefined) {\n if (stat === false)\n return cb(null, stat)\n else {\n var type = stat.isDirectory() ? 'DIR' : 'FILE'\n if (needDir && type === 'FILE')\n return cb()\n else\n return cb(null, type, stat)\n }\n }\n\n var self = this\n var statcb = inflight('stat\\0' + abs, lstatcb_)\n if (statcb)\n fs.lstat(abs, statcb)\n\n function lstatcb_ (er, lstat) {\n if (lstat && lstat.isSymbolicLink()) {\n // If it's a symlink, then treat it as the target, unless\n // the target does not exist, then treat it as a file.\n return fs.stat(abs, function (er, stat) {\n if (er)\n self._stat2(f, abs, null, lstat, cb)\n else\n self._stat2(f, abs, er, stat, cb)\n })\n } else {\n self._stat2(f, abs, er, lstat, cb)\n }\n }\n}\n\nGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return cb()\n }\n\n var needDir = f.slice(-1) === '/'\n this.statCache[abs] = stat\n\n if (abs.slice(-1) === '/' && stat && !stat.isDirectory())\n return cb(null, false, stat)\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return cb()\n\n return cb(null, c, stat)\n}\n\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction posix(path) {\n\treturn path.charAt(0) === '/';\n}\n\nfunction win32(path) {\n\t// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56\n\tvar splitDeviceRe = /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\tvar result = splitDeviceRe.exec(path);\n\tvar device = result[1] || '';\n\tvar isUnc = Boolean(device && device.charAt(1) !== ':');\n\n\t// UNC paths are always absolute\n\treturn Boolean(result[2] || isUnc);\n}\n\nmodule.exports = process.platform === 'win32' ? win32 : posix;\nmodule.exports.posix = posix;\nmodule.exports.win32 = win32;\n\n\n/***/ }),\n/* 77 */,\n/* 78 */,\n/* 79 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"tty\");\n\n/***/ }),\n/* 80 */,\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (str, fileLoc = 'lockfile') {\n str = (0, (_stripBom || _load_stripBom()).default)(str);\n return hasMergeConflicts(str) ? parseWithConflict(str, fileLoc) : { type: 'success', object: parse(str, fileLoc) };\n};\n\nvar _util;\n\nfunction _load_util() {\n return _util = _interopRequireDefault(__webpack_require__(2));\n}\n\nvar _invariant;\n\nfunction _load_invariant() {\n return _invariant = _interopRequireDefault(__webpack_require__(7));\n}\n\nvar _stripBom;\n\nfunction _load_stripBom() {\n return _stripBom = _interopRequireDefault(__webpack_require__(122));\n}\n\nvar _constants;\n\nfunction _load_constants() {\n return _constants = __webpack_require__(6);\n}\n\nvar _errors;\n\nfunction _load_errors() {\n return _errors = __webpack_require__(4);\n}\n\nvar _map;\n\nfunction _load_map() {\n return _map = _interopRequireDefault(__webpack_require__(20));\n}\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint quotes: 0 */\n\nconst VERSION_REGEX = /^yarn lockfile v(\\d+)$/;\n\nconst TOKEN_TYPES = {\n boolean: 'BOOLEAN',\n string: 'STRING',\n identifier: 'IDENTIFIER',\n eof: 'EOF',\n colon: 'COLON',\n newline: 'NEWLINE',\n comment: 'COMMENT',\n indent: 'INDENT',\n invalid: 'INVALID',\n number: 'NUMBER',\n comma: 'COMMA'\n};\n\nconst VALID_PROP_VALUE_TOKENS = [TOKEN_TYPES.boolean, TOKEN_TYPES.string, TOKEN_TYPES.number];\n\nfunction isValidPropValueToken(token) {\n return VALID_PROP_VALUE_TOKENS.indexOf(token.type) >= 0;\n}\n\nfunction* tokenise(input) {\n let lastNewline = false;\n let line = 1;\n let col = 0;\n\n function buildToken(type, value) {\n return { line, col, type, value };\n }\n\n while (input.length) {\n let chop = 0;\n\n if (input[0] === '\\n' || input[0] === '\\r') {\n chop++;\n // If this is a \\r\\n line, ignore both chars but only add one new line\n if (input[1] === '\\n') {\n chop++;\n }\n line++;\n col = 0;\n yield buildToken(TOKEN_TYPES.newline);\n } else if (input[0] === '#') {\n chop++;\n\n let val = '';\n while (input[chop] !== '\\n') {\n val += input[chop];\n chop++;\n }\n yield buildToken(TOKEN_TYPES.comment, val);\n } else if (input[0] === ' ') {\n if (lastNewline) {\n let indent = '';\n for (let i = 0; input[i] === ' '; i++) {\n indent += input[i];\n }\n\n if (indent.length % 2) {\n throw new TypeError('Invalid number of spaces');\n } else {\n chop = indent.length;\n yield buildToken(TOKEN_TYPES.indent, indent.length / 2);\n }\n } else {\n chop++;\n }\n } else if (input[0] === '\"') {\n let val = '';\n\n for (let i = 0;; i++) {\n const currentChar = input[i];\n val += currentChar;\n\n if (i > 0 && currentChar === '\"') {\n const isEscaped = input[i - 1] === '\\\\' && input[i - 2] !== '\\\\';\n if (!isEscaped) {\n break;\n }\n }\n }\n\n chop = val.length;\n\n try {\n yield buildToken(TOKEN_TYPES.string, JSON.parse(val));\n } catch (err) {\n if (err instanceof SyntaxError) {\n yield buildToken(TOKEN_TYPES.invalid);\n } else {\n throw err;\n }\n }\n } else if (/^[0-9]/.test(input)) {\n let val = '';\n for (let i = 0; /^[0-9]$/.test(input[i]); i++) {\n val += input[i];\n }\n chop = val.length;\n\n yield buildToken(TOKEN_TYPES.number, +val);\n } else if (/^true/.test(input)) {\n yield buildToken(TOKEN_TYPES.boolean, true);\n chop = 4;\n } else if (/^false/.test(input)) {\n yield buildToken(TOKEN_TYPES.boolean, false);\n chop = 5;\n } else if (input[0] === ':') {\n yield buildToken(TOKEN_TYPES.colon);\n chop++;\n } else if (input[0] === ',') {\n yield buildToken(TOKEN_TYPES.comma);\n chop++;\n } else if (/^[a-zA-Z\\/-]/g.test(input)) {\n let name = '';\n for (let i = 0; i < input.length; i++) {\n const char = input[i];\n if (char === ':' || char === ' ' || char === '\\n' || char === '\\r' || char === ',') {\n break;\n } else {\n name += char;\n }\n }\n chop = name.length;\n\n yield buildToken(TOKEN_TYPES.string, name);\n } else {\n yield buildToken(TOKEN_TYPES.invalid);\n }\n\n if (!chop) {\n // will trigger infinite recursion\n yield buildToken(TOKEN_TYPES.invalid);\n }\n\n col += chop;\n lastNewline = input[0] === '\\n' || input[0] === '\\r' && input[1] === '\\n';\n input = input.slice(chop);\n }\n\n yield buildToken(TOKEN_TYPES.eof);\n}\n\nclass Parser {\n constructor(input, fileLoc = 'lockfile') {\n this.comments = [];\n this.tokens = tokenise(input);\n this.fileLoc = fileLoc;\n }\n\n onComment(token) {\n const value = token.value;\n (0, (_invariant || _load_invariant()).default)(typeof value === 'string', 'expected token value to be a string');\n\n const comment = value.trim();\n\n const versionMatch = comment.match(VERSION_REGEX);\n if (versionMatch) {\n const version = +versionMatch[1];\n if (version > (_constants || _load_constants()).LOCKFILE_VERSION) {\n throw new (_errors || _load_errors()).MessageError(`Can't install from a lockfile of version ${version} as you're on an old yarn version that only supports ` + `versions up to ${(_constants || _load_constants()).LOCKFILE_VERSION}. Run \\`$ yarn self-update\\` to upgrade to the latest version.`);\n }\n }\n\n this.comments.push(comment);\n }\n\n next() {\n const item = this.tokens.next();\n (0, (_invariant || _load_invariant()).default)(item, 'expected a token');\n\n const done = item.done,\n value = item.value;\n\n if (done || !value) {\n throw new Error('No more tokens');\n } else if (value.type === TOKEN_TYPES.comment) {\n this.onComment(value);\n return this.next();\n } else {\n return this.token = value;\n }\n }\n\n unexpected(msg = 'Unexpected token') {\n throw new SyntaxError(`${msg} ${this.token.line}:${this.token.col} in ${this.fileLoc}`);\n }\n\n expect(tokType) {\n if (this.token.type === tokType) {\n this.next();\n } else {\n this.unexpected();\n }\n }\n\n eat(tokType) {\n if (this.token.type === tokType) {\n this.next();\n return true;\n } else {\n return false;\n }\n }\n\n parse(indent = 0) {\n const obj = (0, (_map || _load_map()).default)();\n\n while (true) {\n const propToken = this.token;\n\n if (propToken.type === TOKEN_TYPES.newline) {\n const nextToken = this.next();\n if (!indent) {\n // if we have 0 indentation then the next token doesn't matter\n continue;\n }\n\n if (nextToken.type !== TOKEN_TYPES.indent) {\n // if we have no indentation after a newline then we've gone down a level\n break;\n }\n\n if (nextToken.value === indent) {\n // all is good, the indent is on our level\n this.next();\n } else {\n // the indentation is less than our level\n break;\n }\n } else if (propToken.type === TOKEN_TYPES.indent) {\n if (propToken.value === indent) {\n this.next();\n } else {\n break;\n }\n } else if (propToken.type === TOKEN_TYPES.eof) {\n break;\n } else if (propToken.type === TOKEN_TYPES.string) {\n // property key\n const key = propToken.value;\n (0, (_invariant || _load_invariant()).default)(key, 'Expected a key');\n\n const keys = [key];\n this.next();\n\n // support multiple keys\n while (this.token.type === TOKEN_TYPES.comma) {\n this.next(); // skip comma\n\n const keyToken = this.token;\n if (keyToken.type !== TOKEN_TYPES.string) {\n this.unexpected('Expected string');\n }\n\n const key = keyToken.value;\n (0, (_invariant || _load_invariant()).default)(key, 'Expected a key');\n keys.push(key);\n this.next();\n }\n\n const valToken = this.token;\n\n if (valToken.type === TOKEN_TYPES.colon) {\n // object\n this.next();\n\n // parse object\n const val = this.parse(indent + 1);\n\n for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n const key = _ref;\n\n obj[key] = val;\n }\n\n if (indent && this.token.type !== TOKEN_TYPES.indent) {\n break;\n }\n } else if (isValidPropValueToken(valToken)) {\n // plain value\n for (var _iterator2 = keys, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n const key = _ref2;\n\n obj[key] = valToken.value;\n }\n\n this.next();\n } else {\n this.unexpected('Invalid value type');\n }\n } else {\n this.unexpected(`Unknown token: ${(_util || _load_util()).default.inspect(propToken)}`);\n }\n }\n\n return obj;\n }\n}\n\nconst MERGE_CONFLICT_ANCESTOR = '|||||||';\nconst MERGE_CONFLICT_END = '>>>>>>>';\nconst MERGE_CONFLICT_SEP = '=======';\nconst MERGE_CONFLICT_START = '<<<<<<<';\n\n/**\n * Extract the two versions of the lockfile from a merge conflict.\n */\nfunction extractConflictVariants(str) {\n const variants = [[], []];\n const lines = str.split(/\\r?\\n/g);\n let skip = false;\n\n while (lines.length) {\n const line = lines.shift();\n if (line.startsWith(MERGE_CONFLICT_START)) {\n // get the first variant\n while (lines.length) {\n const conflictLine = lines.shift();\n if (conflictLine === MERGE_CONFLICT_SEP) {\n skip = false;\n break;\n } else if (skip || conflictLine.startsWith(MERGE_CONFLICT_ANCESTOR)) {\n skip = true;\n continue;\n } else {\n variants[0].push(conflictLine);\n }\n }\n\n // get the second variant\n while (lines.length) {\n const conflictLine = lines.shift();\n if (conflictLine.startsWith(MERGE_CONFLICT_END)) {\n break;\n } else {\n variants[1].push(conflictLine);\n }\n }\n } else {\n variants[0].push(line);\n variants[1].push(line);\n }\n }\n\n return [variants[0].join('\\n'), variants[1].join('\\n')];\n}\n\n/**\n * Check if a lockfile has merge conflicts.\n */\nfunction hasMergeConflicts(str) {\n return str.includes(MERGE_CONFLICT_START) && str.includes(MERGE_CONFLICT_SEP) && str.includes(MERGE_CONFLICT_END);\n}\n\n/**\n * Parse the lockfile.\n */\nfunction parse(str, fileLoc) {\n const parser = new Parser(str, fileLoc);\n parser.next();\n return parser.parse();\n}\n\n/**\n * Parse and merge the two variants in a conflicted lockfile.\n */\nfunction parseWithConflict(str, fileLoc) {\n const variants = extractConflictVariants(str);\n try {\n return { type: 'merge', object: Object.assign({}, parse(variants[0], fileLoc), parse(variants[1], fileLoc)) };\n } catch (err) {\n if (err instanceof SyntaxError) {\n return { type: 'conflict', object: {} };\n } else {\n throw err;\n }\n }\n}\n\n/***/ }),\n/* 82 */,\n/* 83 */,\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _map;\n\nfunction _load_map() {\n return _map = _interopRequireDefault(__webpack_require__(20));\n}\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst debug = __webpack_require__(212)('yarn');\n\nclass BlockingQueue {\n constructor(alias, maxConcurrency = Infinity) {\n this.concurrencyQueue = [];\n this.maxConcurrency = maxConcurrency;\n this.runningCount = 0;\n this.warnedStuck = false;\n this.alias = alias;\n this.first = true;\n\n this.running = (0, (_map || _load_map()).default)();\n this.queue = (0, (_map || _load_map()).default)();\n\n this.stuckTick = this.stuckTick.bind(this);\n }\n\n stillActive() {\n if (this.stuckTimer) {\n clearTimeout(this.stuckTimer);\n }\n\n this.stuckTimer = setTimeout(this.stuckTick, 5000);\n\n // We need to check the existence of unref because of https://github.com/facebook/jest/issues/4559\n // $FlowFixMe: Node's setInterval returns a Timeout, not a Number\n this.stuckTimer.unref && this.stuckTimer.unref();\n }\n\n stuckTick() {\n if (this.runningCount === 1) {\n this.warnedStuck = true;\n debug(`The ${JSON.stringify(this.alias)} blocking queue may be stuck. 5 seconds ` + `without any activity with 1 worker: ${Object.keys(this.running)[0]}`);\n }\n }\n\n push(key, factory) {\n if (this.first) {\n this.first = false;\n } else {\n this.stillActive();\n }\n\n return new Promise((resolve, reject) => {\n // we're already running so push ourselves to the queue\n const queue = this.queue[key] = this.queue[key] || [];\n queue.push({ factory, resolve, reject });\n\n if (!this.running[key]) {\n this.shift(key);\n }\n });\n }\n\n shift(key) {\n if (this.running[key]) {\n delete this.running[key];\n this.runningCount--;\n\n if (this.stuckTimer) {\n clearTimeout(this.stuckTimer);\n this.stuckTimer = null;\n }\n\n if (this.warnedStuck) {\n this.warnedStuck = false;\n debug(`${JSON.stringify(this.alias)} blocking queue finally resolved. Nothing to worry about.`);\n }\n }\n\n const queue = this.queue[key];\n if (!queue) {\n return;\n }\n\n var _queue$shift = queue.shift();\n\n const resolve = _queue$shift.resolve,\n reject = _queue$shift.reject,\n factory = _queue$shift.factory;\n\n if (!queue.length) {\n delete this.queue[key];\n }\n\n const next = () => {\n this.shift(key);\n this.shiftConcurrencyQueue();\n };\n\n const run = () => {\n this.running[key] = true;\n this.runningCount++;\n\n factory().then(function (val) {\n resolve(val);\n next();\n return null;\n }).catch(function (err) {\n reject(err);\n next();\n });\n };\n\n this.maybePushConcurrencyQueue(run);\n }\n\n maybePushConcurrencyQueue(run) {\n if (this.runningCount < this.maxConcurrency) {\n run();\n } else {\n this.concurrencyQueue.push(run);\n }\n }\n\n shiftConcurrencyQueue() {\n if (this.runningCount < this.maxConcurrency) {\n const fn = this.concurrencyQueue.shift();\n if (fn) {\n fn();\n }\n }\n }\n}\nexports.default = BlockingQueue;\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n/***/ }),\n/* 86 */,\n/* 87 */,\n/* 88 */,\n/* 89 */,\n/* 90 */,\n/* 91 */,\n/* 92 */,\n/* 93 */,\n/* 94 */,\n/* 95 */,\n/* 96 */,\n/* 97 */,\n/* 98 */,\n/* 99 */,\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(47);\nvar TAG = __webpack_require__(13)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(11).document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(69);\nvar $export = __webpack_require__(41);\nvar redefine = __webpack_require__(197);\nvar hide = __webpack_require__(31);\nvar Iterators = __webpack_require__(35);\nvar $iterCreate = __webpack_require__(188);\nvar setToStringTag = __webpack_require__(71);\nvar getPrototypeOf = __webpack_require__(194);\nvar ITERATOR = __webpack_require__(13)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(27);\nvar isObject = __webpack_require__(34);\nvar newPromiseCapability = __webpack_require__(70);\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(23);\nvar global = __webpack_require__(11);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(69) ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(27);\nvar aFunction = __webpack_require__(46);\nvar SPECIES = __webpack_require__(13)('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ctx = __webpack_require__(48);\nvar invoke = __webpack_require__(185);\nvar html = __webpack_require__(102);\nvar cel = __webpack_require__(68);\nvar global = __webpack_require__(11);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(47)(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(73);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = __webpack_require__(229);\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n var prevTime;\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n exports.instances.push(debug);\n\n return debug;\n}\n\nfunction destroy () {\n var index = exports.instances.indexOf(this);\n if (index !== -1) {\n exports.instances.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < exports.instances.length; i++) {\n var instance = exports.instances[i];\n instance.enabled = exports.enabled(instance.namespace);\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n\n\n/***/ }),\n/* 113 */,\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = realpath\nrealpath.realpath = realpath\nrealpath.sync = realpathSync\nrealpath.realpathSync = realpathSync\nrealpath.monkeypatch = monkeypatch\nrealpath.unmonkeypatch = unmonkeypatch\n\nvar fs = __webpack_require__(3)\nvar origRealpath = fs.realpath\nvar origRealpathSync = fs.realpathSync\n\nvar version = process.version\nvar ok = /^v[0-5]\\./.test(version)\nvar old = __webpack_require__(217)\n\nfunction newError (er) {\n return er && er.syscall === 'realpath' && (\n er.code === 'ELOOP' ||\n er.code === 'ENOMEM' ||\n er.code === 'ENAMETOOLONG'\n )\n}\n\nfunction realpath (p, cache, cb) {\n if (ok) {\n return origRealpath(p, cache, cb)\n }\n\n if (typeof cache === 'function') {\n cb = cache\n cache = null\n }\n origRealpath(p, cache, function (er, result) {\n if (newError(er)) {\n old.realpath(p, cache, cb)\n } else {\n cb(er, result)\n }\n })\n}\n\nfunction realpathSync (p, cache) {\n if (ok) {\n return origRealpathSync(p, cache)\n }\n\n try {\n return origRealpathSync(p, cache)\n } catch (er) {\n if (newError(er)) {\n return old.realpathSync(p, cache)\n } else {\n throw er\n }\n }\n}\n\nfunction monkeypatch () {\n fs.realpath = realpath\n fs.realpathSync = realpathSync\n}\n\nfunction unmonkeypatch () {\n fs.realpath = origRealpath\n fs.realpathSync = origRealpathSync\n}\n\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports.alphasort = alphasort\nexports.alphasorti = alphasorti\nexports.setopts = setopts\nexports.ownProp = ownProp\nexports.makeAbs = makeAbs\nexports.finish = finish\nexports.mark = mark\nexports.isIgnored = isIgnored\nexports.childrenIgnored = childrenIgnored\n\nfunction ownProp (obj, field) {\n return Object.prototype.hasOwnProperty.call(obj, field)\n}\n\nvar path = __webpack_require__(0)\nvar minimatch = __webpack_require__(60)\nvar isAbsolute = __webpack_require__(76)\nvar Minimatch = minimatch.Minimatch\n\nfunction alphasorti (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase())\n}\n\nfunction alphasort (a, b) {\n return a.localeCompare(b)\n}\n\nfunction setupIgnores (self, options) {\n self.ignore = options.ignore || []\n\n if (!Array.isArray(self.ignore))\n self.ignore = [self.ignore]\n\n if (self.ignore.length) {\n self.ignore = self.ignore.map(ignoreMap)\n }\n}\n\n// ignore patterns are always in dot:true mode.\nfunction ignoreMap (pattern) {\n var gmatcher = null\n if (pattern.slice(-3) === '/**') {\n var gpattern = pattern.replace(/(\\/\\*\\*)+$/, '')\n gmatcher = new Minimatch(gpattern, { dot: true })\n }\n\n return {\n matcher: new Minimatch(pattern, { dot: true }),\n gmatcher: gmatcher\n }\n}\n\nfunction setopts (self, pattern, options) {\n if (!options)\n options = {}\n\n // base-matching: just use globstar for that.\n if (options.matchBase && -1 === pattern.indexOf(\"/\")) {\n if (options.noglobstar) {\n throw new Error(\"base matching requires globstar\")\n }\n pattern = \"**/\" + pattern\n }\n\n self.silent = !!options.silent\n self.pattern = pattern\n self.strict = options.strict !== false\n self.realpath = !!options.realpath\n self.realpathCache = options.realpathCache || Object.create(null)\n self.follow = !!options.follow\n self.dot = !!options.dot\n self.mark = !!options.mark\n self.nodir = !!options.nodir\n if (self.nodir)\n self.mark = true\n self.sync = !!options.sync\n self.nounique = !!options.nounique\n self.nonull = !!options.nonull\n self.nosort = !!options.nosort\n self.nocase = !!options.nocase\n self.stat = !!options.stat\n self.noprocess = !!options.noprocess\n self.absolute = !!options.absolute\n\n self.maxLength = options.maxLength || Infinity\n self.cache = options.cache || Object.create(null)\n self.statCache = options.statCache || Object.create(null)\n self.symlinks = options.symlinks || Object.create(null)\n\n setupIgnores(self, options)\n\n self.changedCwd = false\n var cwd = process.cwd()\n if (!ownProp(options, \"cwd\"))\n self.cwd = cwd\n else {\n self.cwd = path.resolve(options.cwd)\n self.changedCwd = self.cwd !== cwd\n }\n\n self.root = options.root || path.resolve(self.cwd, \"/\")\n self.root = path.resolve(self.root)\n if (process.platform === \"win32\")\n self.root = self.root.replace(/\\\\/g, \"/\")\n\n // TODO: is an absolute `cwd` supposed to be resolved against `root`?\n // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')\n self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)\n if (process.platform === \"win32\")\n self.cwdAbs = self.cwdAbs.replace(/\\\\/g, \"/\")\n self.nomount = !!options.nomount\n\n // disable comments and negation in Minimatch.\n // Note that they are not supported in Glob itself anyway.\n options.nonegate = true\n options.nocomment = true\n\n self.minimatch = new Minimatch(pattern, options)\n self.options = self.minimatch.options\n}\n\nfunction finish (self) {\n var nou = self.nounique\n var all = nou ? [] : Object.create(null)\n\n for (var i = 0, l = self.matches.length; i < l; i ++) {\n var matches = self.matches[i]\n if (!matches || Object.keys(matches).length === 0) {\n if (self.nonull) {\n // do like the shell, and spit out the literal glob\n var literal = self.minimatch.globSet[i]\n if (nou)\n all.push(literal)\n else\n all[literal] = true\n }\n } else {\n // had matches\n var m = Object.keys(matches)\n if (nou)\n all.push.apply(all, m)\n else\n m.forEach(function (m) {\n all[m] = true\n })\n }\n }\n\n if (!nou)\n all = Object.keys(all)\n\n if (!self.nosort)\n all = all.sort(self.nocase ? alphasorti : alphasort)\n\n // at *some* point we statted all of these\n if (self.mark) {\n for (var i = 0; i < all.length; i++) {\n all[i] = self._mark(all[i])\n }\n if (self.nodir) {\n all = all.filter(function (e) {\n var notDir = !(/\\/$/.test(e))\n var c = self.cache[e] || self.cache[makeAbs(self, e)]\n if (notDir && c)\n notDir = c !== 'DIR' && !Array.isArray(c)\n return notDir\n })\n }\n }\n\n if (self.ignore.length)\n all = all.filter(function(m) {\n return !isIgnored(self, m)\n })\n\n self.found = all\n}\n\nfunction mark (self, p) {\n var abs = makeAbs(self, p)\n var c = self.cache[abs]\n var m = p\n if (c) {\n var isDir = c === 'DIR' || Array.isArray(c)\n var slash = p.slice(-1) === '/'\n\n if (isDir && !slash)\n m += '/'\n else if (!isDir && slash)\n m = m.slice(0, -1)\n\n if (m !== p) {\n var mabs = makeAbs(self, m)\n self.statCache[mabs] = self.statCache[abs]\n self.cache[mabs] = self.cache[abs]\n }\n }\n\n return m\n}\n\n// lotta situps...\nfunction makeAbs (self, f) {\n var abs = f\n if (f.charAt(0) === '/') {\n abs = path.join(self.root, f)\n } else if (isAbsolute(f) || f === '') {\n abs = f\n } else if (self.changedCwd) {\n abs = path.resolve(self.cwd, f)\n } else {\n abs = path.resolve(f)\n }\n\n if (process.platform === 'win32')\n abs = abs.replace(/\\\\/g, '/')\n\n return abs\n}\n\n\n// Return true, if pattern ends with globstar '**', for the accompanying parent directory.\n// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents\nfunction isIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n\nfunction childrenIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(0);\nvar fs = __webpack_require__(3);\nvar _0777 = parseInt('0777', 8);\n\nmodule.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;\n\nfunction mkdirP (p, opts, f, made) {\n if (typeof opts === 'function') {\n f = opts;\n opts = {};\n }\n else if (!opts || typeof opts !== 'object') {\n opts = { mode: opts };\n }\n \n var mode = opts.mode;\n var xfs = opts.fs || fs;\n \n if (mode === undefined) {\n mode = _0777 & (~process.umask());\n }\n if (!made) made = null;\n \n var cb = f || function () {};\n p = path.resolve(p);\n \n xfs.mkdir(p, mode, function (er) {\n if (!er) {\n made = made || p;\n return cb(null, made);\n }\n switch (er.code) {\n case 'ENOENT':\n mkdirP(path.dirname(p), opts, function (er, made) {\n if (er) cb(er, made);\n else mkdirP(p, opts, cb, made);\n });\n break;\n\n // In the case of any other error, just see if there's a dir\n // there already. If so, then hooray! If not, then something\n // is borked.\n default:\n xfs.stat(p, function (er2, stat) {\n // if the stat fails, then that's super weird.\n // let the original error be the failure reason.\n if (er2 || !stat.isDirectory()) cb(er, made)\n else cb(null, made);\n });\n break;\n }\n });\n}\n\nmkdirP.sync = function sync (p, opts, made) {\n if (!opts || typeof opts !== 'object') {\n opts = { mode: opts };\n }\n \n var mode = opts.mode;\n var xfs = opts.fs || fs;\n \n if (mode === undefined) {\n mode = _0777 & (~process.umask());\n }\n if (!made) made = null;\n\n p = path.resolve(p);\n\n try {\n xfs.mkdirSync(p, mode);\n made = made || p;\n }\n catch (err0) {\n switch (err0.code) {\n case 'ENOENT' :\n made = sync(path.dirname(p), opts, made);\n sync(p, opts, made);\n break;\n\n // In the case of any other error, just see if there's a dir\n // there already. If so, then hooray! If not, then something\n // is borked.\n default:\n var stat;\n try {\n stat = xfs.statSync(p);\n }\n catch (err1) {\n throw err0;\n }\n if (!stat.isDirectory()) throw err0;\n break;\n }\n }\n\n return made;\n};\n\n\n/***/ }),\n/* 117 */,\n/* 118 */,\n/* 119 */,\n/* 120 */,\n/* 121 */,\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nmodule.exports = x => {\n\tif (typeof x !== 'string') {\n\t\tthrow new TypeError('Expected a string, got ' + typeof x);\n\t}\n\n\t// Catches EFBBBF (UTF-8 BOM) because the buffer-to-string\n\t// conversion translates it to FEFF (UTF-16 BOM)\n\tif (x.charCodeAt(0) === 0xFEFF) {\n\t\treturn x.slice(1);\n\t}\n\n\treturn x;\n};\n\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports) {\n\n// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n\n\n/***/ }),\n/* 124 */,\n/* 125 */,\n/* 126 */,\n/* 127 */,\n/* 128 */,\n/* 129 */,\n/* 130 */,\n/* 131 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(47);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(195);\nvar enumBugKeys = __webpack_require__(101);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(67);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n/***/ }),\n/* 134 */,\n/* 135 */,\n/* 136 */,\n/* 137 */,\n/* 138 */,\n/* 139 */,\n/* 140 */,\n/* 141 */,\n/* 142 */,\n/* 143 */,\n/* 144 */,\n/* 145 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\"name\":\"yarn\",\"installationMethod\":\"unknown\",\"version\":\"1.10.0-0\",\"license\":\"BSD-2-Clause\",\"preferGlobal\":true,\"description\":\"📦🐈 Fast, reliable, and secure dependency management.\",\"dependencies\":{\"@zkochan/cmd-shim\":\"^2.2.4\",\"babel-runtime\":\"^6.26.0\",\"bytes\":\"^3.0.0\",\"camelcase\":\"^4.0.0\",\"chalk\":\"^2.1.0\",\"commander\":\"^2.9.0\",\"death\":\"^1.0.0\",\"debug\":\"^3.0.0\",\"deep-equal\":\"^1.0.1\",\"detect-indent\":\"^5.0.0\",\"dnscache\":\"^1.0.1\",\"glob\":\"^7.1.1\",\"gunzip-maybe\":\"^1.4.0\",\"hash-for-dep\":\"^1.2.3\",\"imports-loader\":\"^0.8.0\",\"ini\":\"^1.3.4\",\"inquirer\":\"^3.0.1\",\"invariant\":\"^2.2.0\",\"is-builtin-module\":\"^2.0.0\",\"is-ci\":\"^1.0.10\",\"is-webpack-bundle\":\"^1.0.0\",\"leven\":\"^2.0.0\",\"loud-rejection\":\"^1.2.0\",\"micromatch\":\"^2.3.11\",\"mkdirp\":\"^0.5.1\",\"node-emoji\":\"^1.6.1\",\"normalize-url\":\"^2.0.0\",\"npm-logical-tree\":\"^1.2.1\",\"object-path\":\"^0.11.2\",\"proper-lockfile\":\"^2.0.0\",\"puka\":\"^1.0.0\",\"read\":\"^1.0.7\",\"request\":\"^2.87.0\",\"request-capture-har\":\"^1.2.2\",\"rimraf\":\"^2.5.0\",\"semver\":\"^5.1.0\",\"ssri\":\"^5.3.0\",\"strip-ansi\":\"^4.0.0\",\"strip-bom\":\"^3.0.0\",\"tar-fs\":\"^1.16.0\",\"tar-stream\":\"^1.6.1\",\"uuid\":\"^3.0.1\",\"v8-compile-cache\":\"^2.0.0\",\"validate-npm-package-license\":\"^3.0.3\",\"yn\":\"^2.0.0\"},\"devDependencies\":{\"babel-core\":\"^6.26.0\",\"babel-eslint\":\"^7.2.3\",\"babel-loader\":\"^6.2.5\",\"babel-plugin-array-includes\":\"^2.0.3\",\"babel-plugin-transform-builtin-extend\":\"^1.1.2\",\"babel-plugin-transform-inline-imports-commonjs\":\"^1.0.0\",\"babel-plugin-transform-runtime\":\"^6.4.3\",\"babel-preset-env\":\"^1.6.0\",\"babel-preset-flow\":\"^6.23.0\",\"babel-preset-stage-0\":\"^6.0.0\",\"babylon\":\"^6.5.0\",\"commitizen\":\"^2.9.6\",\"cz-conventional-changelog\":\"^2.0.0\",\"eslint\":\"^4.3.0\",\"eslint-config-fb-strict\":\"^22.0.0\",\"eslint-plugin-babel\":\"^5.0.0\",\"eslint-plugin-flowtype\":\"^2.35.0\",\"eslint-plugin-jasmine\":\"^2.6.2\",\"eslint-plugin-jest\":\"^21.0.0\",\"eslint-plugin-jsx-a11y\":\"^6.0.2\",\"eslint-plugin-prefer-object-spread\":\"^1.2.1\",\"eslint-plugin-prettier\":\"^2.1.2\",\"eslint-plugin-react\":\"^7.1.0\",\"eslint-plugin-relay\":\"^0.0.24\",\"eslint-plugin-yarn-internal\":\"file:scripts/eslint-rules\",\"execa\":\"^0.10.0\",\"flow-bin\":\"^0.66.0\",\"git-release-notes\":\"^3.0.0\",\"gulp\":\"^3.9.0\",\"gulp-babel\":\"^7.0.0\",\"gulp-if\":\"^2.0.1\",\"gulp-newer\":\"^1.0.0\",\"gulp-plumber\":\"^1.0.1\",\"gulp-sourcemaps\":\"^2.2.0\",\"gulp-util\":\"^3.0.7\",\"gulp-watch\":\"^5.0.0\",\"jest\":\"^22.4.4\",\"jsinspect\":\"^0.12.6\",\"minimatch\":\"^3.0.4\",\"mock-stdin\":\"^0.3.0\",\"prettier\":\"^1.5.2\",\"temp\":\"^0.8.3\",\"webpack\":\"^2.1.0-beta.25\",\"yargs\":\"^6.3.0\"},\"resolutions\":{\"sshpk\":\"^1.14.2\"},\"engines\":{\"node\":\">=4.0.0\"},\"repository\":\"yarnpkg/yarn\",\"bin\":{\"yarn\":\"./bin/yarn.js\",\"yarnpkg\":\"./bin/yarn.js\"},\"scripts\":{\"build\":\"gulp build\",\"build-bundle\":\"node ./scripts/build-webpack.js\",\"build-chocolatey\":\"powershell ./scripts/build-chocolatey.ps1\",\"build-deb\":\"./scripts/build-deb.sh\",\"build-dist\":\"bash ./scripts/build-dist.sh\",\"build-win-installer\":\"scripts\\\\build-windows-installer.bat\",\"changelog\":\"git-release-notes $(git describe --tags --abbrev=0 $(git describe --tags --abbrev=0)^)..$(git describe --tags --abbrev=0) scripts/changelog.md\",\"dupe-check\":\"yarn jsinspect ./src\",\"lint\":\"eslint . && flow check\",\"pkg-tests\":\"yarn --cwd packages/pkg-tests jest yarn.test.js\",\"prettier\":\"eslint src __tests__ --fix\",\"release-branch\":\"./scripts/release-branch.sh\",\"test\":\"yarn lint && yarn test-only\",\"test-only\":\"node --max_old_space_size=4096 node_modules/jest/bin/jest.js --verbose\",\"test-only-debug\":\"node --inspect-brk --max_old_space_size=4096 node_modules/jest/bin/jest.js --runInBand --verbose\",\"test-coverage\":\"node --max_old_space_size=4096 node_modules/jest/bin/jest.js --coverage --verbose\",\"watch\":\"gulp watch\",\"commit\":\"git-cz\"},\"jest\":{\"collectCoverageFrom\":[\"src/**/*.js\"],\"testEnvironment\":\"node\",\"modulePathIgnorePatterns\":[\"__tests__/fixtures/\",\"packages/pkg-tests/pkg-tests-fixtures\",\"dist/\"],\"testPathIgnorePatterns\":[\"__tests__/(fixtures|__mocks__)/\",\"updates/\",\"_(temp|mock|install|init|helpers).js$\",\"packages/pkg-tests\"]},\"config\":{\"commitizen\":{\"path\":\"./node_modules/cz-conventional-changelog\"}}}\n\n/***/ }),\n/* 146 */,\n/* 147 */,\n/* 148 */,\n/* 149 */,\n/* 150 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = stringify;\n\nvar _misc;\n\nfunction _load_misc() {\n return _misc = __webpack_require__(12);\n}\n\nvar _constants;\n\nfunction _load_constants() {\n return _constants = __webpack_require__(6);\n}\n\nvar _package;\n\nfunction _load_package() {\n return _package = __webpack_require__(145);\n}\n\nconst NODE_VERSION = process.version;\n\nfunction shouldWrapKey(str) {\n return str.indexOf('true') === 0 || str.indexOf('false') === 0 || /[:\\s\\n\\\\\",\\[\\]]/g.test(str) || /^[0-9]/g.test(str) || !/^[a-zA-Z]/g.test(str);\n}\n\nfunction maybeWrap(str) {\n if (typeof str === 'boolean' || typeof str === 'number' || shouldWrapKey(str)) {\n return JSON.stringify(str);\n } else {\n return str;\n }\n}\n\nconst priorities = {\n name: 1,\n version: 2,\n uid: 3,\n resolved: 4,\n integrity: 5,\n registry: 6,\n dependencies: 7\n};\n\nfunction priorityThenAlphaSort(a, b) {\n if (priorities[a] || priorities[b]) {\n return (priorities[a] || 100) > (priorities[b] || 100) ? 1 : -1;\n } else {\n return (0, (_misc || _load_misc()).sortAlpha)(a, b);\n }\n}\n\nfunction _stringify(obj, options) {\n if (typeof obj !== 'object') {\n throw new TypeError();\n }\n\n const indent = options.indent;\n const lines = [];\n\n // Sorting order needs to be consistent between runs, we run native sort by name because there are no\n // problems with it being unstable because there are no to keys the same\n // However priorities can be duplicated and native sort can shuffle things from run to run\n const keys = Object.keys(obj).sort(priorityThenAlphaSort);\n\n let addedKeys = [];\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const val = obj[key];\n if (val == null || addedKeys.indexOf(key) >= 0) {\n continue;\n }\n\n const valKeys = [key];\n\n // get all keys that have the same value equality, we only want this for objects\n if (typeof val === 'object') {\n for (let j = i + 1; j < keys.length; j++) {\n const key = keys[j];\n if (val === obj[key]) {\n valKeys.push(key);\n }\n }\n }\n\n const keyLine = valKeys.sort((_misc || _load_misc()).sortAlpha).map(maybeWrap).join(', ');\n\n if (typeof val === 'string' || typeof val === 'boolean' || typeof val === 'number') {\n lines.push(`${keyLine} ${maybeWrap(val)}`);\n } else if (typeof val === 'object') {\n lines.push(`${keyLine}:\\n${_stringify(val, { indent: indent + ' ' })}` + (options.topLevel ? '\\n' : ''));\n } else {\n throw new TypeError();\n }\n\n addedKeys = addedKeys.concat(valKeys);\n }\n\n return indent + lines.join(`\\n${indent}`);\n}\n\nfunction stringify(obj, noHeader, enableVersions) {\n const val = _stringify(obj, {\n indent: '',\n topLevel: true\n });\n if (noHeader) {\n return val;\n }\n\n const lines = [];\n lines.push('# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.');\n lines.push(`# yarn lockfile v${(_constants || _load_constants()).LOCKFILE_VERSION}`);\n if (enableVersions) {\n lines.push(`# yarn v${(_package || _load_package()).version}`);\n lines.push(`# node ${NODE_VERSION}`);\n }\n lines.push('\\n');\n lines.push(val);\n\n return lines.join('\\n');\n}\n\n/***/ }),\n/* 151 */,\n/* 152 */,\n/* 153 */,\n/* 154 */,\n/* 155 */,\n/* 156 */,\n/* 157 */,\n/* 158 */,\n/* 159 */,\n/* 160 */,\n/* 161 */,\n/* 162 */,\n/* 163 */,\n/* 164 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fileDatesEqual = exports.copyFile = exports.unlink = undefined;\n\nvar _asyncToGenerator2;\n\nfunction _load_asyncToGenerator() {\n return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1));\n}\n\n// We want to preserve file timestamps when copying a file, since yarn uses them to decide if a file has\n// changed compared to the cache.\n// There are some OS specific cases here:\n// * On linux, fs.copyFile does not preserve timestamps, but does on OSX and Win.\n// * On windows, you must open a file with write permissions to call `fs.futimes`.\n// * On OSX you can open with read permissions and still call `fs.futimes`.\nlet fixTimes = (() => {\n var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (fd, dest, data) {\n const doOpen = fd === undefined;\n let openfd = fd ? fd : -1;\n\n if (disableTimestampCorrection === undefined) {\n // if timestamps match already, no correction is needed.\n // the need to correct timestamps varies based on OS and node versions.\n const destStat = yield lstat(dest);\n disableTimestampCorrection = fileDatesEqual(destStat.mtime, data.mtime);\n }\n\n if (disableTimestampCorrection) {\n return;\n }\n\n if (doOpen) {\n try {\n openfd = yield open(dest, 'a', data.mode);\n } catch (er) {\n // file is likely read-only\n try {\n openfd = yield open(dest, 'r', data.mode);\n } catch (err) {\n // We can't even open this file for reading.\n return;\n }\n }\n }\n\n try {\n if (openfd) {\n yield futimes(openfd, data.atime, data.mtime);\n }\n } catch (er) {\n // If `futimes` throws an exception, we probably have a case of a read-only file on Windows.\n // In this case we can just return. The incorrect timestamp will just cause that file to be recopied\n // on subsequent installs, which will effect yarn performance but not break anything.\n } finally {\n if (doOpen && openfd) {\n yield close(openfd);\n }\n }\n });\n\n return function fixTimes(_x7, _x8, _x9) {\n return _ref3.apply(this, arguments);\n };\n})();\n\n// Compare file timestamps.\n// Some versions of Node on windows zero the milliseconds when utime is used.\n\n\nvar _fs;\n\nfunction _load_fs() {\n return _fs = _interopRequireDefault(__webpack_require__(3));\n}\n\nvar _promise;\n\nfunction _load_promise() {\n return _promise = __webpack_require__(40);\n}\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// This module serves as a wrapper for file operations that are inconsistant across node and OS versions.\n\nlet disableTimestampCorrection = undefined; // OS dependent. will be detected on first file copy.\n\nconst readFileBuffer = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.readFile);\nconst close = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.close);\nconst lstat = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.lstat);\nconst open = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.open);\nconst futimes = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.futimes);\n\nconst write = (0, (_promise || _load_promise()).promisify)((_fs || _load_fs()).default.write);\n\nconst unlink = exports.unlink = (0, (_promise || _load_promise()).promisify)(__webpack_require__(233));\n\n/**\n * Unlinks the destination to force a recreation. This is needed on case-insensitive file systems\n * to force the correct naming when the filename has changed only in character-casing. (Jest -> jest).\n */\nconst copyFile = exports.copyFile = (() => {\n var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data, cleanup) {\n try {\n yield unlink(data.dest);\n yield copyFilePoly(data.src, data.dest, 0, data);\n } finally {\n if (cleanup) {\n cleanup();\n }\n }\n });\n\n return function copyFile(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n})();\n\n// Node 8.5.0 introduced `fs.copyFile` which is much faster, so use that when available.\n// Otherwise we fall back to reading and writing files as buffers.\nconst copyFilePoly = (src, dest, flags, data) => {\n if ((_fs || _load_fs()).default.copyFile) {\n return new Promise((resolve, reject) => (_fs || _load_fs()).default.copyFile(src, dest, flags, err => {\n if (err) {\n reject(err);\n } else {\n fixTimes(undefined, dest, data).then(() => resolve()).catch(ex => reject(ex));\n }\n }));\n } else {\n return copyWithBuffer(src, dest, flags, data);\n }\n};\n\nconst copyWithBuffer = (() => {\n var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest, flags, data) {\n // Use open -> write -> futimes -> close sequence to avoid opening the file twice:\n // one with writeFile and one with utimes\n const fd = yield open(dest, 'w', data.mode);\n try {\n const buffer = yield readFileBuffer(src);\n yield write(fd, buffer, 0, buffer.length);\n yield fixTimes(fd, dest, data);\n } finally {\n yield close(fd);\n }\n });\n\n return function copyWithBuffer(_x3, _x4, _x5, _x6) {\n return _ref2.apply(this, arguments);\n };\n})();const fileDatesEqual = exports.fileDatesEqual = (a, b) => {\n const aTime = a.getTime();\n const bTime = b.getTime();\n\n if (process.platform !== 'win32') {\n return aTime === bTime;\n }\n\n // See https://github.com/nodejs/node/pull/12607\n // Submillisecond times from stat and utimes are truncated on Windows,\n // causing a file with mtime 8.0079998 and 8.0081144 to become 8.007 and 8.008\n // and making it impossible to update these files to their correct timestamps.\n if (Math.abs(aTime - bTime) <= 1) {\n return true;\n }\n\n const aTimeSec = Math.floor(aTime / 1000);\n const bTimeSec = Math.floor(bTime / 1000);\n\n // See https://github.com/nodejs/node/issues/2069\n // Some versions of Node on windows zero the milliseconds when utime is used\n // So if any of the time has a milliseconds part of zero we suspect that the\n // bug is present and compare only seconds.\n if (aTime - aTimeSec * 1000 === 0 || bTime - bTimeSec * 1000 === 0) {\n return aTimeSec === bTimeSec;\n }\n\n return aTime === bTime;\n};\n\n/***/ }),\n/* 165 */,\n/* 166 */,\n/* 167 */,\n/* 168 */,\n/* 169 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isFakeRoot = isFakeRoot;\nexports.isRootUser = isRootUser;\nfunction getUid() {\n if (process.platform !== 'win32' && process.getuid) {\n return process.getuid();\n }\n return null;\n}\n\nexports.default = isRootUser(getUid()) && !isFakeRoot();\nfunction isFakeRoot() {\n return Boolean(process.env.FAKEROOTKEY);\n}\n\nfunction isRootUser(uid) {\n return uid === 0;\n}\n\n/***/ }),\n/* 170 */,\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getDataDir = getDataDir;\nexports.getCacheDir = getCacheDir;\nexports.getConfigDir = getConfigDir;\nconst path = __webpack_require__(0);\nconst userHome = __webpack_require__(45).default;\n\nconst FALLBACK_CONFIG_DIR = path.join(userHome, '.config', 'yarn');\nconst FALLBACK_CACHE_DIR = path.join(userHome, '.cache', 'yarn');\n\nfunction getDataDir() {\n if (process.platform === 'win32') {\n const WIN32_APPDATA_DIR = getLocalAppDataDir();\n return WIN32_APPDATA_DIR == null ? FALLBACK_CONFIG_DIR : path.join(WIN32_APPDATA_DIR, 'Data');\n } else if (process.env.XDG_DATA_HOME) {\n return path.join(process.env.XDG_DATA_HOME, 'yarn');\n } else {\n // This could arguably be ~/Library/Application Support/Yarn on Macs,\n // but that feels unintuitive for a cli tool\n\n // Instead, use our prior fallback. Some day this could be\n // path.join(userHome, '.local', 'share', 'yarn')\n // or return path.join(WIN32_APPDATA_DIR, 'Data') on win32\n return FALLBACK_CONFIG_DIR;\n }\n}\n\nfunction getCacheDir() {\n if (process.platform === 'win32') {\n // process.env.TEMP also exists, but most apps put caches here\n return path.join(getLocalAppDataDir() || path.join(userHome, 'AppData', 'Local', 'Yarn'), 'Cache');\n } else if (process.env.XDG_CACHE_HOME) {\n return path.join(process.env.XDG_CACHE_HOME, 'yarn');\n } else if (process.platform === 'darwin') {\n return path.join(userHome, 'Library', 'Caches', 'Yarn');\n } else {\n return FALLBACK_CACHE_DIR;\n }\n}\n\nfunction getConfigDir() {\n if (process.platform === 'win32') {\n // Use our prior fallback. Some day this could be\n // return path.join(WIN32_APPDATA_DIR, 'Config')\n const WIN32_APPDATA_DIR = getLocalAppDataDir();\n return WIN32_APPDATA_DIR == null ? FALLBACK_CONFIG_DIR : path.join(WIN32_APPDATA_DIR, 'Config');\n } else if (process.env.XDG_CONFIG_HOME) {\n return path.join(process.env.XDG_CONFIG_HOME, 'yarn');\n } else {\n return FALLBACK_CONFIG_DIR;\n }\n}\n\nfunction getLocalAppDataDir() {\n return process.env.LOCALAPPDATA ? path.join(process.env.LOCALAPPDATA, 'Yarn') : null;\n}\n\n/***/ }),\n/* 172 */,\n/* 173 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(179), __esModule: true };\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar concatMap = __webpack_require__(178);\nvar balanced = __webpack_require__(174);\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction preserveCamelCase(str) {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst c = str[i];\n\n\t\tif (isLastCharLower && /[a-zA-Z]/.test(c) && c.toUpperCase() === c) {\n\t\t\tstr = str.substr(0, i) + '-' + str.substr(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(c) && c.toLowerCase() === c) {\n\t\t\tstr = str.substr(0, i - 1) + '-' + str.substr(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = c.toLowerCase() === c;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = c.toUpperCase() === c;\n\t\t}\n\t}\n\n\treturn str;\n}\n\nmodule.exports = function (str) {\n\tif (arguments.length > 1) {\n\t\tstr = Array.from(arguments)\n\t\t\t.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tstr = str.trim();\n\t}\n\n\tif (str.length === 0) {\n\t\treturn '';\n\t}\n\n\tif (str.length === 1) {\n\t\treturn str.toLowerCase();\n\t}\n\n\tif (/^[a-z0-9]+$/.test(str)) {\n\t\treturn str;\n\t}\n\n\tconst hasUpperCase = str !== str.toLowerCase();\n\n\tif (hasUpperCase) {\n\t\tstr = preserveCamelCase(str);\n\t}\n\n\treturn str\n\t\t.replace(/^[_.\\- ]+/, '')\n\t\t.toLowerCase()\n\t\t.replace(/[_.\\- ]+(\\w|$)/g, (m, p1) => p1.toUpperCase());\n};\n\n\n/***/ }),\n/* 177 */,\n/* 178 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(205);\n__webpack_require__(207);\n__webpack_require__(210);\n__webpack_require__(206);\n__webpack_require__(208);\n__webpack_require__(209);\nmodule.exports = __webpack_require__(23).Promise;\n\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports) {\n\nmodule.exports = function () { /* empty */ };\n\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(74);\nvar toLength = __webpack_require__(110);\nvar toAbsoluteIndex = __webpack_require__(200);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ctx = __webpack_require__(48);\nvar call = __webpack_require__(187);\nvar isArrayIter = __webpack_require__(186);\nvar anObject = __webpack_require__(27);\nvar toLength = __webpack_require__(110);\nvar getIterFn = __webpack_require__(203);\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(33) && !__webpack_require__(85)(function () {\n return Object.defineProperty(__webpack_require__(68)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports) {\n\n// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// check on default Array iterator\nvar Iterators = __webpack_require__(35);\nvar ITERATOR = __webpack_require__(13)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(27);\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(192);\nvar descriptor = __webpack_require__(106);\nvar setToStringTag = __webpack_require__(71);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(31)(IteratorPrototype, __webpack_require__(13)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ITERATOR = __webpack_require__(13)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n\n\n/***/ }),\n/* 190 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n/***/ }),\n/* 191 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(11);\nvar macrotask = __webpack_require__(109).set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(47)(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n\n\n/***/ }),\n/* 192 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(27);\nvar dPs = __webpack_require__(193);\nvar enumBugKeys = __webpack_require__(101);\nvar IE_PROTO = __webpack_require__(72)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(68)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(102).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n/* 193 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(50);\nvar anObject = __webpack_require__(27);\nvar getKeys = __webpack_require__(132);\n\nmodule.exports = __webpack_require__(33) ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n/***/ }),\n/* 194 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(49);\nvar toObject = __webpack_require__(133);\nvar IE_PROTO = __webpack_require__(72)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n/* 195 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(49);\nvar toIObject = __webpack_require__(74);\nvar arrayIndexOf = __webpack_require__(182)(false);\nvar IE_PROTO = __webpack_require__(72)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n/* 196 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hide = __webpack_require__(31);\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n\n\n/***/ }),\n/* 197 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(31);\n\n\n/***/ }),\n/* 198 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(11);\nvar core = __webpack_require__(23);\nvar dP = __webpack_require__(50);\nvar DESCRIPTORS = __webpack_require__(33);\nvar SPECIES = __webpack_require__(13)('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n\n\n/***/ }),\n/* 199 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(73);\nvar defined = __webpack_require__(67);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n/***/ }),\n/* 200 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(73);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n/* 201 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(34);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n/* 202 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(11);\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n\n\n/***/ }),\n/* 203 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(100);\nvar ITERATOR = __webpack_require__(13)('iterator');\nvar Iterators = __webpack_require__(35);\nmodule.exports = __webpack_require__(23).getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n/* 204 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(180);\nvar step = __webpack_require__(190);\nvar Iterators = __webpack_require__(35);\nvar toIObject = __webpack_require__(74);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(103)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n/* 205 */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n/* 206 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(69);\nvar global = __webpack_require__(11);\nvar ctx = __webpack_require__(48);\nvar classof = __webpack_require__(100);\nvar $export = __webpack_require__(41);\nvar isObject = __webpack_require__(34);\nvar aFunction = __webpack_require__(46);\nvar anInstance = __webpack_require__(181);\nvar forOf = __webpack_require__(183);\nvar speciesConstructor = __webpack_require__(108);\nvar task = __webpack_require__(109).set;\nvar microtask = __webpack_require__(191)();\nvar newPromiseCapabilityModule = __webpack_require__(70);\nvar perform = __webpack_require__(104);\nvar userAgent = __webpack_require__(202);\nvar promiseResolve = __webpack_require__(105);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[__webpack_require__(13)('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = __webpack_require__(196)($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(71)($Promise, PROMISE);\n__webpack_require__(198)(PROMISE);\nWrapper = __webpack_require__(23)[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(189)(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n/* 207 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $at = __webpack_require__(199)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(103)(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n/* 208 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(41);\nvar core = __webpack_require__(23);\nvar global = __webpack_require__(11);\nvar speciesConstructor = __webpack_require__(108);\nvar promiseResolve = __webpack_require__(105);\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n\n\n/***/ }),\n/* 209 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/proposal-promise-try\nvar $export = __webpack_require__(41);\nvar newPromiseCapability = __webpack_require__(70);\nvar perform = __webpack_require__(104);\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n\n\n/***/ }),\n/* 210 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(204);\nvar global = __webpack_require__(11);\nvar hide = __webpack_require__(31);\nvar Iterators = __webpack_require__(35);\nvar TO_STRING_TAG = __webpack_require__(13)('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n\n\n/***/ }),\n/* 211 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = __webpack_require__(112);\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n\n\n/***/ }),\n/* 212 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Detect Electron renderer process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer') {\n module.exports = __webpack_require__(211);\n} else {\n module.exports = __webpack_require__(213);\n}\n\n\n/***/ }),\n/* 213 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Module dependencies.\n */\n\nvar tty = __webpack_require__(79);\nvar util = __webpack_require__(2);\n\n/**\n * This is the Node.js implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = __webpack_require__(112);\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n\n/**\n * Colors.\n */\n\nexports.colors = [ 6, 2, 3, 4, 5, 1 ];\n\ntry {\n var supportsColor = __webpack_require__(239);\n if (supportsColor && supportsColor.level >= 2) {\n exports.colors = [\n 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68,\n 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134,\n 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,\n 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204,\n 205, 206, 207, 208, 209, 214, 215, 220, 221\n ];\n }\n} catch (err) {\n // swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n // camel-case\n var prop = key\n .substring(6)\n .toLowerCase()\n .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });\n\n // coerce string value into JS value\n var val = process.env[key];\n if (/^(yes|on|true|enabled)$/i.test(val)) val = true;\n else if (/^(no|off|false|disabled)$/i.test(val)) val = false;\n else if (val === 'null') val = null;\n else val = Number(val);\n\n obj[prop] = val;\n return obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n return 'colors' in exports.inspectOpts\n ? Boolean(exports.inspectOpts.colors)\n : tty.isatty(process.stderr.fd);\n}\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nexports.formatters.o = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts)\n .split('\\n').map(function(str) {\n return str.trim()\n }).join(' ');\n};\n\n/**\n * Map %o to `util.inspect()`, allowing multiple lines if needed.\n */\n\nexports.formatters.O = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts);\n};\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var name = this.namespace;\n var useColors = this.useColors;\n\n if (useColors) {\n var c = this.color;\n var colorCode = '\\u001b[3' + (c < 8 ? c : '8;5;' + c);\n var prefix = ' ' + colorCode + ';1m' + name + ' ' + '\\u001b[0m';\n\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n args.push(colorCode + 'm+' + exports.humanize(this.diff) + '\\u001b[0m');\n } else {\n args[0] = getDate() + name + ' ' + args[0];\n }\n}\n\nfunction getDate() {\n if (exports.inspectOpts.hideDate) {\n return '';\n } else {\n return new Date().toISOString() + ' ';\n }\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\nfunction log() {\n return process.stderr.write(util.format.apply(util, arguments) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n if (null == namespaces) {\n // If you set a process.env field to null or undefined, it gets cast to the\n // string 'null' or 'undefined'. Just delete instead.\n delete process.env.DEBUG;\n } else {\n process.env.DEBUG = namespaces;\n }\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n return process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init (debug) {\n debug.inspectOpts = {};\n\n var keys = Object.keys(exports.inspectOpts);\n for (var i = 0; i < keys.length; i++) {\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n }\n}\n\n/**\n * Enable namespaces listed in `process.env.DEBUG` initially.\n */\n\nexports.enable(load());\n\n\n/***/ }),\n/* 214 */,\n/* 215 */,\n/* 216 */,\n/* 217 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar pathModule = __webpack_require__(0);\nvar isWindows = process.platform === 'win32';\nvar fs = __webpack_require__(3);\n\n// JavaScript implementation of realpath, ported from node pre-v6\n\nvar DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);\n\nfunction rethrow() {\n // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and\n // is fairly slow to generate.\n var callback;\n if (DEBUG) {\n var backtrace = new Error;\n callback = debugCallback;\n } else\n callback = missingCallback;\n\n return callback;\n\n function debugCallback(err) {\n if (err) {\n backtrace.message = err.message;\n err = backtrace;\n missingCallback(err);\n }\n }\n\n function missingCallback(err) {\n if (err) {\n if (process.throwDeprecation)\n throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs\n else if (!process.noDeprecation) {\n var msg = 'fs: missing callback ' + (err.stack || err.message);\n if (process.traceDeprecation)\n console.trace(msg);\n else\n console.error(msg);\n }\n }\n }\n}\n\nfunction maybeCallback(cb) {\n return typeof cb === 'function' ? cb : rethrow();\n}\n\nvar normalize = pathModule.normalize;\n\n// Regexp that finds the next partion of a (partial) path\n// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']\nif (isWindows) {\n var nextPartRe = /(.*?)(?:[\\/\\\\]+|$)/g;\n} else {\n var nextPartRe = /(.*?)(?:[\\/]+|$)/g;\n}\n\n// Regex to find the device root, including trailing slash. E.g. 'c:\\\\'.\nif (isWindows) {\n var splitRootRe = /^(?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/][^\\\\\\/]+)?[\\\\\\/]*/;\n} else {\n var splitRootRe = /^[\\/]*/;\n}\n\nexports.realpathSync = function realpathSync(p, cache) {\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return cache[p];\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstatSync(base);\n knownHard[base] = true;\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n // NB: p.length changes.\n while (pos < p.length) {\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n continue;\n }\n\n var resolvedLink;\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // some known symbolic link. no need to stat again.\n resolvedLink = cache[base];\n } else {\n var stat = fs.lstatSync(base);\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n continue;\n }\n\n // read the link if it wasn't read before\n // dev/ino always return 0 on windows, so skip the check.\n var linkTarget = null;\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n linkTarget = seenLinks[id];\n }\n }\n if (linkTarget === null) {\n fs.statSync(base);\n linkTarget = fs.readlinkSync(base);\n }\n resolvedLink = pathModule.resolve(previous, linkTarget);\n // track this, if given a cache.\n if (cache) cache[base] = resolvedLink;\n if (!isWindows) seenLinks[id] = linkTarget;\n }\n\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n\n if (cache) cache[original] = p;\n\n return p;\n};\n\n\nexports.realpath = function realpath(p, cache, cb) {\n if (typeof cb !== 'function') {\n cb = maybeCallback(cache);\n cache = null;\n }\n\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return process.nextTick(cb.bind(null, null, cache[p]));\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstat(base, function(err) {\n if (err) return cb(err);\n knownHard[base] = true;\n LOOP();\n });\n } else {\n process.nextTick(LOOP);\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n function LOOP() {\n // stop if scanned past end of path\n if (pos >= p.length) {\n if (cache) cache[original] = p;\n return cb(null, p);\n }\n\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n return process.nextTick(LOOP);\n }\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // known symbolic link. no need to stat again.\n return gotResolvedLink(cache[base]);\n }\n\n return fs.lstat(base, gotStat);\n }\n\n function gotStat(err, stat) {\n if (err) return cb(err);\n\n // if not a symlink, skip to the next path part\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n return process.nextTick(LOOP);\n }\n\n // stat & read the link if not read before\n // call gotTarget as soon as the link target is known\n // dev/ino always return 0 on windows, so skip the check.\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n return gotTarget(null, seenLinks[id], base);\n }\n }\n fs.stat(base, function(err) {\n if (err) return cb(err);\n\n fs.readlink(base, function(err, target) {\n if (!isWindows) seenLinks[id] = target;\n gotTarget(err, target);\n });\n });\n }\n\n function gotTarget(err, target, base) {\n if (err) return cb(err);\n\n var resolvedLink = pathModule.resolve(previous, target);\n if (cache) cache[base] = resolvedLink;\n gotResolvedLink(resolvedLink);\n }\n\n function gotResolvedLink(resolvedLink) {\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n};\n\n\n/***/ }),\n/* 218 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = globSync\nglobSync.GlobSync = GlobSync\n\nvar fs = __webpack_require__(3)\nvar rp = __webpack_require__(114)\nvar minimatch = __webpack_require__(60)\nvar Minimatch = minimatch.Minimatch\nvar Glob = __webpack_require__(75).Glob\nvar util = __webpack_require__(2)\nvar path = __webpack_require__(0)\nvar assert = __webpack_require__(22)\nvar isAbsolute = __webpack_require__(76)\nvar common = __webpack_require__(115)\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nfunction globSync (pattern, options) {\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n return new GlobSync(pattern, options).found\n}\n\nfunction GlobSync (pattern, options) {\n if (!pattern)\n throw new Error('must provide pattern')\n\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n if (!(this instanceof GlobSync))\n return new GlobSync(pattern, options)\n\n setopts(this, pattern, options)\n\n if (this.noprocess)\n return this\n\n var n = this.minimatch.set.length\n this.matches = new Array(n)\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false)\n }\n this._finish()\n}\n\nGlobSync.prototype._finish = function () {\n assert(this instanceof GlobSync)\n if (this.realpath) {\n var self = this\n this.matches.forEach(function (matchset, index) {\n var set = self.matches[index] = Object.create(null)\n for (var p in matchset) {\n try {\n p = self._makeAbs(p)\n var real = rp.realpathSync(p, self.realpathCache)\n set[real] = true\n } catch (er) {\n if (er.syscall === 'stat')\n set[self._makeAbs(p)] = true\n else\n throw er\n }\n }\n })\n }\n common.finish(this)\n}\n\n\nGlobSync.prototype._process = function (pattern, index, inGlobStar) {\n assert(this instanceof GlobSync)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // See if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip processing\n if (childrenIgnored(this, read))\n return\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar)\n}\n\n\nGlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {\n var entries = this._readdir(abs, inGlobStar)\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix.slice(-1) !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix)\n newPattern = [prefix, e]\n else\n newPattern = [e]\n this._process(newPattern.concat(remain), index, inGlobStar)\n }\n}\n\n\nGlobSync.prototype._emitMatch = function (index, e) {\n if (isIgnored(this, e))\n return\n\n var abs = this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute) {\n e = abs\n }\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n if (this.stat)\n this._stat(e)\n}\n\n\nGlobSync.prototype._readdirInGlobStar = function (abs) {\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false)\n\n var entries\n var lstat\n var stat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er.code === 'ENOENT') {\n // lstat failed, doesn't exist\n return null\n }\n }\n\n var isSym = lstat && lstat.isSymbolicLink()\n this.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory())\n this.cache[abs] = 'FILE'\n else\n entries = this._readdir(abs, false)\n\n return entries\n}\n\nGlobSync.prototype._readdir = function (abs, inGlobStar) {\n var entries\n\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return null\n\n if (Array.isArray(c))\n return c\n }\n\n try {\n return this._readdirEntries(abs, fs.readdirSync(abs))\n } catch (er) {\n this._readdirError(abs, er)\n return null\n }\n}\n\nGlobSync.prototype._readdirEntries = function (abs, entries) {\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n\n // mark and cache dir-ness\n return entries\n}\n\nGlobSync.prototype._readdirError = function (f, er) {\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n throw error\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict)\n throw er\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n}\n\nGlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {\n\n var entries = this._readdir(abs, inGlobStar)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false)\n\n var len = entries.length\n var isSym = this.symlinks[abs]\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true)\n }\n}\n\nGlobSync.prototype._processSimple = function (prefix, index) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var exists = this._stat(prefix)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlobSync.prototype._stat = function (f) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return false\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return c\n\n if (needDir && c === 'FILE')\n return false\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (!stat) {\n var lstat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return false\n }\n }\n\n if (lstat && lstat.isSymbolicLink()) {\n try {\n stat = fs.statSync(abs)\n } catch (er) {\n stat = lstat\n }\n } else {\n stat = lstat\n }\n }\n\n this.statCache[abs] = stat\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return false\n\n return c\n}\n\nGlobSync.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlobSync.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n\n\n/***/ }),\n/* 219 */,\n/* 220 */,\n/* 221 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nmodule.exports = function (flag, argv) {\n\targv = argv || process.argv;\n\n\tvar terminatorPos = argv.indexOf('--');\n\tvar prefix = /^--/.test(flag) ? '' : '--';\n\tvar pos = argv.indexOf(prefix + flag);\n\n\treturn pos !== -1 && (terminatorPos !== -1 ? pos < terminatorPos : true);\n};\n\n\n/***/ }),\n/* 222 */,\n/* 223 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wrappy = __webpack_require__(123)\nvar reqs = Object.create(null)\nvar once = __webpack_require__(61)\n\nmodule.exports = wrappy(inflight)\n\nfunction inflight (key, cb) {\n if (reqs[key]) {\n reqs[key].push(cb)\n return null\n } else {\n reqs[key] = [cb]\n return makeres(key)\n }\n}\n\nfunction makeres (key) {\n return once(function RES () {\n var cbs = reqs[key]\n var len = cbs.length\n var args = slice(arguments)\n\n // XXX It's somewhat ambiguous whether a new callback added in this\n // pass should be queued for later execution if something in the\n // list of callbacks throws, or if it should just be discarded.\n // However, it's such an edge case that it hardly matters, and either\n // choice is likely as surprising as the other.\n // As it happens, we do go ahead and schedule it for later execution.\n try {\n for (var i = 0; i < len; i++) {\n cbs[i].apply(null, args)\n }\n } finally {\n if (cbs.length > len) {\n // added more in the interim.\n // de-zalgo, just in case, but don't call again.\n cbs.splice(0, len)\n process.nextTick(function () {\n RES.apply(null, args)\n })\n } else {\n delete reqs[key]\n }\n }\n })\n}\n\nfunction slice (args) {\n var length = args.length\n var array = []\n\n for (var i = 0; i < length; i++) array[i] = args[i]\n return array\n}\n\n\n/***/ }),\n/* 224 */\n/***/ (function(module, exports) {\n\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(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 };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n/***/ }),\n/* 225 */,\n/* 226 */,\n/* 227 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// @flow\n\n/*::\ndeclare var __webpack_require__: mixed;\n*/\n\nmodule.exports = typeof __webpack_require__ !== \"undefined\";\n\n\n/***/ }),\n/* 228 */,\n/* 229 */\n/***/ (function(module, exports) {\n\n/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n\n\n/***/ }),\n/* 230 */,\n/* 231 */,\n/* 232 */,\n/* 233 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = rimraf\nrimraf.sync = rimrafSync\n\nvar assert = __webpack_require__(22)\nvar path = __webpack_require__(0)\nvar fs = __webpack_require__(3)\nvar glob = __webpack_require__(75)\nvar _0666 = parseInt('666', 8)\n\nvar defaultGlobOpts = {\n nosort: true,\n silent: true\n}\n\n// for EMFILE handling\nvar timeout = 0\n\nvar isWindows = (process.platform === \"win32\")\n\nfunction defaults (options) {\n var methods = [\n 'unlink',\n 'chmod',\n 'stat',\n 'lstat',\n 'rmdir',\n 'readdir'\n ]\n methods.forEach(function(m) {\n options[m] = options[m] || fs[m]\n m = m + 'Sync'\n options[m] = options[m] || fs[m]\n })\n\n options.maxBusyTries = options.maxBusyTries || 3\n options.emfileWait = options.emfileWait || 1000\n if (options.glob === false) {\n options.disableGlob = true\n }\n options.disableGlob = options.disableGlob || false\n options.glob = options.glob || defaultGlobOpts\n}\n\nfunction rimraf (p, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert.equal(typeof cb, 'function', 'rimraf: callback function required')\n assert(options, 'rimraf: invalid options argument provided')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n defaults(options)\n\n var busyTries = 0\n var errState = null\n var n = 0\n\n if (options.disableGlob || !glob.hasMagic(p))\n return afterGlob(null, [p])\n\n options.lstat(p, function (er, stat) {\n if (!er)\n return afterGlob(null, [p])\n\n glob(p, options.glob, afterGlob)\n })\n\n function next (er) {\n errState = errState || er\n if (--n === 0)\n cb(errState)\n }\n\n function afterGlob (er, results) {\n if (er)\n return cb(er)\n\n n = results.length\n if (n === 0)\n return cb()\n\n results.forEach(function (p) {\n rimraf_(p, options, function CB (er) {\n if (er) {\n if ((er.code === \"EBUSY\" || er.code === \"ENOTEMPTY\" || er.code === \"EPERM\") &&\n busyTries < options.maxBusyTries) {\n busyTries ++\n var time = busyTries * 100\n // try again, with the same exact callback as this one.\n return setTimeout(function () {\n rimraf_(p, options, CB)\n }, time)\n }\n\n // this one won't happen if graceful-fs is used.\n if (er.code === \"EMFILE\" && timeout < options.emfileWait) {\n return setTimeout(function () {\n rimraf_(p, options, CB)\n }, timeout ++)\n }\n\n // already gone\n if (er.code === \"ENOENT\") er = null\n }\n\n timeout = 0\n next(er)\n })\n })\n }\n}\n\n// Two possible strategies.\n// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR\n// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR\n//\n// Both result in an extra syscall when you guess wrong. However, there\n// are likely far more normal files in the world than directories. This\n// is based on the assumption that a the average number of files per\n// directory is >= 1.\n//\n// If anyone ever complains about this, then I guess the strategy could\n// be made configurable somehow. But until then, YAGNI.\nfunction rimraf_ (p, options, cb) {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // sunos lets the root user unlink directories, which is... weird.\n // so we have to lstat here and make sure it's not a dir.\n options.lstat(p, function (er, st) {\n if (er && er.code === \"ENOENT\")\n return cb(null)\n\n // Windows can EPERM on stat. Life is suffering.\n if (er && er.code === \"EPERM\" && isWindows)\n fixWinEPERM(p, options, er, cb)\n\n if (st && st.isDirectory())\n return rmdir(p, options, er, cb)\n\n options.unlink(p, function (er) {\n if (er) {\n if (er.code === \"ENOENT\")\n return cb(null)\n if (er.code === \"EPERM\")\n return (isWindows)\n ? fixWinEPERM(p, options, er, cb)\n : rmdir(p, options, er, cb)\n if (er.code === \"EISDIR\")\n return rmdir(p, options, er, cb)\n }\n return cb(er)\n })\n })\n}\n\nfunction fixWinEPERM (p, options, er, cb) {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n if (er)\n assert(er instanceof Error)\n\n options.chmod(p, _0666, function (er2) {\n if (er2)\n cb(er2.code === \"ENOENT\" ? null : er)\n else\n options.stat(p, function(er3, stats) {\n if (er3)\n cb(er3.code === \"ENOENT\" ? null : er)\n else if (stats.isDirectory())\n rmdir(p, options, er, cb)\n else\n options.unlink(p, cb)\n })\n })\n}\n\nfunction fixWinEPERMSync (p, options, er) {\n assert(p)\n assert(options)\n if (er)\n assert(er instanceof Error)\n\n try {\n options.chmodSync(p, _0666)\n } catch (er2) {\n if (er2.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n try {\n var stats = options.statSync(p)\n } catch (er3) {\n if (er3.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n if (stats.isDirectory())\n rmdirSync(p, options, er)\n else\n options.unlinkSync(p)\n}\n\nfunction rmdir (p, options, originalEr, cb) {\n assert(p)\n assert(options)\n if (originalEr)\n assert(originalEr instanceof Error)\n assert(typeof cb === 'function')\n\n // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)\n // if we guessed wrong, and it's not a directory, then\n // raise the original error.\n options.rmdir(p, function (er) {\n if (er && (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\"))\n rmkids(p, options, cb)\n else if (er && er.code === \"ENOTDIR\")\n cb(originalEr)\n else\n cb(er)\n })\n}\n\nfunction rmkids(p, options, cb) {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.readdir(p, function (er, files) {\n if (er)\n return cb(er)\n var n = files.length\n if (n === 0)\n return options.rmdir(p, cb)\n var errState\n files.forEach(function (f) {\n rimraf(path.join(p, f), options, function (er) {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (--n === 0)\n options.rmdir(p, cb)\n })\n })\n })\n}\n\n// this looks simpler, and is strictly *faster*, but will\n// tie up the JavaScript thread and fail on excessively\n// deep directory trees.\nfunction rimrafSync (p, options) {\n options = options || {}\n defaults(options)\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert(options, 'rimraf: missing options')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n var results\n\n if (options.disableGlob || !glob.hasMagic(p)) {\n results = [p]\n } else {\n try {\n options.lstatSync(p)\n results = [p]\n } catch (er) {\n results = glob.sync(p, options.glob)\n }\n }\n\n if (!results.length)\n return\n\n for (var i = 0; i < results.length; i++) {\n var p = results[i]\n\n try {\n var st = options.lstatSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n\n // Windows can EPERM on stat. Life is suffering.\n if (er.code === \"EPERM\" && isWindows)\n fixWinEPERMSync(p, options, er)\n }\n\n try {\n // sunos lets the root user unlink directories, which is... weird.\n if (st && st.isDirectory())\n rmdirSync(p, options, null)\n else\n options.unlinkSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"EPERM\")\n return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)\n if (er.code !== \"EISDIR\")\n throw er\n\n rmdirSync(p, options, er)\n }\n }\n}\n\nfunction rmdirSync (p, options, originalEr) {\n assert(p)\n assert(options)\n if (originalEr)\n assert(originalEr instanceof Error)\n\n try {\n options.rmdirSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"ENOTDIR\")\n throw originalEr\n if (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\")\n rmkidsSync(p, options)\n }\n}\n\nfunction rmkidsSync (p, options) {\n assert(p)\n assert(options)\n options.readdirSync(p).forEach(function (f) {\n rimrafSync(path.join(p, f), options)\n })\n\n // We only end up here once we got ENOTEMPTY at least once, and\n // at this point, we are guaranteed to have removed all the kids.\n // So, we know that it won't be ENOENT or ENOTDIR or anything else.\n // try really hard to delete stuff on windows, because it has a\n // PROFOUNDLY annoying habit of not closing handles promptly when\n // files are deleted, resulting in spurious ENOTEMPTY errors.\n var retries = isWindows ? 100 : 1\n var i = 0\n do {\n var threw = true\n try {\n var ret = options.rmdirSync(p, options)\n threw = false\n return ret\n } finally {\n if (++i < retries && threw)\n continue\n }\n } while (true)\n}\n\n\n/***/ }),\n/* 234 */,\n/* 235 */,\n/* 236 */,\n/* 237 */,\n/* 238 */,\n/* 239 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar hasFlag = __webpack_require__(221);\n\nvar support = function (level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel: level,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n};\n\nvar supportLevel = (function () {\n\tif (hasFlag('no-color') ||\n\t\thasFlag('no-colors') ||\n\t\thasFlag('color=false')) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (hasFlag('color') ||\n\t\thasFlag('colors') ||\n\t\thasFlag('color=true') ||\n\t\thasFlag('color=always')) {\n\t\treturn 1;\n\t}\n\n\tif (process.stdout && !process.stdout.isTTY) {\n\t\treturn 0;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn 1;\n\t}\n\n\tif ('CI' in process.env) {\n\t\tif ('TRAVIS' in process.env || process.env.CI === 'Travis') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\tif ('TEAMCITY_VERSION' in process.env) {\n\t\treturn process.env.TEAMCITY_VERSION.match(/^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/) === null ? 0 : 1;\n\t}\n\n\tif (/^(screen|xterm)-256(?:color)?/.test(process.env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in process.env) {\n\t\treturn 1;\n\t}\n\n\tif (process.env.TERM === 'dumb') {\n\t\treturn 0;\n\t}\n\n\treturn 0;\n})();\n\nif (supportLevel === 0 && 'FORCE_COLOR' in process.env) {\n\tsupportLevel = 1;\n}\n\nmodule.exports = process && support(supportLevel);\n\n\n/***/ })\n/******/ ]);","'use strict';\nconst indentString = require('indent-string');\nconst cleanStack = require('clean-stack');\n\nconst cleanInternalStack = stack => stack.replace(/\\s+at .*aggregate-error\\/index.js:\\d+:\\d+\\)?/g, '');\n\nclass AggregateError extends Error {\n\tconstructor(errors) {\n\t\tif (!Array.isArray(errors)) {\n\t\t\tthrow new TypeError(`Expected input to be an Array, got ${typeof errors}`);\n\t\t}\n\n\t\terrors = [...errors].map(error => {\n\t\t\tif (error instanceof Error) {\n\t\t\t\treturn error;\n\t\t\t}\n\n\t\t\tif (error !== null && typeof error === 'object') {\n\t\t\t\t// Handle plain error objects with message property and/or possibly other metadata\n\t\t\t\treturn Object.assign(new Error(error.message), error);\n\t\t\t}\n\n\t\t\treturn new Error(error);\n\t\t});\n\n\t\tlet message = errors\n\t\t\t.map(error => {\n\t\t\t\t// The `stack` property is not standardized, so we can't assume it exists\n\t\t\t\treturn typeof error.stack === 'string' ? cleanInternalStack(cleanStack(error.stack)) : String(error);\n\t\t\t})\n\t\t\t.join('\\n');\n\t\tmessage = '\\n' + indentString(message, 4);\n\t\tsuper(message);\n\n\t\tthis.name = 'AggregateError';\n\n\t\tObject.defineProperty(this, '_errors', {value: errors});\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const error of this._errors) {\n\t\t\tyield error;\n\t\t}\n\t}\n}\n\nmodule.exports = AggregateError;\n","'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n","'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict';\n\nconst arrayDiffer = (array, ...values) => {\n\tconst rest = new Set([].concat(...values));\n\treturn array.filter(element => !rest.has(element));\n};\n\nmodule.exports = arrayDiffer;\n","'use strict';\n\nmodule.exports = (...arguments_) => {\n\treturn [...new Set([].concat(...arguments_))];\n};\n","'use strict';\n\nconst arrify = value => {\n\tif (value === null || value === undefined) {\n\t\treturn [];\n\t}\n\n\tif (Array.isArray(value)) {\n\t\treturn value;\n\t}\n\n\tif (typeof value === 'string') {\n\t\treturn [value];\n\t}\n\n\tif (typeof value[Symbol.iterator] === 'function') {\n\t\treturn [...value];\n\t}\n\n\treturn [value];\n};\n\nmodule.exports = arrify;\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n if(a===b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n let output = [];\n\n if (Array.isArray(input)) {\n for (const pattern of input) {\n const result = braces.create(pattern, options);\n if (Array.isArray(result)) {\n output.push(...result);\n } else {\n output.push(result);\n }\n }\n } else {\n output = [].concat(braces.create(input, options));\n }\n\n if (options && options.expand === true && options.nodupes === true) {\n output = [...new Set(output)];\n }\n return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n if (typeof input === 'string') {\n return stringify(braces.parse(input, options), options);\n }\n return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n\n let result = expand(input, options);\n\n // filter out empty strings if specified\n if (options.noempty === true) {\n result = result.filter(Boolean);\n }\n\n // filter out duplicates if specified\n if (options.nodupes === true) {\n result = [...new Set(result)];\n }\n\n return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n if (input === '' || input.length < 3) {\n return [input];\n }\n\n return options.expand !== true\n ? braces.compile(input, options)\n : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n","'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n const walk = (node, parent = {}) => {\n const invalidBlock = utils.isInvalidBrace(parent);\n const invalidNode = node.invalid === true && options.escapeInvalid === true;\n const invalid = invalidBlock === true || invalidNode === true;\n const prefix = options.escapeInvalid === true ? '\\\\' : '';\n let output = '';\n\n if (node.isOpen === true) {\n return prefix + node.value;\n }\n\n if (node.isClose === true) {\n console.log('node.isClose', prefix, node.value);\n return prefix + node.value;\n }\n\n if (node.type === 'open') {\n return invalid ? prefix + node.value : '(';\n }\n\n if (node.type === 'close') {\n return invalid ? prefix + node.value : ')';\n }\n\n if (node.type === 'comma') {\n return node.prev.type === 'comma' ? '' : invalid ? node.value : '|';\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes && node.ranges > 0) {\n const args = utils.reduce(node.nodes);\n const range = fill(...args, { ...options, wrap: false, toRegex: true, strictZeros: true });\n\n if (range.length !== 0) {\n return args.length > 1 && range.length > 1 ? `(${range})` : range;\n }\n }\n\n if (node.nodes) {\n for (const child of node.nodes) {\n output += walk(child, node);\n }\n }\n\n return output;\n };\n\n return walk(ast);\n};\n\nmodule.exports = compile;\n","'use strict';\n\nmodule.exports = {\n MAX_LENGTH: 10000,\n\n // Digits\n CHAR_0: '0', /* 0 */\n CHAR_9: '9', /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 'A', /* A */\n CHAR_LOWERCASE_A: 'a', /* a */\n CHAR_UPPERCASE_Z: 'Z', /* Z */\n CHAR_LOWERCASE_Z: 'z', /* z */\n\n CHAR_LEFT_PARENTHESES: '(', /* ( */\n CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n CHAR_ASTERISK: '*', /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: '&', /* & */\n CHAR_AT: '@', /* @ */\n CHAR_BACKSLASH: '\\\\', /* \\ */\n CHAR_BACKTICK: '`', /* ` */\n CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n CHAR_COLON: ':', /* : */\n CHAR_COMMA: ',', /* , */\n CHAR_DOLLAR: '$', /* . */\n CHAR_DOT: '.', /* . */\n CHAR_DOUBLE_QUOTE: '\"', /* \" */\n CHAR_EQUAL: '=', /* = */\n CHAR_EXCLAMATION_MARK: '!', /* ! */\n CHAR_FORM_FEED: '\\f', /* \\f */\n CHAR_FORWARD_SLASH: '/', /* / */\n CHAR_HASH: '#', /* # */\n CHAR_HYPHEN_MINUS: '-', /* - */\n CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n CHAR_LEFT_CURLY_BRACE: '{', /* { */\n CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n CHAR_LINE_FEED: '\\n', /* \\n */\n CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n CHAR_PERCENT: '%', /* % */\n CHAR_PLUS: '+', /* + */\n CHAR_QUESTION_MARK: '?', /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n CHAR_SEMICOLON: ';', /* ; */\n CHAR_SINGLE_QUOTE: '\\'', /* ' */\n CHAR_SPACE: ' ', /* */\n CHAR_TAB: '\\t', /* \\t */\n CHAR_UNDERSCORE: '_', /* _ */\n CHAR_VERTICAL_LINE: '|', /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n","'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n const result = [];\n\n queue = [].concat(queue);\n stash = [].concat(stash);\n\n if (!stash.length) return queue;\n if (!queue.length) {\n return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n }\n\n for (const item of queue) {\n if (Array.isArray(item)) {\n for (const value of item) {\n result.push(append(value, stash, enclose));\n }\n } else {\n for (let ele of stash) {\n if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele);\n }\n }\n }\n return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n const rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit;\n\n const walk = (node, parent = {}) => {\n node.queue = [];\n\n let p = parent;\n let q = parent.queue;\n\n while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n p = p.parent;\n q = p.queue;\n }\n\n if (node.invalid || node.dollar) {\n q.push(append(q.pop(), stringify(node, options)));\n return;\n }\n\n if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n q.push(append(q.pop(), ['{}']));\n return;\n }\n\n if (node.nodes && node.ranges > 0) {\n const args = utils.reduce(node.nodes);\n\n if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n }\n\n let range = fill(...args, options);\n if (range.length === 0) {\n range = stringify(node, options);\n }\n\n q.push(append(q.pop(), range));\n node.nodes = [];\n return;\n }\n\n const enclose = utils.encloseBrace(node);\n let queue = node.queue;\n let block = node;\n\n while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n block = block.parent;\n queue = block.queue;\n }\n\n for (let i = 0; i < node.nodes.length; i++) {\n const child = node.nodes[i];\n\n if (child.type === 'comma' && node.type === 'brace') {\n if (i === 1) queue.push('');\n queue.push('');\n continue;\n }\n\n if (child.type === 'close') {\n q.push(append(q.pop(), queue, enclose));\n continue;\n }\n\n if (child.value && child.type !== 'open') {\n queue.push(append(queue.pop(), child.value));\n continue;\n }\n\n if (child.nodes) {\n walk(child, node);\n }\n }\n\n return queue;\n };\n\n return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n","'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n CHAR_BACKSLASH, /* \\ */\n CHAR_BACKTICK, /* ` */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n CHAR_DOUBLE_QUOTE, /* \" */\n CHAR_SINGLE_QUOTE, /* ' */\n CHAR_NO_BREAK_SPACE,\n CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n const opts = options || {};\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n if (input.length > max) {\n throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n }\n\n const ast = { type: 'root', input, nodes: [] };\n const stack = [ast];\n let block = ast;\n let prev = ast;\n let brackets = 0;\n const length = input.length;\n let index = 0;\n let depth = 0;\n let value;\n\n /**\n * Helpers\n */\n\n const advance = () => input[index++];\n const push = node => {\n if (node.type === 'text' && prev.type === 'dot') {\n prev.type = 'text';\n }\n\n if (prev && prev.type === 'text' && node.type === 'text') {\n prev.value += node.value;\n return;\n }\n\n block.nodes.push(node);\n node.parent = block;\n node.prev = prev;\n prev = node;\n return node;\n };\n\n push({ type: 'bos' });\n\n while (index < length) {\n block = stack[stack.length - 1];\n value = advance();\n\n /**\n * Invalid chars\n */\n\n if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n continue;\n }\n\n /**\n * Escaped chars\n */\n\n if (value === CHAR_BACKSLASH) {\n push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n continue;\n }\n\n /**\n * Right square bracket (literal): ']'\n */\n\n if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n push({ type: 'text', value: '\\\\' + value });\n continue;\n }\n\n /**\n * Left square bracket: '['\n */\n\n if (value === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n\n let next;\n\n while (index < length && (next = advance())) {\n value += next;\n\n if (next === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n continue;\n }\n\n if (next === CHAR_BACKSLASH) {\n value += advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n brackets--;\n\n if (brackets === 0) {\n break;\n }\n }\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === CHAR_LEFT_PARENTHESES) {\n block = push({ type: 'paren', nodes: [] });\n stack.push(block);\n push({ type: 'text', value });\n continue;\n }\n\n if (value === CHAR_RIGHT_PARENTHESES) {\n if (block.type !== 'paren') {\n push({ type: 'text', value });\n continue;\n }\n block = stack.pop();\n push({ type: 'text', value });\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Quotes: '|\"|`\n */\n\n if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n const open = value;\n let next;\n\n if (options.keepQuotes !== true) {\n value = '';\n }\n\n while (index < length && (next = advance())) {\n if (next === CHAR_BACKSLASH) {\n value += next + advance();\n continue;\n }\n\n if (next === open) {\n if (options.keepQuotes === true) value += next;\n break;\n }\n\n value += next;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Left curly brace: '{'\n */\n\n if (value === CHAR_LEFT_CURLY_BRACE) {\n depth++;\n\n const dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n const brace = {\n type: 'brace',\n open: true,\n close: false,\n dollar,\n depth,\n commas: 0,\n ranges: 0,\n nodes: []\n };\n\n block = push(brace);\n stack.push(block);\n push({ type: 'open', value });\n continue;\n }\n\n /**\n * Right curly brace: '}'\n */\n\n if (value === CHAR_RIGHT_CURLY_BRACE) {\n if (block.type !== 'brace') {\n push({ type: 'text', value });\n continue;\n }\n\n const type = 'close';\n block = stack.pop();\n block.close = true;\n\n push({ type, value });\n depth--;\n\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Comma: ','\n */\n\n if (value === CHAR_COMMA && depth > 0) {\n if (block.ranges > 0) {\n block.ranges = 0;\n const open = block.nodes.shift();\n block.nodes = [open, { type: 'text', value: stringify(block) }];\n }\n\n push({ type: 'comma', value });\n block.commas++;\n continue;\n }\n\n /**\n * Dot: '.'\n */\n\n if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n const siblings = block.nodes;\n\n if (depth === 0 || siblings.length === 0) {\n push({ type: 'text', value });\n continue;\n }\n\n if (prev.type === 'dot') {\n block.range = [];\n prev.value += value;\n prev.type = 'range';\n\n if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n block.invalid = true;\n block.ranges = 0;\n prev.type = 'text';\n continue;\n }\n\n block.ranges++;\n block.args = [];\n continue;\n }\n\n if (prev.type === 'range') {\n siblings.pop();\n\n const before = siblings[siblings.length - 1];\n before.value += prev.value + value;\n prev = before;\n block.ranges--;\n continue;\n }\n\n push({ type: 'dot', value });\n continue;\n }\n\n /**\n * Text\n */\n\n push({ type: 'text', value });\n }\n\n // Mark imbalanced braces and brackets as invalid\n do {\n block = stack.pop();\n\n if (block.type !== 'root') {\n block.nodes.forEach(node => {\n if (!node.nodes) {\n if (node.type === 'open') node.isOpen = true;\n if (node.type === 'close') node.isClose = true;\n if (!node.nodes) node.type = 'text';\n node.invalid = true;\n }\n });\n\n // get the location of the block on parent.nodes (block's siblings)\n const parent = stack[stack.length - 1];\n const index = parent.nodes.indexOf(block);\n // replace the (invalid) block with it's nodes\n parent.nodes.splice(index, 1, ...block.nodes);\n }\n } while (stack.length > 0);\n\n push({ type: 'eos' });\n return ast;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n const stringify = (node, parent = {}) => {\n const invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n const invalidNode = node.invalid === true && options.escapeInvalid === true;\n let output = '';\n\n if (node.value) {\n if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n return '\\\\' + node.value;\n }\n return node.value;\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes) {\n for (const child of node.nodes) {\n output += stringify(child);\n }\n }\n return output;\n };\n\n return stringify(ast);\n};\n\n","'use strict';\n\nexports.isInteger = num => {\n if (typeof num === 'number') {\n return Number.isInteger(num);\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isInteger(Number(num));\n }\n return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n if (limit === false) return false;\n if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n const node = block.nodes[n];\n if (!node) return;\n\n if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n if (node.escaped !== true) {\n node.value = '\\\\' + node.value;\n node.escaped = true;\n }\n }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n if (node.type !== 'brace') return false;\n if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n node.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n if (block.type !== 'brace') return false;\n if (block.invalid === true || block.dollar) return true;\n if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n block.invalid = true;\n return true;\n }\n if (block.open !== true || block.close !== true) {\n block.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n if (node.type === 'open' || node.type === 'close') {\n return true;\n }\n return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n if (node.type === 'text') acc.push(node.value);\n if (node.type === 'range') node.type = 'text';\n return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n const result = [];\n\n const flat = arr => {\n for (let i = 0; i < arr.length; i++) {\n const ele = arr[i];\n\n if (Array.isArray(ele)) {\n flat(ele);\n continue;\n }\n\n if (ele !== undefined) {\n result.push(ele);\n }\n }\n return result;\n };\n\n flat(args);\n return result;\n};\n","'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n","'use strict';\nconst os = require('os');\n\nconst extractPathRegex = /\\s+at.*(?:\\(|\\s)(.*)\\)?/;\nconst pathRegex = /^(?:(?:(?:node|(?:internal\\/[\\w/]*|.*node_modules\\/(?:babel-polyfill|pirates)\\/.*)?\\w+)\\.js:\\d+:\\d+)|native)/;\nconst homeDir = typeof os.homedir === 'undefined' ? '' : os.homedir();\n\nmodule.exports = (stack, options) => {\n\toptions = Object.assign({pretty: false}, options);\n\n\treturn stack.replace(/\\\\/g, '/')\n\t\t.split('\\n')\n\t\t.filter(line => {\n\t\t\tconst pathMatches = line.match(extractPathRegex);\n\t\t\tif (pathMatches === null || !pathMatches[1]) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst match = pathMatches[1];\n\n\t\t\t// Electron\n\t\t\tif (\n\t\t\t\tmatch.includes('.app/Contents/Resources/electron.asar') ||\n\t\t\t\tmatch.includes('.app/Contents/Resources/default_app.asar')\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn !pathRegex.test(match);\n\t\t})\n\t\t.filter(line => line.trim() !== '')\n\t\t.map(line => {\n\t\t\tif (options.pretty) {\n\t\t\t\treturn line.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, '~')));\n\t\t\t}\n\n\t\t\treturn line;\n\t\t})\n\t\t.join('\\n');\n};\n","'use strict';\nconst restoreCursor = require('restore-cursor');\n\nlet isHidden = false;\n\nexports.show = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\tisHidden = false;\n\twritableStream.write('\\u001B[?25h');\n};\n\nexports.hide = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\trestoreCursor();\n\tisHidden = true;\n\twritableStream.write('\\u001B[?25l');\n};\n\nexports.toggle = (force, writableStream) => {\n\tif (force !== undefined) {\n\t\tisHidden = force;\n\t}\n\n\tif (isHidden) {\n\t\texports.show(writableStream);\n\t} else {\n\t\texports.hide(writableStream);\n\t}\n};\n","'use strict';\n\nconst spinners = Object.assign({}, require('./spinners.json')); // eslint-disable-line import/extensions\n\nconst spinnersList = Object.keys(spinners);\n\nObject.defineProperty(spinners, 'random', {\n\tget() {\n\t\tconst randomIndex = Math.floor(Math.random() * spinnersList.length);\n\t\tconst spinnerName = spinnersList[randomIndex];\n\t\treturn spinners[spinnerName];\n\t}\n});\n\nmodule.exports = spinners;\n","// On windows, create a .cmd file.\n// Read the #! in the file to see what it uses. The vast majority\n// of the time, this will be either:\n// \"#!/usr/bin/env \"\n// or:\n// \"#! \"\n//\n// Write a binroot/pkg.bin + \".cmd\" file that has this line in it:\n// @ %~dp0 %*\n\nmodule.exports = cmdShim\ncmdShim.ifExists = cmdShimIfExists\n\nvar fs = require(\"graceful-fs\")\n\nvar mkdir = require(\"mkdirp\")\n , path = require(\"path\")\n , toBatchSyntax = require(\"./lib/to-batch-syntax\")\n , shebangExpr = /^#\\!\\s*(?:\\/usr\\/bin\\/env)?\\s*([^ \\t]+=[^ \\t]+\\s+)*\\s*([^ \\t]+)(.*)$/\n\nfunction cmdShimIfExists (from, to, cb) {\n fs.stat(from, function (er) {\n if (er) return cb()\n cmdShim(from, to, cb)\n })\n}\n\n// Try to unlink, but ignore errors.\n// Any problems will surface later.\nfunction rm (path, cb) {\n fs.unlink(path, function(er) {\n cb()\n })\n}\n\nfunction cmdShim (from, to, cb) {\n fs.stat(from, function (er, stat) {\n if (er)\n return cb(er)\n\n cmdShim_(from, to, cb)\n })\n}\n\nfunction cmdShim_ (from, to, cb) {\n var then = times(2, next, cb)\n rm(to, then)\n rm(to + \".cmd\", then)\n\n function next(er) {\n writeShim(from, to, cb)\n }\n}\n\nfunction writeShim (from, to, cb) {\n // make a cmd file and a sh script\n // First, check if the bin is a #! of some sort.\n // If not, then assume it's something that'll be compiled, or some other\n // sort of script, and just call it directly.\n mkdir(path.dirname(to), function (er) {\n if (er)\n return cb(er)\n fs.readFile(from, \"utf8\", function (er, data) {\n if (er) return writeShim_(from, to, null, null, cb)\n var firstLine = data.trim().split(/\\r*\\n/)[0]\n , shebang = firstLine.match(shebangExpr)\n if (!shebang) return writeShim_(from, to, null, null, null, cb)\n var vars = shebang[1] || \"\"\n , prog = shebang[2]\n , args = shebang[3] || \"\"\n return writeShim_(from, to, prog, args, vars, cb)\n })\n })\n}\n\n\nfunction writeShim_ (from, to, prog, args, variables, cb) {\n var shTarget = path.relative(path.dirname(to), from)\n , target = shTarget.split(\"/\").join(\"\\\\\")\n , longProg\n , shProg = prog && prog.split(\"\\\\\").join(\"/\")\n , shLongProg\n , pwshProg = shProg && \"\\\"\" + shProg + \"$exe\\\"\"\n , pwshLongProg\n shTarget = shTarget.split(\"\\\\\").join(\"/\")\n args = args || \"\"\n variables = variables || \"\"\n if (!prog) {\n prog = \"\\\"%~dp0\\\\\" + target + \"\\\"\"\n shProg = \"\\\"$basedir/\" + shTarget + \"\\\"\"\n pwshProg = shProg\n args = \"\"\n target = \"\"\n shTarget = \"\"\n } else {\n longProg = \"\\\"%~dp0\\\\\" + prog + \".exe\\\"\"\n shLongProg = \"\\\"$basedir/\" + prog + \"\\\"\"\n pwshLongProg = \"\\\"$basedir/\" + prog + \"$exe\\\"\"\n target = \"\\\"%~dp0\\\\\" + target + \"\\\"\"\n shTarget = \"\\\"$basedir/\" + shTarget + \"\\\"\"\n }\n\n // @SETLOCAL\n //\n // @IF EXIST \"%~dp0\\node.exe\" (\n // @SET \"_prog=%~dp0\\node.exe\"\n // ) ELSE (\n // @SET \"_prog=node\"\n // @SET PATHEXT=%PATHEXT:;.JS;=;%\n // )\n //\n // \"%_prog%\" \"%~dp0\\.\\node_modules\\npm\\bin\\npm-cli.js\" %*\n // @ENDLOCAL\n var cmd\n if (longProg) {\n shLongProg = shLongProg.trim();\n args = args.trim();\n var variableDeclarationsAsBatch = toBatchSyntax.convertToSetCommands(variables)\n cmd = \"@SETLOCAL\\r\\n\"\n + variableDeclarationsAsBatch\n + \"\\r\\n\"\n + \"@IF EXIST \" + longProg + \" (\\r\\n\"\n + \" @SET \\\"_prog=\" + longProg.replace(/(^\")|(\"$)/g, '') + \"\\\"\\r\\n\"\n + \") ELSE (\\r\\n\"\n + \" @SET \\\"_prog=\" + prog.replace(/(^\")|(\"$)/g, '') + \"\\\"\\r\\n\"\n + \" @SET PATHEXT=%PATHEXT:;.JS;=;%\\r\\n\"\n + \")\\r\\n\"\n + \"\\r\\n\"\n + \"\\\"%_prog%\\\" \" + args + \" \" + target + \" %*\\r\\n\"\n + '@ENDLOCAL\\r\\n'\n } else {\n cmd = \"@\" + prog + \" \" + args + \" \" + target + \" %*\\r\\n\"\n }\n\n // #!/bin/sh\n // basedir=`dirname \"$0\"`\n //\n // case `uname` in\n // *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w \"$basedir\"`;;\n // esac\n //\n // if [ -x \"$basedir/node.exe\" ]; then\n // \"$basedir/node.exe\" \"$basedir/node_modules/npm/bin/npm-cli.js\" \"$@\"\n // ret=$?\n // else\n // node \"$basedir/node_modules/npm/bin/npm-cli.js\" \"$@\"\n // ret=$?\n // fi\n // exit $ret\n\n var sh = \"#!/bin/sh\\n\"\n\n sh = sh\n + \"basedir=$(dirname \\\"$(echo \\\"$0\\\" | sed -e 's,\\\\\\\\,/,g')\\\")\\n\"\n + \"\\n\"\n + \"case `uname` in\\n\"\n + \" *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w \\\"$basedir\\\"`;;\\n\"\n + \"esac\\n\"\n + \"\\n\"\n\n if (shLongProg) {\n sh = sh\n + \"if [ -x \"+shLongProg+\" ]; then\\n\"\n + \" \" + variables + shLongProg + \" \" + args + \" \" + shTarget + \" \\\"$@\\\"\\n\"\n + \" ret=$?\\n\"\n + \"else \\n\"\n + \" \" + variables + shProg + \" \" + args + \" \" + shTarget + \" \\\"$@\\\"\\n\"\n + \" ret=$?\\n\"\n + \"fi\\n\"\n + \"exit $ret\\n\"\n } else {\n sh = sh\n + shProg + \" \" + args + \" \" + shTarget + \" \\\"$@\\\"\\n\"\n + \"exit $?\\n\"\n }\n\n // #!/usr/bin/env pwsh\n // $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n //\n // $ret=0\n // $exe = \"\"\n // if ($PSVersionTable.PSVersion -lt \"6.0\" -or $IsWindows) {\n // # Fix case when both the Windows and Linux builds of Node\n // # are installed in the same directory\n // $exe = \".exe\"\n // }\n // if (Test-Path \"$basedir/node\") {\n // & \"$basedir/node$exe\" \"$basedir/node_modules/npm/bin/npm-cli.js\" $args\n // $ret=$LASTEXITCODE\n // } else {\n // & \"node$exe\" \"$basedir/node_modules/npm/bin/npm-cli.js\" $args\n // $ret=$LASTEXITCODE\n // }\n // exit $ret\n var pwsh = \"#!/usr/bin/env pwsh\\n\"\n + \"$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\\n\"\n + \"\\n\"\n + \"$exe=\\\"\\\"\\n\"\n + \"if ($PSVersionTable.PSVersion -lt \\\"6.0\\\" -or $IsWindows) {\\n\"\n + \" # Fix case when both the Windows and Linux builds of Node\\n\"\n + \" # are installed in the same directory\\n\"\n + \" $exe=\\\".exe\\\"\\n\"\n + \"}\\n\"\n if (shLongProg) {\n pwsh = pwsh\n + \"$ret=0\\n\"\n + \"if (Test-Path \" + pwshLongProg + \") {\\n\"\n + \" & \" + pwshLongProg + \" \" + args + \" \" + shTarget + \" $args\\n\"\n + \" $ret=$LASTEXITCODE\\n\"\n + \"} else {\\n\"\n + \" & \" + pwshProg + \" \" + args + \" \" + shTarget + \" $args\\n\"\n + \" $ret=$LASTEXITCODE\\n\"\n + \"}\\n\"\n + \"exit $ret\\n\"\n } else {\n pwsh = pwsh\n + \"& \" + pwshProg + \" \" + args + \" \" + shTarget + \" $args\\n\"\n + \"exit $LASTEXITCODE\\n\"\n }\n\n var then = times(3, next, cb)\n fs.writeFile(to + \".ps1\", pwsh, \"utf8\", then)\n fs.writeFile(to + \".cmd\", cmd, \"utf8\", then)\n fs.writeFile(to, sh, \"utf8\", then)\n function next () {\n chmodShim(to, cb)\n }\n}\n\nfunction chmodShim (to, cb) {\n var then = times(2, cb, cb)\n fs.chmod(to, \"0755\", then)\n fs.chmod(to + \".cmd\", \"0755\", then)\n fs.chmod(to + \".ps1\", \"0755\", then)\n}\n\nfunction times(n, ok, cb) {\n var errState = null\n return function(er) {\n if (!errState) {\n if (er)\n cb(errState = er)\n else if (--n === 0)\n ok()\n }\n }\n}\n","exports.replaceDollarWithPercentPair = replaceDollarWithPercentPair\r\nexports.convertToSetCommand = convertToSetCommand\r\nexports.convertToSetCommands = convertToSetCommands\r\n\r\nfunction convertToSetCommand(key, value) {\r\n var line = \"\"\r\n key = key || \"\"\r\n key = key.trim()\r\n value = value || \"\"\r\n value = value.trim()\r\n if(key && value && value.length > 0) {\r\n line = \"@SET \" + key + \"=\" + replaceDollarWithPercentPair(value) + \"\\r\\n\"\r\n }\r\n return line\r\n}\r\n\r\nfunction extractVariableValuePairs(declarations) {\r\n var pairs = {}\r\n declarations.map(function(declaration) {\r\n var split = declaration.split(\"=\")\r\n pairs[split[0]]=split[1]\r\n })\r\n return pairs\r\n}\r\n\r\nfunction convertToSetCommands(variableString) {\r\n var variableValuePairs = extractVariableValuePairs(variableString.split(\" \"))\r\n var variableDeclarationsAsBatch = \"\"\r\n Object.keys(variableValuePairs).forEach(function (key) {\r\n variableDeclarationsAsBatch += convertToSetCommand(key, variableValuePairs[key])\r\n })\r\n return variableDeclarationsAsBatch\r\n}\r\n\r\nfunction replaceDollarWithPercentPair(value) {\r\n var dollarExpressions = /\\$\\{?([^\\$@#\\?\\- \\t{}:]+)\\}?/g\r\n var result = \"\"\r\n var startIndex = 0\r\n value = value || \"\"\r\n do {\r\n var match = dollarExpressions.exec(value)\r\n if(match) {\r\n var betweenMatches = value.substring(startIndex, match.index) || \"\"\r\n result += betweenMatches + \"%\" + match[1] + \"%\"\r\n startIndex = dollarExpressions.lastIndex\r\n }\r\n } while (dollarExpressions.lastIndex > 0)\r\n result += value.substr(startIndex)\r\n return result\r\n}\r\n\r\n\r\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","'use strict';\nconst NestedError = require('nested-error-stacks');\n\nclass CpFileError extends NestedError {\n\tconstructor(message, nested) {\n\t\tsuper(message, nested);\n\t\tObject.assign(this, nested);\n\t\tthis.name = 'CpFileError';\n\t}\n}\n\nmodule.exports = CpFileError;\n","'use strict';\nconst {promisify} = require('util');\nconst fs = require('graceful-fs');\nconst makeDir = require('make-dir');\nconst pEvent = require('p-event');\nconst CpFileError = require('./cp-file-error');\n\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst utimes = promisify(fs.utimes);\nconst chmod = promisify(fs.chmod);\nconst chown = promisify(fs.chown);\n\nexports.closeSync = fs.closeSync.bind(fs);\nexports.createWriteStream = fs.createWriteStream.bind(fs);\n\nexports.createReadStream = async (path, options) => {\n\tconst read = fs.createReadStream(path, options);\n\n\ttry {\n\t\tawait pEvent(read, ['readable', 'end']);\n\t} catch (error) {\n\t\tthrow new CpFileError(`Cannot read from \\`${path}\\`: ${error.message}`, error);\n\t}\n\n\treturn read;\n};\n\nexports.stat = path => stat(path).catch(error => {\n\tthrow new CpFileError(`Cannot stat path \\`${path}\\`: ${error.message}`, error);\n});\n\nexports.lstat = path => lstat(path).catch(error => {\n\tthrow new CpFileError(`lstat \\`${path}\\` failed: ${error.message}`, error);\n});\n\nexports.utimes = (path, atime, mtime) => utimes(path, atime, mtime).catch(error => {\n\tthrow new CpFileError(`utimes \\`${path}\\` failed: ${error.message}`, error);\n});\n\nexports.chmod = (path, mode) => chmod(path, mode).catch(error => {\n\tthrow new CpFileError(`chmod \\`${path}\\` failed: ${error.message}`, error);\n});\n\nexports.chown = (path, uid, gid) => chown(path, uid, gid).catch(error => {\n\tthrow new CpFileError(`chown \\`${path}\\` failed: ${error.message}`, error);\n});\n\nexports.statSync = path => {\n\ttry {\n\t\treturn fs.statSync(path);\n\t} catch (error) {\n\t\tthrow new CpFileError(`stat \\`${path}\\` failed: ${error.message}`, error);\n\t}\n};\n\nexports.utimesSync = (path, atime, mtime) => {\n\ttry {\n\t\treturn fs.utimesSync(path, atime, mtime);\n\t} catch (error) {\n\t\tthrow new CpFileError(`utimes \\`${path}\\` failed: ${error.message}`, error);\n\t}\n};\n\nexports.chmodSync = (path, mode) => {\n\ttry {\n\t\treturn fs.chmodSync(path, mode);\n\t} catch (error) {\n\t\tthrow new CpFileError(`chmod \\`${path}\\` failed: ${error.message}`, error);\n\t}\n};\n\nexports.chownSync = (path, uid, gid) => {\n\ttry {\n\t\treturn fs.chownSync(path, uid, gid);\n\t} catch (error) {\n\t\tthrow new CpFileError(`chown \\`${path}\\` failed: ${error.message}`, error);\n\t}\n};\n\nexports.makeDir = path => makeDir(path, {fs}).catch(error => {\n\tthrow new CpFileError(`Cannot create directory \\`${path}\\`: ${error.message}`, error);\n});\n\nexports.makeDirSync = path => {\n\ttry {\n\t\tmakeDir.sync(path, {fs});\n\t} catch (error) {\n\t\tthrow new CpFileError(`Cannot create directory \\`${path}\\`: ${error.message}`, error);\n\t}\n};\n\nexports.copyFileSync = (source, destination, flags) => {\n\ttry {\n\t\tfs.copyFileSync(source, destination, flags);\n\t} catch (error) {\n\t\tthrow new CpFileError(`Cannot copy from \\`${source}\\` to \\`${destination}\\`: ${error.message}`, error);\n\t}\n};\n","'use strict';\nconst path = require('path');\nconst {constants: fsConstants} = require('fs');\nconst pEvent = require('p-event');\nconst CpFileError = require('./cp-file-error');\nconst fs = require('./fs');\nconst ProgressEmitter = require('./progress-emitter');\n\nconst cpFileAsync = async (source, destination, options, progressEmitter) => {\n\tlet readError;\n\tconst stat = await fs.stat(source);\n\tprogressEmitter.size = stat.size;\n\n\tconst read = await fs.createReadStream(source);\n\tawait fs.makeDir(path.dirname(destination));\n\tconst write = fs.createWriteStream(destination, {flags: options.overwrite ? 'w' : 'wx'});\n\tread.on('data', () => {\n\t\tprogressEmitter.written = write.bytesWritten;\n\t});\n\tread.once('error', error => {\n\t\treadError = new CpFileError(`Cannot read from \\`${source}\\`: ${error.message}`, error);\n\t\twrite.end();\n\t});\n\n\tlet updateStats = false;\n\ttry {\n\t\tconst writePromise = pEvent(write, 'close');\n\t\tread.pipe(write);\n\t\tawait writePromise;\n\t\tprogressEmitter.written = progressEmitter.size;\n\t\tupdateStats = true;\n\t} catch (error) {\n\t\tif (options.overwrite || error.code !== 'EEXIST') {\n\t\t\tthrow new CpFileError(`Cannot write to \\`${destination}\\`: ${error.message}`, error);\n\t\t}\n\t}\n\n\tif (readError) {\n\t\tthrow readError;\n\t}\n\n\tif (updateStats) {\n\t\tconst stats = await fs.lstat(source);\n\n\t\treturn Promise.all([\n\t\t\tfs.utimes(destination, stats.atime, stats.mtime),\n\t\t\tfs.chmod(destination, stats.mode),\n\t\t\tfs.chown(destination, stats.uid, stats.gid)\n\t\t]);\n\t}\n};\n\nconst cpFile = (source, destination, options) => {\n\tif (!source || !destination) {\n\t\treturn Promise.reject(new CpFileError('`source` and `destination` required'));\n\t}\n\n\toptions = {\n\t\toverwrite: true,\n\t\t...options\n\t};\n\n\tconst progressEmitter = new ProgressEmitter(path.resolve(source), path.resolve(destination));\n\tconst promise = cpFileAsync(source, destination, options, progressEmitter);\n\tpromise.on = (...args) => {\n\t\tprogressEmitter.on(...args);\n\t\treturn promise;\n\t};\n\n\treturn promise;\n};\n\nmodule.exports = cpFile;\n\nconst checkSourceIsFile = (stat, source) => {\n\tif (stat.isDirectory()) {\n\t\tthrow Object.assign(new CpFileError(`EISDIR: illegal operation on a directory '${source}'`), {\n\t\t\terrno: -21,\n\t\t\tcode: 'EISDIR',\n\t\t\tsource\n\t\t});\n\t}\n};\n\nconst fixupAttributes = (destination, stat) => {\n\tfs.chmodSync(destination, stat.mode);\n\tfs.chownSync(destination, stat.uid, stat.gid);\n};\n\nmodule.exports.sync = (source, destination, options) => {\n\tif (!source || !destination) {\n\t\tthrow new CpFileError('`source` and `destination` required');\n\t}\n\n\toptions = {\n\t\toverwrite: true,\n\t\t...options\n\t};\n\n\tconst stat = fs.statSync(source);\n\tcheckSourceIsFile(stat, source);\n\tfs.makeDirSync(path.dirname(destination));\n\n\tconst flags = options.overwrite ? null : fsConstants.COPYFILE_EXCL;\n\ttry {\n\t\tfs.copyFileSync(source, destination, flags);\n\t} catch (error) {\n\t\tif (!options.overwrite && error.code === 'EEXIST') {\n\t\t\treturn;\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\tfs.utimesSync(destination, stat.atime, stat.mtime);\n\tfixupAttributes(destination, stat);\n};\n","'use strict';\nconst EventEmitter = require('events');\n\nconst written = new WeakMap();\n\nclass ProgressEmitter extends EventEmitter {\n\tconstructor(source, destination) {\n\t\tsuper();\n\t\tthis._source = source;\n\t\tthis._destination = destination;\n\t}\n\n\tset written(value) {\n\t\twritten.set(this, value);\n\t\tthis.emitProgress();\n\t}\n\n\tget written() {\n\t\treturn written.get(this);\n\t}\n\n\temitProgress() {\n\t\tconst {size, written} = this;\n\t\tthis.emit('progress', {\n\t\t\tsrc: this._source,\n\t\t\tdest: this._destination,\n\t\t\tsize,\n\t\t\twritten,\n\t\t\tpercent: written === size ? 1 : written / size\n\t\t});\n\t}\n}\n\nmodule.exports = ProgressEmitter;\n","'use strict';\nconst NestedError = require('nested-error-stacks');\n\nclass CpyError extends NestedError {\n\tconstructor(message, nested) {\n\t\tsuper(message, nested);\n\t\tObject.assign(this, nested);\n\t\tthis.name = 'CpyError';\n\t}\n}\n\nmodule.exports = CpyError;\n","'use strict';\nconst EventEmitter = require('events');\nconst path = require('path');\nconst os = require('os');\nconst pMap = require('p-map');\nconst arrify = require('arrify');\nconst globby = require('globby');\nconst hasGlob = require('has-glob');\nconst cpFile = require('cp-file');\nconst junk = require('junk');\nconst pFilter = require('p-filter');\nconst CpyError = require('./cpy-error');\n\nconst defaultOptions = {\n\tignoreJunk: true\n};\n\nclass SourceFile {\n\tconstructor(relativePath, path) {\n\t\tthis.path = path;\n\t\tthis.relativePath = relativePath;\n\t\tObject.freeze(this);\n\t}\n\n\tget name() {\n\t\treturn path.basename(this.relativePath);\n\t}\n\n\tget nameWithoutExtension() {\n\t\treturn path.basename(this.relativePath, path.extname(this.relativePath));\n\t}\n\n\tget extension() {\n\t\treturn path.extname(this.relativePath).slice(1);\n\t}\n}\n\nconst preprocessSourcePath = (source, options) => path.resolve(options.cwd ? options.cwd : process.cwd(), source);\n\nconst preprocessDestinationPath = (source, destination, options) => {\n\tlet basename = path.basename(source);\n\n\tif (typeof options.rename === 'string') {\n\t\tbasename = options.rename;\n\t} else if (typeof options.rename === 'function') {\n\t\tbasename = options.rename(basename);\n\t}\n\n\tif (options.cwd) {\n\t\tdestination = path.resolve(options.cwd, destination);\n\t}\n\n\tif (options.parents) {\n\t\tconst dirname = path.dirname(source);\n\t\tconst parsedDirectory = path.parse(dirname);\n\t\treturn path.join(destination, dirname.replace(parsedDirectory.root, path.sep), basename);\n\t}\n\n\treturn path.join(destination, basename);\n};\n\nmodule.exports = (source, destination, {\n\tconcurrency = (os.cpus().length || 1) * 2,\n\t...options\n} = {}) => {\n\tconst progressEmitter = new EventEmitter();\n\n\toptions = {\n\t\t...defaultOptions,\n\t\t...options\n\t};\n\n\tconst promise = (async () => {\n\t\tsource = arrify(source);\n\n\t\tif (source.length === 0 || !destination) {\n\t\t\tthrow new CpyError('`source` and `destination` required');\n\t\t}\n\n\t\tconst copyStatus = new Map();\n\t\tlet completedFiles = 0;\n\t\tlet completedSize = 0;\n\n\t\tlet files;\n\t\ttry {\n\t\t\tfiles = await globby(source, options);\n\n\t\t\tif (options.ignoreJunk) {\n\t\t\t\tfiles = files.filter(file => junk.not(path.basename(file)));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthrow new CpyError(`Cannot glob \\`${source}\\`: ${error.message}`, error);\n\t\t}\n\n\t\tif (files.length === 0 && !hasGlob(source)) {\n\t\t\tthrow new CpyError(`Cannot copy \\`${source}\\`: the file doesn't exist`);\n\t\t}\n\n\t\tlet sources = files.map(sourcePath => new SourceFile(sourcePath, preprocessSourcePath(sourcePath, options)));\n\n\t\tif (options.filter !== undefined) {\n\t\t\tconst filteredSources = await pFilter(sources, options.filter, {concurrency: 1024});\n\t\t\tsources = filteredSources;\n\t\t}\n\n\t\tif (sources.length === 0) {\n\t\t\tprogressEmitter.emit('progress', {\n\t\t\t\ttotalFiles: 0,\n\t\t\t\tpercent: 1,\n\t\t\t\tcompletedFiles: 0,\n\t\t\t\tcompletedSize: 0\n\t\t\t});\n\t\t}\n\n\t\tconst fileProgressHandler = event => {\n\t\t\tconst fileStatus = copyStatus.get(event.src) || {written: 0, percent: 0};\n\n\t\t\tif (fileStatus.written !== event.written || fileStatus.percent !== event.percent) {\n\t\t\t\tcompletedSize -= fileStatus.written;\n\t\t\t\tcompletedSize += event.written;\n\n\t\t\t\tif (event.percent === 1 && fileStatus.percent !== 1) {\n\t\t\t\t\tcompletedFiles++;\n\t\t\t\t}\n\n\t\t\t\tcopyStatus.set(event.src, {\n\t\t\t\t\twritten: event.written,\n\t\t\t\t\tpercent: event.percent\n\t\t\t\t});\n\n\t\t\t\tprogressEmitter.emit('progress', {\n\t\t\t\t\ttotalFiles: files.length,\n\t\t\t\t\tpercent: completedFiles / files.length,\n\t\t\t\t\tcompletedFiles,\n\t\t\t\t\tcompletedSize\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\treturn pMap(sources, async source => {\n\t\t\tconst to = preprocessDestinationPath(source.relativePath, destination, options);\n\n\t\t\ttry {\n\t\t\t\tawait cpFile(source.path, to, options).on('progress', fileProgressHandler);\n\t\t\t} catch (error) {\n\t\t\t\tthrow new CpyError(`Cannot copy from \\`${source.relativePath}\\` to \\`${to}\\`: ${error.message}`, error);\n\t\t\t}\n\n\t\t\treturn to;\n\t\t}, {concurrency});\n\t})();\n\n\tpromise.on = (...arguments_) => {\n\t\tprogressEmitter.on(...arguments_);\n\t\treturn promise;\n\t};\n\n\treturn promise;\n};\n","'use strict';\nconst {promisify} = require('util');\nconst fs = require('fs');\nconst path = require('path');\nconst fastGlob = require('fast-glob');\nconst gitIgnore = require('ignore');\nconst slash = require('slash');\n\nconst DEFAULT_IGNORE = [\n\t'**/node_modules/**',\n\t'**/flow-typed/**',\n\t'**/coverage/**',\n\t'**/.git'\n];\n\nconst readFileP = promisify(fs.readFile);\n\nconst mapGitIgnorePatternTo = base => ignore => {\n\tif (ignore.startsWith('!')) {\n\t\treturn '!' + path.posix.join(base, ignore.slice(1));\n\t}\n\n\treturn path.posix.join(base, ignore);\n};\n\nconst parseGitIgnore = (content, options) => {\n\tconst base = slash(path.relative(options.cwd, path.dirname(options.fileName)));\n\n\treturn content\n\t\t.split(/\\r?\\n/)\n\t\t.filter(Boolean)\n\t\t.filter(line => !line.startsWith('#'))\n\t\t.map(mapGitIgnorePatternTo(base));\n};\n\nconst reduceIgnore = files => {\n\treturn files.reduce((ignores, file) => {\n\t\tignores.add(parseGitIgnore(file.content, {\n\t\t\tcwd: file.cwd,\n\t\t\tfileName: file.filePath\n\t\t}));\n\t\treturn ignores;\n\t}, gitIgnore());\n};\n\nconst ensureAbsolutePathForCwd = (cwd, p) => {\n\tif (path.isAbsolute(p)) {\n\t\tif (p.startsWith(cwd)) {\n\t\t\treturn p;\n\t\t}\n\n\t\tthrow new Error(`Path ${p} is not in cwd ${cwd}`);\n\t}\n\n\treturn path.join(cwd, p);\n};\n\nconst getIsIgnoredPredecate = (ignores, cwd) => {\n\treturn p => ignores.ignores(slash(path.relative(cwd, ensureAbsolutePathForCwd(cwd, p))));\n};\n\nconst getFile = async (file, cwd) => {\n\tconst filePath = path.join(cwd, file);\n\tconst content = await readFileP(filePath, 'utf8');\n\n\treturn {\n\t\tcwd,\n\t\tfilePath,\n\t\tcontent\n\t};\n};\n\nconst getFileSync = (file, cwd) => {\n\tconst filePath = path.join(cwd, file);\n\tconst content = fs.readFileSync(filePath, 'utf8');\n\n\treturn {\n\t\tcwd,\n\t\tfilePath,\n\t\tcontent\n\t};\n};\n\nconst normalizeOptions = ({\n\tignore = [],\n\tcwd = slash(process.cwd())\n} = {}) => {\n\treturn {ignore, cwd};\n};\n\nmodule.exports = async options => {\n\toptions = normalizeOptions(options);\n\n\tconst paths = await fastGlob('**/.gitignore', {\n\t\tignore: DEFAULT_IGNORE.concat(options.ignore),\n\t\tcwd: options.cwd\n\t});\n\n\tconst files = await Promise.all(paths.map(file => getFile(file, options.cwd)));\n\tconst ignores = reduceIgnore(files);\n\n\treturn getIsIgnoredPredecate(ignores, options.cwd);\n};\n\nmodule.exports.sync = options => {\n\toptions = normalizeOptions(options);\n\n\tconst paths = fastGlob.sync('**/.gitignore', {\n\t\tignore: DEFAULT_IGNORE.concat(options.ignore),\n\t\tcwd: options.cwd\n\t});\n\n\tconst files = paths.map(file => getFileSync(file, options.cwd));\n\tconst ignores = reduceIgnore(files);\n\n\treturn getIsIgnoredPredecate(ignores, options.cwd);\n};\n","'use strict';\nconst fs = require('fs');\nconst arrayUnion = require('array-union');\nconst merge2 = require('merge2');\nconst glob = require('glob');\nconst fastGlob = require('fast-glob');\nconst dirGlob = require('dir-glob');\nconst gitignore = require('./gitignore');\nconst {FilterStream, UniqueStream} = require('./stream-utils');\n\nconst DEFAULT_FILTER = () => false;\n\nconst isNegative = pattern => pattern[0] === '!';\n\nconst assertPatternsInput = patterns => {\n\tif (!patterns.every(pattern => typeof pattern === 'string')) {\n\t\tthrow new TypeError('Patterns must be a string or an array of strings');\n\t}\n};\n\nconst checkCwdOption = (options = {}) => {\n\tif (!options.cwd) {\n\t\treturn;\n\t}\n\n\tlet stat;\n\ttry {\n\t\tstat = fs.statSync(options.cwd);\n\t} catch (_) {\n\t\treturn;\n\t}\n\n\tif (!stat.isDirectory()) {\n\t\tthrow new Error('The `cwd` option must be a path to a directory');\n\t}\n};\n\nconst getPathString = p => p.stats instanceof fs.Stats ? p.path : p;\n\nconst generateGlobTasks = (patterns, taskOptions) => {\n\tpatterns = arrayUnion([].concat(patterns));\n\tassertPatternsInput(patterns);\n\tcheckCwdOption(taskOptions);\n\n\tconst globTasks = [];\n\n\ttaskOptions = {\n\t\tignore: [],\n\t\texpandDirectories: true,\n\t\t...taskOptions\n\t};\n\n\tfor (const [index, pattern] of patterns.entries()) {\n\t\tif (isNegative(pattern)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst ignore = patterns\n\t\t\t.slice(index)\n\t\t\t.filter(isNegative)\n\t\t\t.map(pattern => pattern.slice(1));\n\n\t\tconst options = {\n\t\t\t...taskOptions,\n\t\t\tignore: taskOptions.ignore.concat(ignore)\n\t\t};\n\n\t\tglobTasks.push({pattern, options});\n\t}\n\n\treturn globTasks;\n};\n\nconst globDirs = (task, fn) => {\n\tlet options = {};\n\tif (task.options.cwd) {\n\t\toptions.cwd = task.options.cwd;\n\t}\n\n\tif (Array.isArray(task.options.expandDirectories)) {\n\t\toptions = {\n\t\t\t...options,\n\t\t\tfiles: task.options.expandDirectories\n\t\t};\n\t} else if (typeof task.options.expandDirectories === 'object') {\n\t\toptions = {\n\t\t\t...options,\n\t\t\t...task.options.expandDirectories\n\t\t};\n\t}\n\n\treturn fn(task.pattern, options);\n};\n\nconst getPattern = (task, fn) => task.options.expandDirectories ? globDirs(task, fn) : [task.pattern];\n\nconst getFilterSync = options => {\n\treturn options && options.gitignore ?\n\t\tgitignore.sync({cwd: options.cwd, ignore: options.ignore}) :\n\t\tDEFAULT_FILTER;\n};\n\nconst globToTask = task => glob => {\n\tconst {options} = task;\n\tif (options.ignore && Array.isArray(options.ignore) && options.expandDirectories) {\n\t\toptions.ignore = dirGlob.sync(options.ignore);\n\t}\n\n\treturn {\n\t\tpattern: glob,\n\t\toptions\n\t};\n};\n\nmodule.exports = async (patterns, options) => {\n\tconst globTasks = generateGlobTasks(patterns, options);\n\n\tconst getFilter = async () => {\n\t\treturn options && options.gitignore ?\n\t\t\tgitignore({cwd: options.cwd, ignore: options.ignore}) :\n\t\t\tDEFAULT_FILTER;\n\t};\n\n\tconst getTasks = async () => {\n\t\tconst tasks = await Promise.all(globTasks.map(async task => {\n\t\t\tconst globs = await getPattern(task, dirGlob);\n\t\t\treturn Promise.all(globs.map(globToTask(task)));\n\t\t}));\n\n\t\treturn arrayUnion(...tasks);\n\t};\n\n\tconst [filter, tasks] = await Promise.all([getFilter(), getTasks()]);\n\tconst paths = await Promise.all(tasks.map(task => fastGlob(task.pattern, task.options)));\n\n\treturn arrayUnion(...paths).filter(path_ => !filter(getPathString(path_)));\n};\n\nmodule.exports.sync = (patterns, options) => {\n\tconst globTasks = generateGlobTasks(patterns, options);\n\n\tconst tasks = globTasks.reduce((tasks, task) => {\n\t\tconst newTask = getPattern(task, dirGlob.sync).map(globToTask(task));\n\t\treturn tasks.concat(newTask);\n\t}, []);\n\n\tconst filter = getFilterSync(options);\n\n\treturn tasks.reduce(\n\t\t(matches, task) => arrayUnion(matches, fastGlob.sync(task.pattern, task.options)),\n\t\t[]\n\t).filter(path_ => !filter(path_));\n};\n\nmodule.exports.stream = (patterns, options) => {\n\tconst globTasks = generateGlobTasks(patterns, options);\n\n\tconst tasks = globTasks.reduce((tasks, task) => {\n\t\tconst newTask = getPattern(task, dirGlob.sync).map(globToTask(task));\n\t\treturn tasks.concat(newTask);\n\t}, []);\n\n\tconst filter = getFilterSync(options);\n\tconst filterStream = new FilterStream(p => !filter(p));\n\tconst uniqueStream = new UniqueStream();\n\n\treturn merge2(tasks.map(task => fastGlob.stream(task.pattern, task.options)))\n\t\t.pipe(filterStream)\n\t\t.pipe(uniqueStream);\n};\n\nmodule.exports.generateGlobTasks = generateGlobTasks;\n\nmodule.exports.hasMagic = (patterns, options) => []\n\t.concat(patterns)\n\t.some(pattern => glob.hasMagic(pattern, options));\n\nmodule.exports.gitignore = gitignore;\n","'use strict';\nconst {Transform} = require('stream');\n\nclass ObjectTransform extends Transform {\n\tconstructor() {\n\t\tsuper({\n\t\t\tobjectMode: true\n\t\t});\n\t}\n}\n\nclass FilterStream extends ObjectTransform {\n\tconstructor(filter) {\n\t\tsuper();\n\t\tthis._filter = filter;\n\t}\n\n\t_transform(data, encoding, callback) {\n\t\tif (this._filter(data)) {\n\t\t\tthis.push(data);\n\t\t}\n\n\t\tcallback();\n\t}\n}\n\nclass UniqueStream extends ObjectTransform {\n\tconstructor() {\n\t\tsuper();\n\t\tthis._pushed = new Set();\n\t}\n\n\t_transform(data, encoding, callback) {\n\t\tif (!this._pushed.has(data)) {\n\t\t\tthis.push(data);\n\t\t\tthis._pushed.add(data);\n\t\t}\n\n\t\tcallback();\n\t}\n}\n\nmodule.exports = {\n\tFilterStream,\n\tUniqueStream\n};\n","'use strict';\nconst AggregateError = require('aggregate-error');\n\nmodule.exports = async (\n\titerable,\n\tmapper,\n\t{\n\t\tconcurrency = Infinity,\n\t\tstopOnError = true\n\t} = {}\n) => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (typeof mapper !== 'function') {\n\t\t\tthrow new TypeError('Mapper function is required');\n\t\t}\n\n\t\tif (!(typeof concurrency === 'number' && concurrency >= 1)) {\n\t\t\tthrow new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${concurrency}\\` (${typeof concurrency})`);\n\t\t}\n\n\t\tconst ret = [];\n\t\tconst errors = [];\n\t\tconst iterator = iterable[Symbol.iterator]();\n\t\tlet isRejected = false;\n\t\tlet isIterableDone = false;\n\t\tlet resolvingCount = 0;\n\t\tlet currentIndex = 0;\n\n\t\tconst next = () => {\n\t\t\tif (isRejected) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst nextItem = iterator.next();\n\t\t\tconst i = currentIndex;\n\t\t\tcurrentIndex++;\n\n\t\t\tif (nextItem.done) {\n\t\t\t\tisIterableDone = true;\n\n\t\t\t\tif (resolvingCount === 0) {\n\t\t\t\t\tif (!stopOnError && errors.length !== 0) {\n\t\t\t\t\t\treject(new AggregateError(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve(ret);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolvingCount++;\n\n\t\t\t(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst element = await nextItem.value;\n\t\t\t\t\tret[i] = await mapper(element, i);\n\t\t\t\t\tresolvingCount--;\n\t\t\t\t\tnext();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (stopOnError) {\n\t\t\t\t\t\tisRejected = true;\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors.push(error);\n\t\t\t\t\t\tresolvingCount--;\n\t\t\t\t\t\tnext();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})();\n\t\t};\n\n\t\tfor (let i = 0; i < concurrency; i++) {\n\t\t\tnext();\n\n\t\t\tif (isIterableDone) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n};\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed);\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n // It's slightly altered to disable JS backtracking to avoid hanging on specially crafted input\n // Please see https://github.com/moxystudio/node-cross-spawn/pull/160 for more information\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(?=(\\\\+?)?)\\1\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(?=(\\\\+?)?)\\1$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","\"use strict\";\n\nfunction dedent(strings) {\n\n var raw = void 0;\n if (typeof strings === \"string\") {\n // dedent can be used as a plain function\n raw = [strings];\n } else {\n raw = strings.raw;\n }\n\n // first, perform interpolation\n var result = \"\";\n for (var i = 0; i < raw.length; i++) {\n result += raw[i].\n // join lines when there is a suppressed newline\n replace(/\\\\\\n[ \\t]*/g, \"\").\n\n // handle escaped backticks\n replace(/\\\\`/g, \"`\");\n\n if (i < (arguments.length <= 1 ? 0 : arguments.length - 1)) {\n result += arguments.length <= i + 1 ? undefined : arguments[i + 1];\n }\n }\n\n // now strip indentation\n var lines = result.split(\"\\n\");\n var mindent = null;\n lines.forEach(function (l) {\n var m = l.match(/^(\\s+)\\S+/);\n if (m) {\n var indent = m[1].length;\n if (!mindent) {\n // this is the first indented line\n mindent = indent;\n } else {\n mindent = Math.min(mindent, indent);\n }\n }\n });\n\n if (mindent !== null) {\n result = lines.map(function (l) {\n return l[0] === \" \" ? l.slice(mindent) : l;\n }).join(\"\\n\");\n }\n\n // dedent eats leading and trailing whitespace too\n result = result.trim();\n\n // handle escaped newlines at the end to ensure they don't get stripped too\n return result.replace(/\\\\n/g, \"\\n\");\n}\n\nif (typeof module !== \"undefined\") {\n module.exports = dedent;\n}\n","var clone = require('clone');\n\nmodule.exports = function(options, defaults) {\n options = options || {};\n\n Object.keys(defaults).forEach(function(key) {\n if (typeof options[key] === 'undefined') {\n options[key] = clone(defaults[key]);\n }\n });\n\n return options;\n};","var clone = (function() {\n'use strict';\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n*/\nfunction clone(parent, circular, depth, prototype) {\n var filter;\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n filter = circular.filter;\n circular = circular.circular\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth == 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n};\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n};\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n};\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n};\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n};\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n","'use strict';\nconst {promisify} = require('util');\nconst path = require('path');\nconst globby = require('globby');\nconst isGlob = require('is-glob');\nconst slash = require('slash');\nconst gracefulFs = require('graceful-fs');\nconst isPathCwd = require('is-path-cwd');\nconst isPathInside = require('is-path-inside');\nconst rimraf = require('rimraf');\nconst pMap = require('p-map');\n\nconst rimrafP = promisify(rimraf);\n\nconst rimrafOptions = {\n\tglob: false,\n\tunlink: gracefulFs.unlink,\n\tunlinkSync: gracefulFs.unlinkSync,\n\tchmod: gracefulFs.chmod,\n\tchmodSync: gracefulFs.chmodSync,\n\tstat: gracefulFs.stat,\n\tstatSync: gracefulFs.statSync,\n\tlstat: gracefulFs.lstat,\n\tlstatSync: gracefulFs.lstatSync,\n\trmdir: gracefulFs.rmdir,\n\trmdirSync: gracefulFs.rmdirSync,\n\treaddir: gracefulFs.readdir,\n\treaddirSync: gracefulFs.readdirSync\n};\n\nfunction safeCheck(file, cwd) {\n\tif (isPathCwd(file)) {\n\t\tthrow new Error('Cannot delete the current working directory. Can be overridden with the `force` option.');\n\t}\n\n\tif (!isPathInside(file, cwd)) {\n\t\tthrow new Error('Cannot delete files/directories outside the current working directory. Can be overridden with the `force` option.');\n\t}\n}\n\nfunction normalizePatterns(patterns) {\n\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\tpatterns = patterns.map(pattern => {\n\t\tif (process.platform === 'win32' && isGlob(pattern) === false) {\n\t\t\treturn slash(pattern);\n\t\t}\n\n\t\treturn pattern;\n\t});\n\n\treturn patterns;\n}\n\nmodule.exports = async (patterns, {force, dryRun, cwd = process.cwd(), onProgress = () => {}, ...options} = {}) => {\n\toptions = {\n\t\texpandDirectories: false,\n\t\tonlyFiles: false,\n\t\tfollowSymbolicLinks: false,\n\t\tcwd,\n\t\t...options\n\t};\n\n\tpatterns = normalizePatterns(patterns);\n\n\tconst files = (await globby(patterns, options))\n\t\t.sort((a, b) => b.localeCompare(a));\n\n\tif (files.length === 0) {\n\t\tonProgress({\n\t\t\ttotalCount: 0,\n\t\t\tdeletedCount: 0,\n\t\t\tpercent: 1\n\t\t});\n\t}\n\n\tlet deletedCount = 0;\n\n\tconst mapper = async file => {\n\t\tfile = path.resolve(cwd, file);\n\n\t\tif (!force) {\n\t\t\tsafeCheck(file, cwd);\n\t\t}\n\n\t\tif (!dryRun) {\n\t\t\tawait rimrafP(file, rimrafOptions);\n\t\t}\n\n\t\tdeletedCount += 1;\n\n\t\tonProgress({\n\t\t\ttotalCount: files.length,\n\t\t\tdeletedCount,\n\t\t\tpercent: deletedCount / files.length\n\t\t});\n\n\t\treturn file;\n\t};\n\n\tconst removedFiles = await pMap(files, mapper, options);\n\n\tremovedFiles.sort((a, b) => a.localeCompare(b));\n\n\treturn removedFiles;\n};\n\nmodule.exports.sync = (patterns, {force, dryRun, cwd = process.cwd(), ...options} = {}) => {\n\toptions = {\n\t\texpandDirectories: false,\n\t\tonlyFiles: false,\n\t\tfollowSymbolicLinks: false,\n\t\tcwd,\n\t\t...options\n\t};\n\n\tpatterns = normalizePatterns(patterns);\n\n\tconst files = globby.sync(patterns, options)\n\t\t.sort((a, b) => b.localeCompare(a));\n\n\tconst removedFiles = files.map(file => {\n\t\tfile = path.resolve(cwd, file);\n\n\t\tif (!force) {\n\t\t\tsafeCheck(file, cwd);\n\t\t}\n\n\t\tif (!dryRun) {\n\t\t\trimraf.sync(file, rimrafOptions);\n\t\t}\n\n\t\treturn file;\n\t});\n\n\tremovedFiles.sort((a, b) => a.localeCompare(b));\n\n\treturn removedFiles;\n};\n","const assert = require(\"assert\")\nconst path = require(\"path\")\nconst fs = require(\"fs\")\nlet glob = undefined\ntry {\n glob = require(\"glob\")\n} catch (_err) {\n // treat glob as optional.\n}\n\nconst defaultGlobOpts = {\n nosort: true,\n silent: true\n}\n\n// for EMFILE handling\nlet timeout = 0\n\nconst isWindows = (process.platform === \"win32\")\n\nconst defaults = options => {\n const methods = [\n 'unlink',\n 'chmod',\n 'stat',\n 'lstat',\n 'rmdir',\n 'readdir'\n ]\n methods.forEach(m => {\n options[m] = options[m] || fs[m]\n m = m + 'Sync'\n options[m] = options[m] || fs[m]\n })\n\n options.maxBusyTries = options.maxBusyTries || 3\n options.emfileWait = options.emfileWait || 1000\n if (options.glob === false) {\n options.disableGlob = true\n }\n if (options.disableGlob !== true && glob === undefined) {\n throw Error('glob dependency not found, set `options.disableGlob = true` if intentional')\n }\n options.disableGlob = options.disableGlob || false\n options.glob = options.glob || defaultGlobOpts\n}\n\nconst rimraf = (p, options, cb) => {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert.equal(typeof cb, 'function', 'rimraf: callback function required')\n assert(options, 'rimraf: invalid options argument provided')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n defaults(options)\n\n let busyTries = 0\n let errState = null\n let n = 0\n\n const next = (er) => {\n errState = errState || er\n if (--n === 0)\n cb(errState)\n }\n\n const afterGlob = (er, results) => {\n if (er)\n return cb(er)\n\n n = results.length\n if (n === 0)\n return cb()\n\n results.forEach(p => {\n const CB = (er) => {\n if (er) {\n if ((er.code === \"EBUSY\" || er.code === \"ENOTEMPTY\" || er.code === \"EPERM\") &&\n busyTries < options.maxBusyTries) {\n busyTries ++\n // try again, with the same exact callback as this one.\n return setTimeout(() => rimraf_(p, options, CB), busyTries * 100)\n }\n\n // this one won't happen if graceful-fs is used.\n if (er.code === \"EMFILE\" && timeout < options.emfileWait) {\n return setTimeout(() => rimraf_(p, options, CB), timeout ++)\n }\n\n // already gone\n if (er.code === \"ENOENT\") er = null\n }\n\n timeout = 0\n next(er)\n }\n rimraf_(p, options, CB)\n })\n }\n\n if (options.disableGlob || !glob.hasMagic(p))\n return afterGlob(null, [p])\n\n options.lstat(p, (er, stat) => {\n if (!er)\n return afterGlob(null, [p])\n\n glob(p, options.glob, afterGlob)\n })\n\n}\n\n// Two possible strategies.\n// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR\n// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR\n//\n// Both result in an extra syscall when you guess wrong. However, there\n// are likely far more normal files in the world than directories. This\n// is based on the assumption that a the average number of files per\n// directory is >= 1.\n//\n// If anyone ever complains about this, then I guess the strategy could\n// be made configurable somehow. But until then, YAGNI.\nconst rimraf_ = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // sunos lets the root user unlink directories, which is... weird.\n // so we have to lstat here and make sure it's not a dir.\n options.lstat(p, (er, st) => {\n if (er && er.code === \"ENOENT\")\n return cb(null)\n\n // Windows can EPERM on stat. Life is suffering.\n if (er && er.code === \"EPERM\" && isWindows)\n fixWinEPERM(p, options, er, cb)\n\n if (st && st.isDirectory())\n return rmdir(p, options, er, cb)\n\n options.unlink(p, er => {\n if (er) {\n if (er.code === \"ENOENT\")\n return cb(null)\n if (er.code === \"EPERM\")\n return (isWindows)\n ? fixWinEPERM(p, options, er, cb)\n : rmdir(p, options, er, cb)\n if (er.code === \"EISDIR\")\n return rmdir(p, options, er, cb)\n }\n return cb(er)\n })\n })\n}\n\nconst fixWinEPERM = (p, options, er, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.chmod(p, 0o666, er2 => {\n if (er2)\n cb(er2.code === \"ENOENT\" ? null : er)\n else\n options.stat(p, (er3, stats) => {\n if (er3)\n cb(er3.code === \"ENOENT\" ? null : er)\n else if (stats.isDirectory())\n rmdir(p, options, er, cb)\n else\n options.unlink(p, cb)\n })\n })\n}\n\nconst fixWinEPERMSync = (p, options, er) => {\n assert(p)\n assert(options)\n\n try {\n options.chmodSync(p, 0o666)\n } catch (er2) {\n if (er2.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n let stats\n try {\n stats = options.statSync(p)\n } catch (er3) {\n if (er3.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n if (stats.isDirectory())\n rmdirSync(p, options, er)\n else\n options.unlinkSync(p)\n}\n\nconst rmdir = (p, options, originalEr, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)\n // if we guessed wrong, and it's not a directory, then\n // raise the original error.\n options.rmdir(p, er => {\n if (er && (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\"))\n rmkids(p, options, cb)\n else if (er && er.code === \"ENOTDIR\")\n cb(originalEr)\n else\n cb(er)\n })\n}\n\nconst rmkids = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.readdir(p, (er, files) => {\n if (er)\n return cb(er)\n let n = files.length\n if (n === 0)\n return options.rmdir(p, cb)\n let errState\n files.forEach(f => {\n rimraf(path.join(p, f), options, er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (--n === 0)\n options.rmdir(p, cb)\n })\n })\n })\n}\n\n// this looks simpler, and is strictly *faster*, but will\n// tie up the JavaScript thread and fail on excessively\n// deep directory trees.\nconst rimrafSync = (p, options) => {\n options = options || {}\n defaults(options)\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert(options, 'rimraf: missing options')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n let results\n\n if (options.disableGlob || !glob.hasMagic(p)) {\n results = [p]\n } else {\n try {\n options.lstatSync(p)\n results = [p]\n } catch (er) {\n results = glob.sync(p, options.glob)\n }\n }\n\n if (!results.length)\n return\n\n for (let i = 0; i < results.length; i++) {\n const p = results[i]\n\n let st\n try {\n st = options.lstatSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n\n // Windows can EPERM on stat. Life is suffering.\n if (er.code === \"EPERM\" && isWindows)\n fixWinEPERMSync(p, options, er)\n }\n\n try {\n // sunos lets the root user unlink directories, which is... weird.\n if (st && st.isDirectory())\n rmdirSync(p, options, null)\n else\n options.unlinkSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"EPERM\")\n return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)\n if (er.code !== \"EISDIR\")\n throw er\n\n rmdirSync(p, options, er)\n }\n }\n}\n\nconst rmdirSync = (p, options, originalEr) => {\n assert(p)\n assert(options)\n\n try {\n options.rmdirSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"ENOTDIR\")\n throw originalEr\n if (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\")\n rmkidsSync(p, options)\n }\n}\n\nconst rmkidsSync = (p, options) => {\n assert(p)\n assert(options)\n options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))\n\n // We only end up here once we got ENOTEMPTY at least once, and\n // at this point, we are guaranteed to have removed all the kids.\n // So, we know that it won't be ENOENT or ENOTDIR or anything else.\n // try really hard to delete stuff on windows, because it has a\n // PROFOUNDLY annoying habit of not closing handles promptly when\n // files are deleted, resulting in spurious ENOTEMPTY errors.\n const retries = isWindows ? 100 : 1\n let i = 0\n do {\n let threw = true\n try {\n const ret = options.rmdirSync(p, options)\n threw = false\n return ret\n } finally {\n if (++i < retries && threw)\n continue\n }\n } while (true)\n}\n\nmodule.exports = rimraf\nrimraf.sync = rimrafSync\n","'use strict';\n\n// detect either spaces or tabs but not both to properly handle tabs\n// for indentation and spaces for alignment\nconst INDENT_RE = /^(?:( )+|\\t+)/;\n\nfunction getMostUsed(indents) {\n\tlet result = 0;\n\tlet maxUsed = 0;\n\tlet maxWeight = 0;\n\n\tfor (const entry of indents) {\n\t\t// TODO: use destructuring when targeting Node.js 6\n\t\tconst key = entry[0];\n\t\tconst val = entry[1];\n\n\t\tconst u = val[0];\n\t\tconst w = val[1];\n\n\t\tif (u > maxUsed || (u === maxUsed && w > maxWeight)) {\n\t\t\tmaxUsed = u;\n\t\t\tmaxWeight = w;\n\t\t\tresult = Number(key);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nmodule.exports = str => {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// used to see if tabs or spaces are the most used\n\tlet tabs = 0;\n\tlet spaces = 0;\n\n\t// remember the size of previous line's indentation\n\tlet prev = 0;\n\n\t// remember how many indents/unindents as occurred for a given size\n\t// and how much lines follow a given indentation\n\t//\n\t// indents = {\n\t// 3: [1, 0],\n\t// 4: [1, 5],\n\t// 5: [1, 0],\n\t// 12: [1, 0],\n\t// }\n\tconst indents = new Map();\n\n\t// pointer to the array of last used indent\n\tlet current;\n\n\t// whether the last action was an indent (opposed to an unindent)\n\tlet isIndent;\n\n\tfor (const line of str.split(/\\n/g)) {\n\t\tif (!line) {\n\t\t\t// ignore empty lines\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet indent;\n\t\tconst matches = line.match(INDENT_RE);\n\n\t\tif (matches) {\n\t\t\tindent = matches[0].length;\n\n\t\t\tif (matches[1]) {\n\t\t\t\tspaces++;\n\t\t\t} else {\n\t\t\t\ttabs++;\n\t\t\t}\n\t\t} else {\n\t\t\tindent = 0;\n\t\t}\n\n\t\tconst diff = indent - prev;\n\t\tprev = indent;\n\n\t\tif (diff) {\n\t\t\t// an indent or unindent has been detected\n\n\t\t\tisIndent = diff > 0;\n\n\t\t\tcurrent = indents.get(isIndent ? diff : -diff);\n\n\t\t\tif (current) {\n\t\t\t\tcurrent[0]++;\n\t\t\t} else {\n\t\t\t\tcurrent = [1, 0];\n\t\t\t\tindents.set(diff, current);\n\t\t\t}\n\t\t} else if (current) {\n\t\t\t// if the last action was an indent, increment the weight\n\t\t\tcurrent[1] += Number(isIndent);\n\t\t}\n\t}\n\n\tconst amount = getMostUsed(indents);\n\n\tlet type;\n\tlet indent;\n\tif (!amount) {\n\t\ttype = null;\n\t\tindent = '';\n\t} else if (spaces >= tabs) {\n\t\ttype = 'space';\n\t\tindent = ' '.repeat(amount);\n\t} else {\n\t\ttype = 'tab';\n\t\tindent = '\\t'.repeat(amount);\n\t}\n\n\treturn {\n\t\tamount,\n\t\ttype,\n\t\tindent\n\t};\n};\n","'use strict';\nconst path = require('path');\nconst pathType = require('path-type');\n\nconst getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0];\n\nconst getPath = (filepath, cwd) => {\n\tconst pth = filepath[0] === '!' ? filepath.slice(1) : filepath;\n\treturn path.isAbsolute(pth) ? pth : path.join(cwd, pth);\n};\n\nconst addExtensions = (file, extensions) => {\n\tif (path.extname(file)) {\n\t\treturn `**/${file}`;\n\t}\n\n\treturn `**/${file}.${getExtensions(extensions)}`;\n};\n\nconst getGlob = (directory, options) => {\n\tif (options.files && !Array.isArray(options.files)) {\n\t\tthrow new TypeError(`Expected \\`files\\` to be of type \\`Array\\` but received type \\`${typeof options.files}\\``);\n\t}\n\n\tif (options.extensions && !Array.isArray(options.extensions)) {\n\t\tthrow new TypeError(`Expected \\`extensions\\` to be of type \\`Array\\` but received type \\`${typeof options.extensions}\\``);\n\t}\n\n\tif (options.files && options.extensions) {\n\t\treturn options.files.map(x => path.posix.join(directory, addExtensions(x, options.extensions)));\n\t}\n\n\tif (options.files) {\n\t\treturn options.files.map(x => path.posix.join(directory, `**/${x}`));\n\t}\n\n\tif (options.extensions) {\n\t\treturn [path.posix.join(directory, `**/*.${getExtensions(options.extensions)}`)];\n\t}\n\n\treturn [path.posix.join(directory, '**')];\n};\n\nmodule.exports = async (input, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\t...options\n\t};\n\n\tif (typeof options.cwd !== 'string') {\n\t\tthrow new TypeError(`Expected \\`cwd\\` to be of type \\`string\\` but received type \\`${typeof options.cwd}\\``);\n\t}\n\n\tconst globs = await Promise.all([].concat(input).map(async x => {\n\t\tconst isDirectory = await pathType.isDirectory(getPath(x, options.cwd));\n\t\treturn isDirectory ? getGlob(x, options) : x;\n\t}));\n\n\treturn [].concat.apply([], globs); // eslint-disable-line prefer-spread\n};\n\nmodule.exports.sync = (input, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\t...options\n\t};\n\n\tif (typeof options.cwd !== 'string') {\n\t\tthrow new TypeError(`Expected \\`cwd\\` to be of type \\`string\\` but received type \\`${typeof options.cwd}\\``);\n\t}\n\n\tconst globs = [].concat(input).map(x => pathType.isDirectorySync(getPath(x, options.cwd)) ? getGlob(x, options) : x);\n\n\treturn [].concat.apply([], globs); // eslint-disable-line prefer-spread\n};\n","var Stream = require(\"stream\")\nvar writeMethods = [\"write\", \"end\", \"destroy\"]\nvar readMethods = [\"resume\", \"pause\"]\nvar readEvents = [\"data\", \"close\"]\nvar slice = Array.prototype.slice\n\nmodule.exports = duplex\n\nfunction forEach (arr, fn) {\n if (arr.forEach) {\n return arr.forEach(fn)\n }\n\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i], i)\n }\n}\n\nfunction duplex(writer, reader) {\n var stream = new Stream()\n var ended = false\n\n forEach(writeMethods, proxyWriter)\n\n forEach(readMethods, proxyReader)\n\n forEach(readEvents, proxyStream)\n\n reader.on(\"end\", handleEnd)\n\n writer.on(\"drain\", function() {\n stream.emit(\"drain\")\n })\n\n writer.on(\"error\", reemit)\n reader.on(\"error\", reemit)\n\n stream.writable = writer.writable\n stream.readable = reader.readable\n\n return stream\n\n function proxyWriter(methodName) {\n stream[methodName] = method\n\n function method() {\n return writer[methodName].apply(writer, arguments)\n }\n }\n\n function proxyReader(methodName) {\n stream[methodName] = method\n\n function method() {\n stream.emit(methodName)\n var func = reader[methodName]\n if (func) {\n return func.apply(reader, arguments)\n }\n reader.emit(methodName)\n }\n }\n\n function proxyStream(methodName) {\n reader.on(methodName, reemit)\n\n function reemit() {\n var args = slice.call(arguments)\n args.unshift(methodName)\n stream.emit.apply(stream, args)\n }\n }\n\n function handleEnd() {\n if (ended) {\n return\n }\n ended = true\n var args = slice.call(arguments)\n args.unshift(\"end\")\n stream.emit.apply(stream, args)\n }\n\n function reemit(err) {\n stream.emit(\"error\", err)\n }\n}\n","var once = require('once');\n\nvar noop = function() {};\n\nvar isRequest = function(stream) {\n\treturn stream.setHeader && typeof stream.abort === 'function';\n};\n\nvar isChildProcess = function(stream) {\n\treturn stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3\n};\n\nvar eos = function(stream, opts, callback) {\n\tif (typeof opts === 'function') return eos(stream, null, opts);\n\tif (!opts) opts = {};\n\n\tcallback = once(callback || noop);\n\n\tvar ws = stream._writableState;\n\tvar rs = stream._readableState;\n\tvar readable = opts.readable || (opts.readable !== false && stream.readable);\n\tvar writable = opts.writable || (opts.writable !== false && stream.writable);\n\tvar cancelled = false;\n\n\tvar onlegacyfinish = function() {\n\t\tif (!stream.writable) onfinish();\n\t};\n\n\tvar onfinish = function() {\n\t\twritable = false;\n\t\tif (!readable) callback.call(stream);\n\t};\n\n\tvar onend = function() {\n\t\treadable = false;\n\t\tif (!writable) callback.call(stream);\n\t};\n\n\tvar onexit = function(exitCode) {\n\t\tcallback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);\n\t};\n\n\tvar onerror = function(err) {\n\t\tcallback.call(stream, err);\n\t};\n\n\tvar onclose = function() {\n\t\tprocess.nextTick(onclosenexttick);\n\t};\n\n\tvar onclosenexttick = function() {\n\t\tif (cancelled) return;\n\t\tif (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close'));\n\t\tif (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close'));\n\t};\n\n\tvar onrequest = function() {\n\t\tstream.req.on('finish', onfinish);\n\t};\n\n\tif (isRequest(stream)) {\n\t\tstream.on('complete', onfinish);\n\t\tstream.on('abort', onclose);\n\t\tif (stream.req) onrequest();\n\t\telse stream.on('request', onrequest);\n\t} else if (writable && !ws) { // legacy streams\n\t\tstream.on('end', onlegacyfinish);\n\t\tstream.on('close', onlegacyfinish);\n\t}\n\n\tif (isChildProcess(stream)) stream.on('exit', onexit);\n\n\tstream.on('end', onend);\n\tstream.on('finish', onfinish);\n\tif (opts.error !== false) stream.on('error', onerror);\n\tstream.on('close', onclose);\n\n\treturn function() {\n\t\tcancelled = true;\n\t\tstream.removeListener('complete', onfinish);\n\t\tstream.removeListener('abort', onclose);\n\t\tstream.removeListener('request', onrequest);\n\t\tif (stream.req) stream.req.removeListener('finish', onfinish);\n\t\tstream.removeListener('end', onlegacyfinish);\n\t\tstream.removeListener('close', onlegacyfinish);\n\t\tstream.removeListener('finish', onfinish);\n\t\tstream.removeListener('exit', onexit);\n\t\tstream.removeListener('end', onend);\n\t\tstream.removeListener('error', onerror);\n\t\tstream.removeListener('close', onclose);\n\t};\n};\n\nmodule.exports = eos;\n","'use strict';\n\nvar util = require('util');\nvar isArrayish = require('is-arrayish');\n\nvar errorEx = function errorEx(name, properties) {\n\tif (!name || name.constructor !== String) {\n\t\tproperties = name || {};\n\t\tname = Error.name;\n\t}\n\n\tvar errorExError = function ErrorEXError(message) {\n\t\tif (!this) {\n\t\t\treturn new ErrorEXError(message);\n\t\t}\n\n\t\tmessage = message instanceof Error\n\t\t\t? message.message\n\t\t\t: (message || this.message);\n\n\t\tError.call(this, message);\n\t\tError.captureStackTrace(this, errorExError);\n\n\t\tthis.name = name;\n\n\t\tObject.defineProperty(this, 'message', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: function () {\n\t\t\t\tvar newMessage = message.split(/\\r?\\n/g);\n\n\t\t\t\tfor (var key in properties) {\n\t\t\t\t\tif (!properties.hasOwnProperty(key)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar modifier = properties[key];\n\n\t\t\t\t\tif ('message' in modifier) {\n\t\t\t\t\t\tnewMessage = modifier.message(this[key], newMessage) || newMessage;\n\t\t\t\t\t\tif (!isArrayish(newMessage)) {\n\t\t\t\t\t\t\tnewMessage = [newMessage];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn newMessage.join('\\n');\n\t\t\t},\n\t\t\tset: function (v) {\n\t\t\t\tmessage = v;\n\t\t\t}\n\t\t});\n\n\t\tvar overwrittenStack = null;\n\n\t\tvar stackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack');\n\t\tvar stackGetter = stackDescriptor.get;\n\t\tvar stackValue = stackDescriptor.value;\n\t\tdelete stackDescriptor.value;\n\t\tdelete stackDescriptor.writable;\n\n\t\tstackDescriptor.set = function (newstack) {\n\t\t\toverwrittenStack = newstack;\n\t\t};\n\n\t\tstackDescriptor.get = function () {\n\t\t\tvar stack = (overwrittenStack || ((stackGetter)\n\t\t\t\t? stackGetter.call(this)\n\t\t\t\t: stackValue)).split(/\\r?\\n+/g);\n\n\t\t\t// starting in Node 7, the stack builder caches the message.\n\t\t\t// just replace it.\n\t\t\tif (!overwrittenStack) {\n\t\t\t\tstack[0] = this.name + ': ' + this.message;\n\t\t\t}\n\n\t\t\tvar lineCount = 1;\n\t\t\tfor (var key in properties) {\n\t\t\t\tif (!properties.hasOwnProperty(key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvar modifier = properties[key];\n\n\t\t\t\tif ('line' in modifier) {\n\t\t\t\t\tvar line = modifier.line(this[key]);\n\t\t\t\t\tif (line) {\n\t\t\t\t\t\tstack.splice(lineCount++, 0, ' ' + line);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ('stack' in modifier) {\n\t\t\t\t\tmodifier.stack(this[key], stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn stack.join('\\n');\n\t\t};\n\n\t\tObject.defineProperty(this, 'stack', stackDescriptor);\n\t};\n\n\tif (Object.setPrototypeOf) {\n\t\tObject.setPrototypeOf(errorExError.prototype, Error.prototype);\n\t\tObject.setPrototypeOf(errorExError, Error);\n\t} else {\n\t\tutil.inherits(errorExError, Error);\n\t}\n\n\treturn errorExError;\n};\n\nerrorEx.append = function (str, def) {\n\treturn {\n\t\tmessage: function (v, message) {\n\t\t\tv = v || def;\n\n\t\t\tif (v) {\n\t\t\t\tmessage[0] += ' ' + str.replace('%s', v.toString());\n\t\t\t}\n\n\t\t\treturn message;\n\t\t}\n\t};\n};\n\nerrorEx.line = function (str, def) {\n\treturn {\n\t\tline: function (v) {\n\t\t\tv = v || def;\n\n\t\t\tif (v) {\n\t\t\t\treturn str.replace('%s', v.toString());\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\t};\n};\n\nmodule.exports = errorEx;\n","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n","'use strict';\nconst path = require('path');\nconst childProcess = require('child_process');\nconst crossSpawn = require('cross-spawn');\nconst stripFinalNewline = require('strip-final-newline');\nconst npmRunPath = require('npm-run-path');\nconst onetime = require('onetime');\nconst makeError = require('./lib/error');\nconst normalizeStdio = require('./lib/stdio');\nconst {spawnedKill, spawnedCancel, setupTimeout, setExitHandler} = require('./lib/kill');\nconst {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = require('./lib/stream.js');\nconst {mergePromise, getSpawnedPromise} = require('./lib/promise.js');\nconst {joinCommand, parseCommand} = require('./lib/command.js');\n\nconst DEFAULT_MAX_BUFFER = 1000 * 1000 * 100;\n\nconst getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => {\n\tconst env = extendEnv ? {...process.env, ...envOption} : envOption;\n\n\tif (preferLocal) {\n\t\treturn npmRunPath.env({env, cwd: localDir, execPath});\n\t}\n\n\treturn env;\n};\n\nconst handleArguments = (file, args, options = {}) => {\n\tconst parsed = crossSpawn._parse(file, args, options);\n\tfile = parsed.command;\n\targs = parsed.args;\n\toptions = parsed.options;\n\n\toptions = {\n\t\tmaxBuffer: DEFAULT_MAX_BUFFER,\n\t\tbuffer: true,\n\t\tstripFinalNewline: true,\n\t\textendEnv: true,\n\t\tpreferLocal: false,\n\t\tlocalDir: options.cwd || process.cwd(),\n\t\texecPath: process.execPath,\n\t\tencoding: 'utf8',\n\t\treject: true,\n\t\tcleanup: true,\n\t\tall: false,\n\t\twindowsHide: true,\n\t\t...options\n\t};\n\n\toptions.env = getEnv(options);\n\n\toptions.stdio = normalizeStdio(options);\n\n\tif (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') {\n\t\t// #116\n\t\targs.unshift('/q');\n\t}\n\n\treturn {file, args, options, parsed};\n};\n\nconst handleOutput = (options, value, error) => {\n\tif (typeof value !== 'string' && !Buffer.isBuffer(value)) {\n\t\t// When `execa.sync()` errors, we normalize it to '' to mimic `execa()`\n\t\treturn error === undefined ? undefined : '';\n\t}\n\n\tif (options.stripFinalNewline) {\n\t\treturn stripFinalNewline(value);\n\t}\n\n\treturn value;\n};\n\nconst execa = (file, args, options) => {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\n\tlet spawned;\n\ttry {\n\t\tspawned = childProcess.spawn(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\t// Ensure the returned error is always both a promise and a child process\n\t\tconst dummySpawned = new childProcess.ChildProcess();\n\t\tconst errorPromise = Promise.reject(makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t}));\n\t\treturn mergePromise(dummySpawned, errorPromise);\n\t}\n\n\tconst spawnedPromise = getSpawnedPromise(spawned);\n\tconst timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise);\n\tconst processDone = setExitHandler(spawned, parsed.options, timedPromise);\n\n\tconst context = {isCanceled: false};\n\n\tspawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned));\n\tspawned.cancel = spawnedCancel.bind(null, spawned, context);\n\n\tconst handlePromise = async () => {\n\t\tconst [{error, exitCode, signal, timedOut}, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone);\n\t\tconst stdout = handleOutput(parsed.options, stdoutResult);\n\t\tconst stderr = handleOutput(parsed.options, stderrResult);\n\t\tconst all = handleOutput(parsed.options, allResult);\n\n\t\tif (error || exitCode !== 0 || signal !== null) {\n\t\t\tconst returnedError = makeError({\n\t\t\t\terror,\n\t\t\t\texitCode,\n\t\t\t\tsignal,\n\t\t\t\tstdout,\n\t\t\t\tstderr,\n\t\t\t\tall,\n\t\t\t\tcommand,\n\t\t\t\tparsed,\n\t\t\t\ttimedOut,\n\t\t\t\tisCanceled: context.isCanceled,\n\t\t\t\tkilled: spawned.killed\n\t\t\t});\n\n\t\t\tif (!parsed.options.reject) {\n\t\t\t\treturn returnedError;\n\t\t\t}\n\n\t\t\tthrow returnedError;\n\t\t}\n\n\t\treturn {\n\t\t\tcommand,\n\t\t\texitCode: 0,\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\tall,\n\t\t\tfailed: false,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t};\n\t};\n\n\tconst handlePromiseOnce = onetime(handlePromise);\n\n\tcrossSpawn._enoent.hookChildProcess(spawned, parsed.parsed);\n\n\thandleInput(spawned, parsed.options.input);\n\n\tspawned.all = makeAllStream(spawned, parsed.options);\n\n\treturn mergePromise(spawned, handlePromiseOnce);\n};\n\nmodule.exports = execa;\n\nmodule.exports.sync = (file, args, options) => {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\n\tvalidateInputSync(parsed.options);\n\n\tlet result;\n\ttry {\n\t\tresult = childProcess.spawnSync(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\tthrow makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t});\n\t}\n\n\tconst stdout = handleOutput(parsed.options, result.stdout, result.error);\n\tconst stderr = handleOutput(parsed.options, result.stderr, result.error);\n\n\tif (result.error || result.status !== 0 || result.signal !== null) {\n\t\tconst error = makeError({\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\terror: result.error,\n\t\t\tsignal: result.signal,\n\t\t\texitCode: result.status,\n\t\t\tcommand,\n\t\t\tparsed,\n\t\t\ttimedOut: result.error && result.error.code === 'ETIMEDOUT',\n\t\t\tisCanceled: false,\n\t\t\tkilled: result.signal !== null\n\t\t});\n\n\t\tif (!parsed.options.reject) {\n\t\t\treturn error;\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\treturn {\n\t\tcommand,\n\t\texitCode: 0,\n\t\tstdout,\n\t\tstderr,\n\t\tfailed: false,\n\t\ttimedOut: false,\n\t\tisCanceled: false,\n\t\tkilled: false\n\t};\n};\n\nmodule.exports.command = (command, options) => {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa(file, args, options);\n};\n\nmodule.exports.commandSync = (command, options) => {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa.sync(file, args, options);\n};\n\nmodule.exports.node = (scriptPath, args, options = {}) => {\n\tif (args && !Array.isArray(args) && typeof args === 'object') {\n\t\toptions = args;\n\t\targs = [];\n\t}\n\n\tconst stdio = normalizeStdio.node(options);\n\tconst defaultExecArgv = process.execArgv.filter(arg => !arg.startsWith('--inspect'));\n\n\tconst {\n\t\tnodePath = process.execPath,\n\t\tnodeOptions = defaultExecArgv\n\t} = options;\n\n\treturn execa(\n\t\tnodePath,\n\t\t[\n\t\t\t...nodeOptions,\n\t\t\tscriptPath,\n\t\t\t...(Array.isArray(args) ? args : [])\n\t\t],\n\t\t{\n\t\t\t...options,\n\t\t\tstdin: undefined,\n\t\t\tstdout: undefined,\n\t\t\tstderr: undefined,\n\t\t\tstdio,\n\t\t\tshell: false\n\t\t}\n\t);\n};\n","'use strict';\nconst SPACES_REGEXP = / +/g;\n\nconst joinCommand = (file, args = []) => {\n\tif (!Array.isArray(args)) {\n\t\treturn file;\n\t}\n\n\treturn [file, ...args].join(' ');\n};\n\n// Handle `execa.command()`\nconst parseCommand = command => {\n\tconst tokens = [];\n\tfor (const token of command.trim().split(SPACES_REGEXP)) {\n\t\t// Allow spaces to be escaped by a backslash if not meant as a delimiter\n\t\tconst previousToken = tokens[tokens.length - 1];\n\t\tif (previousToken && previousToken.endsWith('\\\\')) {\n\t\t\t// Merge previous token with current one\n\t\t\ttokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`;\n\t\t} else {\n\t\t\ttokens.push(token);\n\t\t}\n\t}\n\n\treturn tokens;\n};\n\nmodule.exports = {\n\tjoinCommand,\n\tparseCommand\n};\n","'use strict';\nconst {signalsByName} = require('human-signals');\n\nconst getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => {\n\tif (timedOut) {\n\t\treturn `timed out after ${timeout} milliseconds`;\n\t}\n\n\tif (isCanceled) {\n\t\treturn 'was canceled';\n\t}\n\n\tif (errorCode !== undefined) {\n\t\treturn `failed with ${errorCode}`;\n\t}\n\n\tif (signal !== undefined) {\n\t\treturn `was killed with ${signal} (${signalDescription})`;\n\t}\n\n\tif (exitCode !== undefined) {\n\t\treturn `failed with exit code ${exitCode}`;\n\t}\n\n\treturn 'failed';\n};\n\nconst makeError = ({\n\tstdout,\n\tstderr,\n\tall,\n\terror,\n\tsignal,\n\texitCode,\n\tcommand,\n\ttimedOut,\n\tisCanceled,\n\tkilled,\n\tparsed: {options: {timeout}}\n}) => {\n\t// `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`.\n\t// We normalize them to `undefined`\n\texitCode = exitCode === null ? undefined : exitCode;\n\tsignal = signal === null ? undefined : signal;\n\tconst signalDescription = signal === undefined ? undefined : signalsByName[signal].description;\n\n\tconst errorCode = error && error.code;\n\n\tconst prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled});\n\tconst execaMessage = `Command ${prefix}: ${command}`;\n\tconst isError = Object.prototype.toString.call(error) === '[object Error]';\n\tconst shortMessage = isError ? `${execaMessage}\\n${error.message}` : execaMessage;\n\tconst message = [shortMessage, stderr, stdout].filter(Boolean).join('\\n');\n\n\tif (isError) {\n\t\terror.originalMessage = error.message;\n\t\terror.message = message;\n\t} else {\n\t\terror = new Error(message);\n\t}\n\n\terror.shortMessage = shortMessage;\n\terror.command = command;\n\terror.exitCode = exitCode;\n\terror.signal = signal;\n\terror.signalDescription = signalDescription;\n\terror.stdout = stdout;\n\terror.stderr = stderr;\n\n\tif (all !== undefined) {\n\t\terror.all = all;\n\t}\n\n\tif ('bufferedData' in error) {\n\t\tdelete error.bufferedData;\n\t}\n\n\terror.failed = true;\n\terror.timedOut = Boolean(timedOut);\n\terror.isCanceled = isCanceled;\n\terror.killed = killed && !timedOut;\n\n\treturn error;\n};\n\nmodule.exports = makeError;\n","'use strict';\nconst os = require('os');\nconst onExit = require('signal-exit');\n\nconst DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5;\n\n// Monkey-patches `childProcess.kill()` to add `forceKillAfterTimeout` behavior\nconst spawnedKill = (kill, signal = 'SIGTERM', options = {}) => {\n\tconst killResult = kill(signal);\n\tsetKillTimeout(kill, signal, options, killResult);\n\treturn killResult;\n};\n\nconst setKillTimeout = (kill, signal, options, killResult) => {\n\tif (!shouldForceKill(signal, options, killResult)) {\n\t\treturn;\n\t}\n\n\tconst timeout = getForceKillAfterTimeout(options);\n\tconst t = setTimeout(() => {\n\t\tkill('SIGKILL');\n\t}, timeout);\n\n\t// Guarded because there's no `.unref()` when `execa` is used in the renderer\n\t// process in Electron. This cannot be tested since we don't run tests in\n\t// Electron.\n\t// istanbul ignore else\n\tif (t.unref) {\n\t\tt.unref();\n\t}\n};\n\nconst shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => {\n\treturn isSigterm(signal) && forceKillAfterTimeout !== false && killResult;\n};\n\nconst isSigterm = signal => {\n\treturn signal === os.constants.signals.SIGTERM ||\n\t\t(typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM');\n};\n\nconst getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => {\n\tif (forceKillAfterTimeout === true) {\n\t\treturn DEFAULT_FORCE_KILL_TIMEOUT;\n\t}\n\n\tif (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) {\n\t\tthrow new TypeError(`Expected the \\`forceKillAfterTimeout\\` option to be a non-negative integer, got \\`${forceKillAfterTimeout}\\` (${typeof forceKillAfterTimeout})`);\n\t}\n\n\treturn forceKillAfterTimeout;\n};\n\n// `childProcess.cancel()`\nconst spawnedCancel = (spawned, context) => {\n\tconst killResult = spawned.kill();\n\n\tif (killResult) {\n\t\tcontext.isCanceled = true;\n\t}\n};\n\nconst timeoutKill = (spawned, signal, reject) => {\n\tspawned.kill(signal);\n\treject(Object.assign(new Error('Timed out'), {timedOut: true, signal}));\n};\n\n// `timeout` option handling\nconst setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => {\n\tif (timeout === 0 || timeout === undefined) {\n\t\treturn spawnedPromise;\n\t}\n\n\tif (!Number.isFinite(timeout) || timeout < 0) {\n\t\tthrow new TypeError(`Expected the \\`timeout\\` option to be a non-negative integer, got \\`${timeout}\\` (${typeof timeout})`);\n\t}\n\n\tlet timeoutId;\n\tconst timeoutPromise = new Promise((resolve, reject) => {\n\t\ttimeoutId = setTimeout(() => {\n\t\t\ttimeoutKill(spawned, killSignal, reject);\n\t\t}, timeout);\n\t});\n\n\tconst safeSpawnedPromise = spawnedPromise.finally(() => {\n\t\tclearTimeout(timeoutId);\n\t});\n\n\treturn Promise.race([timeoutPromise, safeSpawnedPromise]);\n};\n\n// `cleanup` option handling\nconst setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => {\n\tif (!cleanup || detached) {\n\t\treturn timedPromise;\n\t}\n\n\tconst removeExitHandler = onExit(() => {\n\t\tspawned.kill();\n\t});\n\n\treturn timedPromise.finally(() => {\n\t\tremoveExitHandler();\n\t});\n};\n\nmodule.exports = {\n\tspawnedKill,\n\tspawnedCancel,\n\tsetupTimeout,\n\tsetExitHandler\n};\n","'use strict';\n\nconst nativePromisePrototype = (async () => {})().constructor.prototype;\nconst descriptors = ['then', 'catch', 'finally'].map(property => [\n\tproperty,\n\tReflect.getOwnPropertyDescriptor(nativePromisePrototype, property)\n]);\n\n// The return value is a mixin of `childProcess` and `Promise`\nconst mergePromise = (spawned, promise) => {\n\tfor (const [property, descriptor] of descriptors) {\n\t\t// Starting the main `promise` is deferred to avoid consuming streams\n\t\tconst value = typeof promise === 'function' ?\n\t\t\t(...args) => Reflect.apply(descriptor.value, promise(), args) :\n\t\t\tdescriptor.value.bind(promise);\n\n\t\tReflect.defineProperty(spawned, property, {...descriptor, value});\n\t}\n\n\treturn spawned;\n};\n\n// Use promises instead of `child_process` events\nconst getSpawnedPromise = spawned => {\n\treturn new Promise((resolve, reject) => {\n\t\tspawned.on('exit', (exitCode, signal) => {\n\t\t\tresolve({exitCode, signal});\n\t\t});\n\n\t\tspawned.on('error', error => {\n\t\t\treject(error);\n\t\t});\n\n\t\tif (spawned.stdin) {\n\t\t\tspawned.stdin.on('error', error => {\n\t\t\t\treject(error);\n\t\t\t});\n\t\t}\n\t});\n};\n\nmodule.exports = {\n\tmergePromise,\n\tgetSpawnedPromise\n};\n\n","'use strict';\nconst aliases = ['stdin', 'stdout', 'stderr'];\n\nconst hasAlias = opts => aliases.some(alias => opts[alias] !== undefined);\n\nconst normalizeStdio = opts => {\n\tif (!opts) {\n\t\treturn;\n\t}\n\n\tconst {stdio} = opts;\n\n\tif (stdio === undefined) {\n\t\treturn aliases.map(alias => opts[alias]);\n\t}\n\n\tif (hasAlias(opts)) {\n\t\tthrow new Error(`It's not possible to provide \\`stdio\\` in combination with one of ${aliases.map(alias => `\\`${alias}\\``).join(', ')}`);\n\t}\n\n\tif (typeof stdio === 'string') {\n\t\treturn stdio;\n\t}\n\n\tif (!Array.isArray(stdio)) {\n\t\tthrow new TypeError(`Expected \\`stdio\\` to be of type \\`string\\` or \\`Array\\`, got \\`${typeof stdio}\\``);\n\t}\n\n\tconst length = Math.max(stdio.length, aliases.length);\n\treturn Array.from({length}, (value, index) => stdio[index]);\n};\n\nmodule.exports = normalizeStdio;\n\n// `ipc` is pushed unless it is already present\nmodule.exports.node = opts => {\n\tconst stdio = normalizeStdio(opts);\n\n\tif (stdio === 'ipc') {\n\t\treturn 'ipc';\n\t}\n\n\tif (stdio === undefined || typeof stdio === 'string') {\n\t\treturn [stdio, stdio, stdio, 'ipc'];\n\t}\n\n\tif (stdio.includes('ipc')) {\n\t\treturn stdio;\n\t}\n\n\treturn [...stdio, 'ipc'];\n};\n","'use strict';\nconst isStream = require('is-stream');\nconst getStream = require('get-stream');\nconst mergeStream = require('merge-stream');\n\n// `input` option\nconst handleInput = (spawned, input) => {\n\t// Checking for stdin is workaround for https://github.com/nodejs/node/issues/26852\n\t// TODO: Remove `|| spawned.stdin === undefined` once we drop support for Node.js <=12.2.0\n\tif (input === undefined || spawned.stdin === undefined) {\n\t\treturn;\n\t}\n\n\tif (isStream(input)) {\n\t\tinput.pipe(spawned.stdin);\n\t} else {\n\t\tspawned.stdin.end(input);\n\t}\n};\n\n// `all` interleaves `stdout` and `stderr`\nconst makeAllStream = (spawned, {all}) => {\n\tif (!all || (!spawned.stdout && !spawned.stderr)) {\n\t\treturn;\n\t}\n\n\tconst mixed = mergeStream();\n\n\tif (spawned.stdout) {\n\t\tmixed.add(spawned.stdout);\n\t}\n\n\tif (spawned.stderr) {\n\t\tmixed.add(spawned.stderr);\n\t}\n\n\treturn mixed;\n};\n\n// On failure, `result.stdout|stderr|all` should contain the currently buffered stream\nconst getBufferedData = async (stream, streamPromise) => {\n\tif (!stream) {\n\t\treturn;\n\t}\n\n\tstream.destroy();\n\n\ttry {\n\t\treturn await streamPromise;\n\t} catch (error) {\n\t\treturn error.bufferedData;\n\t}\n};\n\nconst getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => {\n\tif (!stream || !buffer) {\n\t\treturn;\n\t}\n\n\tif (encoding) {\n\t\treturn getStream(stream, {encoding, maxBuffer});\n\t}\n\n\treturn getStream.buffer(stream, {maxBuffer});\n};\n\n// Retrieve result of child process: exit code, signal, error, streams (stdout/stderr/all)\nconst getSpawnedResult = async ({stdout, stderr, all}, {encoding, buffer, maxBuffer}, processDone) => {\n\tconst stdoutPromise = getStreamPromise(stdout, {encoding, buffer, maxBuffer});\n\tconst stderrPromise = getStreamPromise(stderr, {encoding, buffer, maxBuffer});\n\tconst allPromise = getStreamPromise(all, {encoding, buffer, maxBuffer: maxBuffer * 2});\n\n\ttry {\n\t\treturn await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]);\n\t} catch (error) {\n\t\treturn Promise.all([\n\t\t\t{error, signal: error.signal, timedOut: error.timedOut},\n\t\t\tgetBufferedData(stdout, stdoutPromise),\n\t\t\tgetBufferedData(stderr, stderrPromise),\n\t\t\tgetBufferedData(all, allPromise)\n\t\t]);\n\t}\n};\n\nconst validateInputSync = ({input}) => {\n\tif (isStream(input)) {\n\t\tthrow new TypeError('The `input` option cannot be a stream in sync mode');\n\t}\n};\n\nmodule.exports = {\n\thandleInput,\n\tmakeAllStream,\n\tgetSpawnedResult,\n\tvalidateInputSync\n};\n\n","\"use strict\";\nconst taskManager = require(\"./managers/tasks\");\nconst patternManager = require(\"./managers/patterns\");\nconst async_1 = require(\"./providers/async\");\nconst stream_1 = require(\"./providers/stream\");\nconst sync_1 = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nconst utils = require(\"./utils\");\nasync function FastGlob(source, options) {\n assertPatternsInput(source);\n const works = getWorks(source, async_1.default, options);\n const result = await Promise.all(works);\n return utils.array.flatten(result);\n}\n// https://github.com/typescript-eslint/typescript-eslint/issues/60\n// eslint-disable-next-line no-redeclare\n(function (FastGlob) {\n function sync(source, options) {\n assertPatternsInput(source);\n const works = getWorks(source, sync_1.default, options);\n return utils.array.flatten(works);\n }\n FastGlob.sync = sync;\n function stream(source, options) {\n assertPatternsInput(source);\n const works = getWorks(source, stream_1.default, options);\n /**\n * The stream returned by the provider cannot work with an asynchronous iterator.\n * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams.\n * This affects performance (+25%). I don't see best solution right now.\n */\n return utils.stream.merge(works);\n }\n FastGlob.stream = stream;\n function generateTasks(source, options) {\n assertPatternsInput(source);\n const patterns = patternManager.transform([].concat(source));\n const settings = new settings_1.default(options);\n return taskManager.generate(patterns, settings);\n }\n FastGlob.generateTasks = generateTasks;\n function isDynamicPattern(source, options) {\n assertPatternsInput(source);\n const settings = new settings_1.default(options);\n return utils.pattern.isDynamicPattern(source, settings);\n }\n FastGlob.isDynamicPattern = isDynamicPattern;\n function escapePath(source) {\n assertPatternsInput(source);\n return utils.path.escape(source);\n }\n FastGlob.escapePath = escapePath;\n})(FastGlob || (FastGlob = {}));\nfunction getWorks(source, _Provider, options) {\n const patterns = patternManager.transform([].concat(source));\n const settings = new settings_1.default(options);\n const tasks = taskManager.generate(patterns, settings);\n const provider = new _Provider(settings);\n return tasks.map(provider.read, provider);\n}\nfunction assertPatternsInput(input) {\n const source = [].concat(input);\n const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item));\n if (!isValidSource) {\n throw new TypeError('Patterns must be a string (non empty) or an array of strings');\n }\n}\nmodule.exports = FastGlob;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.removeDuplicateSlashes = exports.transform = void 0;\n/**\n * Matches a sequence of two or more consecutive slashes, excluding the first two slashes at the beginning of the string.\n * The latter is due to the presence of the device path at the beginning of the UNC path.\n * @todo rewrite to negative lookbehind with the next major release.\n */\nconst DOUBLE_SLASH_RE = /(?!^)\\/{2,}/g;\nfunction transform(patterns) {\n return patterns.map((pattern) => removeDuplicateSlashes(pattern));\n}\nexports.transform = transform;\n/**\n * This package only works with forward slashes as a path separator.\n * Because of this, we cannot use the standard `path.normalize` method, because on Windows platform it will use of backslashes.\n */\nfunction removeDuplicateSlashes(pattern) {\n return pattern.replace(DOUBLE_SLASH_RE, '/');\n}\nexports.removeDuplicateSlashes = removeDuplicateSlashes;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0;\nconst utils = require(\"../utils\");\nfunction generate(patterns, settings) {\n const positivePatterns = getPositivePatterns(patterns);\n const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore);\n const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings));\n const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings));\n const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false);\n const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true);\n return staticTasks.concat(dynamicTasks);\n}\nexports.generate = generate;\n/**\n * Returns tasks grouped by basic pattern directories.\n *\n * Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately.\n * This is necessary because directory traversal starts at the base directory and goes deeper.\n */\nfunction convertPatternsToTasks(positive, negative, dynamic) {\n const tasks = [];\n const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive);\n const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive);\n const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory);\n const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory);\n tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic));\n /*\n * For the sake of reducing future accesses to the file system, we merge all tasks within the current directory\n * into a global task, if at least one pattern refers to the root (`.`). In this case, the global task covers the rest.\n */\n if ('.' in insideCurrentDirectoryGroup) {\n tasks.push(convertPatternGroupToTask('.', patternsInsideCurrentDirectory, negative, dynamic));\n }\n else {\n tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic));\n }\n return tasks;\n}\nexports.convertPatternsToTasks = convertPatternsToTasks;\nfunction getPositivePatterns(patterns) {\n return utils.pattern.getPositivePatterns(patterns);\n}\nexports.getPositivePatterns = getPositivePatterns;\nfunction getNegativePatternsAsPositive(patterns, ignore) {\n const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore);\n const positive = negative.map(utils.pattern.convertToPositivePattern);\n return positive;\n}\nexports.getNegativePatternsAsPositive = getNegativePatternsAsPositive;\nfunction groupPatternsByBaseDirectory(patterns) {\n const group = {};\n return patterns.reduce((collection, pattern) => {\n const base = utils.pattern.getBaseDirectory(pattern);\n if (base in collection) {\n collection[base].push(pattern);\n }\n else {\n collection[base] = [pattern];\n }\n return collection;\n }, group);\n}\nexports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory;\nfunction convertPatternGroupsToTasks(positive, negative, dynamic) {\n return Object.keys(positive).map((base) => {\n return convertPatternGroupToTask(base, positive[base], negative, dynamic);\n });\n}\nexports.convertPatternGroupsToTasks = convertPatternGroupsToTasks;\nfunction convertPatternGroupToTask(base, positive, negative, dynamic) {\n return {\n dynamic,\n positive,\n negative,\n base,\n patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern))\n };\n}\nexports.convertPatternGroupToTask = convertPatternGroupToTask;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"../readers/stream\");\nconst provider_1 = require(\"./provider\");\nclass ProviderAsync extends provider_1.default {\n constructor() {\n super(...arguments);\n this._reader = new stream_1.default(this._settings);\n }\n read(task) {\n const root = this._getRootDirectory(task);\n const options = this._getReaderOptions(task);\n const entries = [];\n return new Promise((resolve, reject) => {\n const stream = this.api(root, task, options);\n stream.once('error', reject);\n stream.on('data', (entry) => entries.push(options.transform(entry)));\n stream.once('end', () => resolve(entries));\n });\n }\n api(root, task, options) {\n if (task.dynamic) {\n return this._reader.dynamic(root, options);\n }\n return this._reader.static(task.patterns, options);\n }\n}\nexports.default = ProviderAsync;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nconst partial_1 = require(\"../matchers/partial\");\nclass DeepFilter {\n constructor(_settings, _micromatchOptions) {\n this._settings = _settings;\n this._micromatchOptions = _micromatchOptions;\n }\n getFilter(basePath, positive, negative) {\n const matcher = this._getMatcher(positive);\n const negativeRe = this._getNegativePatternsRe(negative);\n return (entry) => this._filter(basePath, entry, matcher, negativeRe);\n }\n _getMatcher(patterns) {\n return new partial_1.default(patterns, this._settings, this._micromatchOptions);\n }\n _getNegativePatternsRe(patterns) {\n const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern);\n return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions);\n }\n _filter(basePath, entry, matcher, negativeRe) {\n if (this._isSkippedByDeep(basePath, entry.path)) {\n return false;\n }\n if (this._isSkippedSymbolicLink(entry)) {\n return false;\n }\n const filepath = utils.path.removeLeadingDotSegment(entry.path);\n if (this._isSkippedByPositivePatterns(filepath, matcher)) {\n return false;\n }\n return this._isSkippedByNegativePatterns(filepath, negativeRe);\n }\n _isSkippedByDeep(basePath, entryPath) {\n /**\n * Avoid unnecessary depth calculations when it doesn't matter.\n */\n if (this._settings.deep === Infinity) {\n return false;\n }\n return this._getEntryLevel(basePath, entryPath) >= this._settings.deep;\n }\n _getEntryLevel(basePath, entryPath) {\n const entryPathDepth = entryPath.split('/').length;\n if (basePath === '') {\n return entryPathDepth;\n }\n const basePathDepth = basePath.split('/').length;\n return entryPathDepth - basePathDepth;\n }\n _isSkippedSymbolicLink(entry) {\n return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink();\n }\n _isSkippedByPositivePatterns(entryPath, matcher) {\n return !this._settings.baseNameMatch && !matcher.match(entryPath);\n }\n _isSkippedByNegativePatterns(entryPath, patternsRe) {\n return !utils.pattern.matchAny(entryPath, patternsRe);\n }\n}\nexports.default = DeepFilter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass EntryFilter {\n constructor(_settings, _micromatchOptions) {\n this._settings = _settings;\n this._micromatchOptions = _micromatchOptions;\n this.index = new Map();\n }\n getFilter(positive, negative) {\n const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions);\n const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions);\n return (entry) => this._filter(entry, positiveRe, negativeRe);\n }\n _filter(entry, positiveRe, negativeRe) {\n if (this._settings.unique && this._isDuplicateEntry(entry)) {\n return false;\n }\n if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) {\n return false;\n }\n if (this._isSkippedByAbsoluteNegativePatterns(entry.path, negativeRe)) {\n return false;\n }\n const filepath = this._settings.baseNameMatch ? entry.name : entry.path;\n const isMatched = this._isMatchToPatterns(filepath, positiveRe) && !this._isMatchToPatterns(entry.path, negativeRe);\n if (this._settings.unique && isMatched) {\n this._createIndexRecord(entry);\n }\n return isMatched;\n }\n _isDuplicateEntry(entry) {\n return this.index.has(entry.path);\n }\n _createIndexRecord(entry) {\n this.index.set(entry.path, undefined);\n }\n _onlyFileFilter(entry) {\n return this._settings.onlyFiles && !entry.dirent.isFile();\n }\n _onlyDirectoryFilter(entry) {\n return this._settings.onlyDirectories && !entry.dirent.isDirectory();\n }\n _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) {\n if (!this._settings.absolute) {\n return false;\n }\n const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath);\n return utils.pattern.matchAny(fullpath, patternsRe);\n }\n /**\n * First, just trying to apply patterns to the path.\n * Second, trying to apply patterns to the path with final slash.\n */\n _isMatchToPatterns(entryPath, patternsRe) {\n const filepath = utils.path.removeLeadingDotSegment(entryPath);\n return utils.pattern.matchAny(filepath, patternsRe) || utils.pattern.matchAny(filepath + '/', patternsRe);\n }\n}\nexports.default = EntryFilter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass ErrorFilter {\n constructor(_settings) {\n this._settings = _settings;\n }\n getFilter() {\n return (error) => this._isNonFatalError(error);\n }\n _isNonFatalError(error) {\n return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors;\n }\n}\nexports.default = ErrorFilter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass Matcher {\n constructor(_patterns, _settings, _micromatchOptions) {\n this._patterns = _patterns;\n this._settings = _settings;\n this._micromatchOptions = _micromatchOptions;\n this._storage = [];\n this._fillStorage();\n }\n _fillStorage() {\n /**\n * The original pattern may include `{,*,**,a/*}`, which will lead to problems with matching (unresolved level).\n * So, before expand patterns with brace expansion into separated patterns.\n */\n const patterns = utils.pattern.expandPatternsWithBraceExpansion(this._patterns);\n for (const pattern of patterns) {\n const segments = this._getPatternSegments(pattern);\n const sections = this._splitSegmentsIntoSections(segments);\n this._storage.push({\n complete: sections.length <= 1,\n pattern,\n segments,\n sections\n });\n }\n }\n _getPatternSegments(pattern) {\n const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions);\n return parts.map((part) => {\n const dynamic = utils.pattern.isDynamicPattern(part, this._settings);\n if (!dynamic) {\n return {\n dynamic: false,\n pattern: part\n };\n }\n return {\n dynamic: true,\n pattern: part,\n patternRe: utils.pattern.makeRe(part, this._micromatchOptions)\n };\n });\n }\n _splitSegmentsIntoSections(segments) {\n return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern));\n }\n}\nexports.default = Matcher;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst matcher_1 = require(\"./matcher\");\nclass PartialMatcher extends matcher_1.default {\n match(filepath) {\n const parts = filepath.split('/');\n const levels = parts.length;\n const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels);\n for (const pattern of patterns) {\n const section = pattern.sections[0];\n /**\n * In this case, the pattern has a globstar and we must read all directories unconditionally,\n * but only if the level has reached the end of the first group.\n *\n * fixtures/{a,b}/**\n * ^ true/false ^ always true\n */\n if (!pattern.complete && levels > section.length) {\n return true;\n }\n const match = parts.every((part, index) => {\n const segment = pattern.segments[index];\n if (segment.dynamic && segment.patternRe.test(part)) {\n return true;\n }\n if (!segment.dynamic && segment.pattern === part) {\n return true;\n }\n return false;\n });\n if (match) {\n return true;\n }\n }\n return false;\n }\n}\nexports.default = PartialMatcher;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst deep_1 = require(\"./filters/deep\");\nconst entry_1 = require(\"./filters/entry\");\nconst error_1 = require(\"./filters/error\");\nconst entry_2 = require(\"./transformers/entry\");\nclass Provider {\n constructor(_settings) {\n this._settings = _settings;\n this.errorFilter = new error_1.default(this._settings);\n this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions());\n this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions());\n this.entryTransformer = new entry_2.default(this._settings);\n }\n _getRootDirectory(task) {\n return path.resolve(this._settings.cwd, task.base);\n }\n _getReaderOptions(task) {\n const basePath = task.base === '.' ? '' : task.base;\n return {\n basePath,\n pathSegmentSeparator: '/',\n concurrency: this._settings.concurrency,\n deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative),\n entryFilter: this.entryFilter.getFilter(task.positive, task.negative),\n errorFilter: this.errorFilter.getFilter(),\n followSymbolicLinks: this._settings.followSymbolicLinks,\n fs: this._settings.fs,\n stats: this._settings.stats,\n throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink,\n transform: this.entryTransformer.getTransformer()\n };\n }\n _getMicromatchOptions() {\n return {\n dot: this._settings.dot,\n matchBase: this._settings.baseNameMatch,\n nobrace: !this._settings.braceExpansion,\n nocase: !this._settings.caseSensitiveMatch,\n noext: !this._settings.extglob,\n noglobstar: !this._settings.globstar,\n posix: true,\n strictSlashes: false\n };\n }\n}\nexports.default = Provider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\nconst stream_2 = require(\"../readers/stream\");\nconst provider_1 = require(\"./provider\");\nclass ProviderStream extends provider_1.default {\n constructor() {\n super(...arguments);\n this._reader = new stream_2.default(this._settings);\n }\n read(task) {\n const root = this._getRootDirectory(task);\n const options = this._getReaderOptions(task);\n const source = this.api(root, task, options);\n const destination = new stream_1.Readable({ objectMode: true, read: () => { } });\n source\n .once('error', (error) => destination.emit('error', error))\n .on('data', (entry) => destination.emit('data', options.transform(entry)))\n .once('end', () => destination.emit('end'));\n destination\n .once('close', () => source.destroy());\n return destination;\n }\n api(root, task, options) {\n if (task.dynamic) {\n return this._reader.dynamic(root, options);\n }\n return this._reader.static(task.patterns, options);\n }\n}\nexports.default = ProviderStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst sync_1 = require(\"../readers/sync\");\nconst provider_1 = require(\"./provider\");\nclass ProviderSync extends provider_1.default {\n constructor() {\n super(...arguments);\n this._reader = new sync_1.default(this._settings);\n }\n read(task) {\n const root = this._getRootDirectory(task);\n const options = this._getReaderOptions(task);\n const entries = this.api(root, task, options);\n return entries.map(options.transform);\n }\n api(root, task, options) {\n if (task.dynamic) {\n return this._reader.dynamic(root, options);\n }\n return this._reader.static(task.patterns, options);\n }\n}\nexports.default = ProviderSync;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass EntryTransformer {\n constructor(_settings) {\n this._settings = _settings;\n }\n getTransformer() {\n return (entry) => this._transform(entry);\n }\n _transform(entry) {\n let filepath = entry.path;\n if (this._settings.absolute) {\n filepath = utils.path.makeAbsolute(this._settings.cwd, filepath);\n filepath = utils.path.unixify(filepath);\n }\n if (this._settings.markDirectories && entry.dirent.isDirectory()) {\n filepath += '/';\n }\n if (!this._settings.objectMode) {\n return filepath;\n }\n return Object.assign(Object.assign({}, entry), { path: filepath });\n }\n}\nexports.default = EntryTransformer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst utils = require(\"../utils\");\nclass Reader {\n constructor(_settings) {\n this._settings = _settings;\n this._fsStatSettings = new fsStat.Settings({\n followSymbolicLink: this._settings.followSymbolicLinks,\n fs: this._settings.fs,\n throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks\n });\n }\n _getFullEntryPath(filepath) {\n return path.resolve(this._settings.cwd, filepath);\n }\n _makeEntry(stats, pattern) {\n const entry = {\n name: pattern,\n path: pattern,\n dirent: utils.fs.createDirentFromStats(pattern, stats)\n };\n if (this._settings.stats) {\n entry.stats = stats;\n }\n return entry;\n }\n _isFatalError(error) {\n return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors;\n }\n}\nexports.default = Reader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst fsWalk = require(\"@nodelib/fs.walk\");\nconst reader_1 = require(\"./reader\");\nclass ReaderStream extends reader_1.default {\n constructor() {\n super(...arguments);\n this._walkStream = fsWalk.walkStream;\n this._stat = fsStat.stat;\n }\n dynamic(root, options) {\n return this._walkStream(root, options);\n }\n static(patterns, options) {\n const filepaths = patterns.map(this._getFullEntryPath, this);\n const stream = new stream_1.PassThrough({ objectMode: true });\n stream._write = (index, _enc, done) => {\n return this._getEntry(filepaths[index], patterns[index], options)\n .then((entry) => {\n if (entry !== null && options.entryFilter(entry)) {\n stream.push(entry);\n }\n if (index === filepaths.length - 1) {\n stream.end();\n }\n done();\n })\n .catch(done);\n };\n for (let i = 0; i < filepaths.length; i++) {\n stream.write(i);\n }\n return stream;\n }\n _getEntry(filepath, pattern, options) {\n return this._getStat(filepath)\n .then((stats) => this._makeEntry(stats, pattern))\n .catch((error) => {\n if (options.errorFilter(error)) {\n return null;\n }\n throw error;\n });\n }\n _getStat(filepath) {\n return new Promise((resolve, reject) => {\n this._stat(filepath, this._fsStatSettings, (error, stats) => {\n return error === null ? resolve(stats) : reject(error);\n });\n });\n }\n}\nexports.default = ReaderStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst fsWalk = require(\"@nodelib/fs.walk\");\nconst reader_1 = require(\"./reader\");\nclass ReaderSync extends reader_1.default {\n constructor() {\n super(...arguments);\n this._walkSync = fsWalk.walkSync;\n this._statSync = fsStat.statSync;\n }\n dynamic(root, options) {\n return this._walkSync(root, options);\n }\n static(patterns, options) {\n const entries = [];\n for (const pattern of patterns) {\n const filepath = this._getFullEntryPath(pattern);\n const entry = this._getEntry(filepath, pattern, options);\n if (entry === null || !options.entryFilter(entry)) {\n continue;\n }\n entries.push(entry);\n }\n return entries;\n }\n _getEntry(filepath, pattern, options) {\n try {\n const stats = this._getStat(filepath);\n return this._makeEntry(stats, pattern);\n }\n catch (error) {\n if (options.errorFilter(error)) {\n return null;\n }\n throw error;\n }\n }\n _getStat(filepath) {\n return this._statSync(filepath, this._fsStatSettings);\n }\n}\nexports.default = ReaderSync;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;\nconst fs = require(\"fs\");\nconst os = require(\"os\");\n/**\n * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero.\n * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107\n */\nconst CPU_COUNT = Math.max(os.cpus().length, 1);\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = {\n lstat: fs.lstat,\n lstatSync: fs.lstatSync,\n stat: fs.stat,\n statSync: fs.statSync,\n readdir: fs.readdir,\n readdirSync: fs.readdirSync\n};\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.absolute = this._getValue(this._options.absolute, false);\n this.baseNameMatch = this._getValue(this._options.baseNameMatch, false);\n this.braceExpansion = this._getValue(this._options.braceExpansion, true);\n this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true);\n this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT);\n this.cwd = this._getValue(this._options.cwd, process.cwd());\n this.deep = this._getValue(this._options.deep, Infinity);\n this.dot = this._getValue(this._options.dot, false);\n this.extglob = this._getValue(this._options.extglob, true);\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true);\n this.fs = this._getFileSystemMethods(this._options.fs);\n this.globstar = this._getValue(this._options.globstar, true);\n this.ignore = this._getValue(this._options.ignore, []);\n this.markDirectories = this._getValue(this._options.markDirectories, false);\n this.objectMode = this._getValue(this._options.objectMode, false);\n this.onlyDirectories = this._getValue(this._options.onlyDirectories, false);\n this.onlyFiles = this._getValue(this._options.onlyFiles, true);\n this.stats = this._getValue(this._options.stats, false);\n this.suppressErrors = this._getValue(this._options.suppressErrors, false);\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false);\n this.unique = this._getValue(this._options.unique, true);\n if (this.onlyDirectories) {\n this.onlyFiles = false;\n }\n if (this.stats) {\n this.objectMode = true;\n }\n }\n _getValue(option, value) {\n return option === undefined ? value : option;\n }\n _getFileSystemMethods(methods = {}) {\n return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);\n }\n}\nexports.default = Settings;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitWhen = exports.flatten = void 0;\nfunction flatten(items) {\n return items.reduce((collection, item) => [].concat(collection, item), []);\n}\nexports.flatten = flatten;\nfunction splitWhen(items, predicate) {\n const result = [[]];\n let groupIndex = 0;\n for (const item of items) {\n if (predicate(item)) {\n groupIndex++;\n result[groupIndex] = [];\n }\n else {\n result[groupIndex].push(item);\n }\n }\n return result;\n}\nexports.splitWhen = splitWhen;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEnoentCodeError = void 0;\nfunction isEnoentCodeError(error) {\n return error.code === 'ENOENT';\n}\nexports.isEnoentCodeError = isEnoentCodeError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDirentFromStats = void 0;\nclass DirentFromStats {\n constructor(name, stats) {\n this.name = name;\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\n this.isDirectory = stats.isDirectory.bind(stats);\n this.isFIFO = stats.isFIFO.bind(stats);\n this.isFile = stats.isFile.bind(stats);\n this.isSocket = stats.isSocket.bind(stats);\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\n }\n}\nfunction createDirentFromStats(name, stats) {\n return new DirentFromStats(name, stats);\n}\nexports.createDirentFromStats = createDirentFromStats;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0;\nconst array = require(\"./array\");\nexports.array = array;\nconst errno = require(\"./errno\");\nexports.errno = errno;\nconst fs = require(\"./fs\");\nexports.fs = fs;\nconst path = require(\"./path\");\nexports.path = path;\nconst pattern = require(\"./pattern\");\nexports.pattern = pattern;\nconst stream = require(\"./stream\");\nexports.stream = stream;\nconst string = require(\"./string\");\nexports.string = string;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0;\nconst path = require(\"path\");\nconst LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\\\\nconst UNESCAPED_GLOB_SYMBOLS_RE = /(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\())/g;\n/**\n * Designed to work only with simple paths: `dir\\\\file`.\n */\nfunction unixify(filepath) {\n return filepath.replace(/\\\\/g, '/');\n}\nexports.unixify = unixify;\nfunction makeAbsolute(cwd, filepath) {\n return path.resolve(cwd, filepath);\n}\nexports.makeAbsolute = makeAbsolute;\nfunction escape(pattern) {\n return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\\\$2');\n}\nexports.escape = escape;\nfunction removeLeadingDotSegment(entry) {\n // We do not use `startsWith` because this is 10x slower than current implementation for some cases.\n // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\n if (entry.charAt(0) === '.') {\n const secondCharactery = entry.charAt(1);\n if (secondCharactery === '/' || secondCharactery === '\\\\') {\n return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT);\n }\n }\n return entry;\n}\nexports.removeLeadingDotSegment = removeLeadingDotSegment;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0;\nconst path = require(\"path\");\nconst globParent = require(\"glob-parent\");\nconst micromatch = require(\"micromatch\");\nconst GLOBSTAR = '**';\nconst ESCAPE_SYMBOL = '\\\\';\nconst COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/;\nconst REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\\[[^[]*]/;\nconst REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\\([^(]*\\|[^|]*\\)/;\nconst GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\\([^(]*\\)/;\nconst BRACE_EXPANSION_SEPARATORS_RE = /,|\\.\\./;\nfunction isStaticPattern(pattern, options = {}) {\n return !isDynamicPattern(pattern, options);\n}\nexports.isStaticPattern = isStaticPattern;\nfunction isDynamicPattern(pattern, options = {}) {\n /**\n * A special case with an empty string is necessary for matching patterns that start with a forward slash.\n * An empty string cannot be a dynamic pattern.\n * For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'.\n */\n if (pattern === '') {\n return false;\n }\n /**\n * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check\n * filepath directly (without read directory).\n */\n if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) {\n return true;\n }\n if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) {\n return true;\n }\n if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) {\n return true;\n }\n if (options.braceExpansion !== false && hasBraceExpansion(pattern)) {\n return true;\n }\n return false;\n}\nexports.isDynamicPattern = isDynamicPattern;\nfunction hasBraceExpansion(pattern) {\n const openingBraceIndex = pattern.indexOf('{');\n if (openingBraceIndex === -1) {\n return false;\n }\n const closingBraceIndex = pattern.indexOf('}', openingBraceIndex + 1);\n if (closingBraceIndex === -1) {\n return false;\n }\n const braceContent = pattern.slice(openingBraceIndex, closingBraceIndex);\n return BRACE_EXPANSION_SEPARATORS_RE.test(braceContent);\n}\nfunction convertToPositivePattern(pattern) {\n return isNegativePattern(pattern) ? pattern.slice(1) : pattern;\n}\nexports.convertToPositivePattern = convertToPositivePattern;\nfunction convertToNegativePattern(pattern) {\n return '!' + pattern;\n}\nexports.convertToNegativePattern = convertToNegativePattern;\nfunction isNegativePattern(pattern) {\n return pattern.startsWith('!') && pattern[1] !== '(';\n}\nexports.isNegativePattern = isNegativePattern;\nfunction isPositivePattern(pattern) {\n return !isNegativePattern(pattern);\n}\nexports.isPositivePattern = isPositivePattern;\nfunction getNegativePatterns(patterns) {\n return patterns.filter(isNegativePattern);\n}\nexports.getNegativePatterns = getNegativePatterns;\nfunction getPositivePatterns(patterns) {\n return patterns.filter(isPositivePattern);\n}\nexports.getPositivePatterns = getPositivePatterns;\n/**\n * Returns patterns that can be applied inside the current directory.\n *\n * @example\n * // ['./*', '*', 'a/*']\n * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])\n */\nfunction getPatternsInsideCurrentDirectory(patterns) {\n return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern));\n}\nexports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory;\n/**\n * Returns patterns to be expanded relative to (outside) the current directory.\n *\n * @example\n * // ['../*', './../*']\n * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])\n */\nfunction getPatternsOutsideCurrentDirectory(patterns) {\n return patterns.filter(isPatternRelatedToParentDirectory);\n}\nexports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory;\nfunction isPatternRelatedToParentDirectory(pattern) {\n return pattern.startsWith('..') || pattern.startsWith('./..');\n}\nexports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory;\nfunction getBaseDirectory(pattern) {\n return globParent(pattern, { flipBackslashes: false });\n}\nexports.getBaseDirectory = getBaseDirectory;\nfunction hasGlobStar(pattern) {\n return pattern.includes(GLOBSTAR);\n}\nexports.hasGlobStar = hasGlobStar;\nfunction endsWithSlashGlobStar(pattern) {\n return pattern.endsWith('/' + GLOBSTAR);\n}\nexports.endsWithSlashGlobStar = endsWithSlashGlobStar;\nfunction isAffectDepthOfReadingPattern(pattern) {\n const basename = path.basename(pattern);\n return endsWithSlashGlobStar(pattern) || isStaticPattern(basename);\n}\nexports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern;\nfunction expandPatternsWithBraceExpansion(patterns) {\n return patterns.reduce((collection, pattern) => {\n return collection.concat(expandBraceExpansion(pattern));\n }, []);\n}\nexports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion;\nfunction expandBraceExpansion(pattern) {\n return micromatch.braces(pattern, {\n expand: true,\n nodupes: true\n });\n}\nexports.expandBraceExpansion = expandBraceExpansion;\nfunction getPatternParts(pattern, options) {\n let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true }));\n /**\n * The scan method returns an empty array in some cases.\n * See micromatch/picomatch#58 for more details.\n */\n if (parts.length === 0) {\n parts = [pattern];\n }\n /**\n * The scan method does not return an empty part for the pattern with a forward slash.\n * This is another part of micromatch/picomatch#58.\n */\n if (parts[0].startsWith('/')) {\n parts[0] = parts[0].slice(1);\n parts.unshift('');\n }\n return parts;\n}\nexports.getPatternParts = getPatternParts;\nfunction makeRe(pattern, options) {\n return micromatch.makeRe(pattern, options);\n}\nexports.makeRe = makeRe;\nfunction convertPatternsToRe(patterns, options) {\n return patterns.map((pattern) => makeRe(pattern, options));\n}\nexports.convertPatternsToRe = convertPatternsToRe;\nfunction matchAny(entry, patternsRe) {\n return patternsRe.some((patternRe) => patternRe.test(entry));\n}\nexports.matchAny = matchAny;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\nconst merge2 = require(\"merge2\");\nfunction merge(streams) {\n const mergedStream = merge2(streams);\n streams.forEach((stream) => {\n stream.once('error', (error) => mergedStream.emit('error', error));\n });\n mergedStream.once('close', () => propagateCloseEventToSources(streams));\n mergedStream.once('end', () => propagateCloseEventToSources(streams));\n return mergedStream;\n}\nexports.merge = merge;\nfunction propagateCloseEventToSources(streams) {\n streams.forEach((stream) => stream.emit('close'));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEmpty = exports.isString = void 0;\nfunction isString(input) {\n return typeof input === 'string';\n}\nexports.isString = isString;\nfunction isEmpty(input) {\n return input === '';\n}\nexports.isEmpty = isEmpty;\n","'use strict'\n\n/* eslint-disable no-var */\n\nvar reusify = require('reusify')\n\nfunction fastqueue (context, worker, concurrency) {\n if (typeof context === 'function') {\n concurrency = worker\n worker = context\n context = null\n }\n\n if (concurrency < 1) {\n throw new Error('fastqueue concurrency must be greater than 1')\n }\n\n var cache = reusify(Task)\n var queueHead = null\n var queueTail = null\n var _running = 0\n var errorHandler = null\n\n var self = {\n push: push,\n drain: noop,\n saturated: noop,\n pause: pause,\n paused: false,\n concurrency: concurrency,\n running: running,\n resume: resume,\n idle: idle,\n length: length,\n getQueue: getQueue,\n unshift: unshift,\n empty: noop,\n kill: kill,\n killAndDrain: killAndDrain,\n error: error\n }\n\n return self\n\n function running () {\n return _running\n }\n\n function pause () {\n self.paused = true\n }\n\n function length () {\n var current = queueHead\n var counter = 0\n\n while (current) {\n current = current.next\n counter++\n }\n\n return counter\n }\n\n function getQueue () {\n var current = queueHead\n var tasks = []\n\n while (current) {\n tasks.push(current.value)\n current = current.next\n }\n\n return tasks\n }\n\n function resume () {\n if (!self.paused) return\n self.paused = false\n for (var i = 0; i < self.concurrency; i++) {\n _running++\n release()\n }\n }\n\n function idle () {\n return _running === 0 && self.length() === 0\n }\n\n function push (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n current.errorHandler = errorHandler\n\n if (_running === self.concurrency || self.paused) {\n if (queueTail) {\n queueTail.next = current\n queueTail = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function unshift (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n\n if (_running === self.concurrency || self.paused) {\n if (queueHead) {\n current.next = queueHead\n queueHead = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function release (holder) {\n if (holder) {\n cache.release(holder)\n }\n var next = queueHead\n if (next) {\n if (!self.paused) {\n if (queueTail === queueHead) {\n queueTail = null\n }\n queueHead = next.next\n next.next = null\n worker.call(context, next.value, next.worked)\n if (queueTail === null) {\n self.empty()\n }\n } else {\n _running--\n }\n } else if (--_running === 0) {\n self.drain()\n }\n }\n\n function kill () {\n queueHead = null\n queueTail = null\n self.drain = noop\n }\n\n function killAndDrain () {\n queueHead = null\n queueTail = null\n self.drain()\n self.drain = noop\n }\n\n function error (handler) {\n errorHandler = handler\n }\n}\n\nfunction noop () {}\n\nfunction Task () {\n this.value = null\n this.callback = noop\n this.next = null\n this.release = noop\n this.context = null\n this.errorHandler = null\n\n var self = this\n\n this.worked = function worked (err, result) {\n var callback = self.callback\n var errorHandler = self.errorHandler\n var val = self.value\n self.value = null\n self.callback = noop\n if (self.errorHandler) {\n errorHandler(err, val)\n }\n callback.call(self.context, err, result)\n self.release(self)\n }\n}\n\nfunction queueAsPromised (context, worker, concurrency) {\n if (typeof context === 'function') {\n concurrency = worker\n worker = context\n context = null\n }\n\n function asyncWrapper (arg, cb) {\n worker.call(this, arg)\n .then(function (res) {\n cb(null, res)\n }, cb)\n }\n\n var queue = fastqueue(context, asyncWrapper, concurrency)\n\n var pushCb = queue.push\n var unshiftCb = queue.unshift\n\n queue.push = push\n queue.unshift = unshift\n queue.drained = drained\n\n return queue\n\n function push (value) {\n var p = new Promise(function (resolve, reject) {\n pushCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n\n // Let's fork the promise chain to\n // make the error bubble up to the user but\n // not lead to a unhandledRejection\n p.catch(noop)\n\n return p\n }\n\n function unshift (value) {\n var p = new Promise(function (resolve, reject) {\n unshiftCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n\n // Let's fork the promise chain to\n // make the error bubble up to the user but\n // not lead to a unhandledRejection\n p.catch(noop)\n\n return p\n }\n\n function drained () {\n var previousDrain = queue.drain\n\n var p = new Promise(function (resolve) {\n queue.drain = function () {\n previousDrain()\n resolve()\n }\n })\n\n return p\n }\n}\n\nmodule.exports = fastqueue\nmodule.exports.promise = queueAsPromised\n","/*!\n * fill-range \n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n let value = `${input}`;\n let index = -1;\n if (value[0] === '-') value = value.slice(1);\n if (value === '0') return false;\n while (value[++index] === '0');\n return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n if (typeof start === 'string' || typeof end === 'string') {\n return true;\n }\n return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n if (maxLength > 0) {\n let dash = input[0] === '-' ? '-' : '';\n if (dash) input = input.slice(1);\n input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n }\n if (toNumber === false) {\n return String(input);\n }\n return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n let negative = input[0] === '-' ? '-' : '';\n if (negative) {\n input = input.slice(1);\n maxLength--;\n }\n while (input.length < maxLength) input = '0' + input;\n return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options, maxLen) => {\n parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n let prefix = options.capture ? '' : '?:';\n let positives = '';\n let negatives = '';\n let result;\n\n if (parts.positives.length) {\n positives = parts.positives.map(v => toMaxLen(String(v), maxLen)).join('|');\n }\n\n if (parts.negatives.length) {\n negatives = `-(${prefix}${parts.negatives.map(v => toMaxLen(String(v), maxLen)).join('|')})`;\n }\n\n if (positives && negatives) {\n result = `${positives}|${negatives}`;\n } else {\n result = positives || negatives;\n }\n\n if (options.wrap) {\n return `(${prefix}${result})`;\n }\n\n return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n if (isNumbers) {\n return toRegexRange(a, b, { wrap: false, ...options });\n }\n\n let start = String.fromCharCode(a);\n if (a === b) return start;\n\n let stop = String.fromCharCode(b);\n return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n if (Array.isArray(start)) {\n let wrap = options.wrap === true;\n let prefix = options.capture ? '' : '?:';\n return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n }\n return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n};\n\nconst invalidStep = (step, options) => {\n if (options.strictRanges === true) {\n throw new TypeError(`Expected step \"${step}\" to be a number`);\n }\n return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n let a = Number(start);\n let b = Number(end);\n\n if (!Number.isInteger(a) || !Number.isInteger(b)) {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n }\n\n // fix negative zero\n if (a === 0) a = 0;\n if (b === 0) b = 0;\n\n let descending = a > b;\n let startString = String(start);\n let endString = String(end);\n let stepString = String(step);\n step = Math.max(Math.abs(step), 1);\n\n let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n let toNumber = padded === false && stringify(start, end, options) === false;\n let format = options.transform || transform(toNumber);\n\n if (options.toRegex && step === 1) {\n return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n }\n\n let parts = { negatives: [], positives: [] };\n let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n if (options.toRegex === true && step > 1) {\n push(a);\n } else {\n range.push(pad(format(a, index), maxLen, toNumber));\n }\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return step > 1\n ? toSequence(parts, options, maxLen)\n : toRegex(range, null, { wrap: false, ...options });\n }\n\n return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n return invalidRange(start, end, options);\n }\n\n let format = options.transform || (val => String.fromCharCode(val));\n let a = `${start}`.charCodeAt(0);\n let b = `${end}`.charCodeAt(0);\n\n let descending = a > b;\n let min = Math.min(a, b);\n let max = Math.max(a, b);\n\n if (options.toRegex && step === 1) {\n return toRange(min, max, false, options);\n }\n\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n range.push(format(a, index));\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return toRegex(range, null, { wrap: false, options });\n }\n\n return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n if (end == null && isValidValue(start)) {\n return [start];\n }\n\n if (!isValidValue(start) || !isValidValue(end)) {\n return invalidRange(start, end, options);\n }\n\n if (typeof step === 'function') {\n return fill(start, end, 1, { transform: step });\n }\n\n if (isObject(step)) {\n return fill(start, end, 0, step);\n }\n\n let opts = { ...options };\n if (opts.capture === true) opts.wrap = true;\n step = step || opts.step || 1;\n\n if (!isNumber(step)) {\n if (step != null && !isObject(step)) return invalidStep(step, opts);\n return fill(start, end, 1, step);\n }\n\n if (isNumber(start) && isNumber(end)) {\n return fillNumbers(start, end, step, opts);\n }\n\n return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n","module.exports = realpath\nrealpath.realpath = realpath\nrealpath.sync = realpathSync\nrealpath.realpathSync = realpathSync\nrealpath.monkeypatch = monkeypatch\nrealpath.unmonkeypatch = unmonkeypatch\n\nvar fs = require('fs')\nvar origRealpath = fs.realpath\nvar origRealpathSync = fs.realpathSync\n\nvar version = process.version\nvar ok = /^v[0-5]\\./.test(version)\nvar old = require('./old.js')\n\nfunction newError (er) {\n return er && er.syscall === 'realpath' && (\n er.code === 'ELOOP' ||\n er.code === 'ENOMEM' ||\n er.code === 'ENAMETOOLONG'\n )\n}\n\nfunction realpath (p, cache, cb) {\n if (ok) {\n return origRealpath(p, cache, cb)\n }\n\n if (typeof cache === 'function') {\n cb = cache\n cache = null\n }\n origRealpath(p, cache, function (er, result) {\n if (newError(er)) {\n old.realpath(p, cache, cb)\n } else {\n cb(er, result)\n }\n })\n}\n\nfunction realpathSync (p, cache) {\n if (ok) {\n return origRealpathSync(p, cache)\n }\n\n try {\n return origRealpathSync(p, cache)\n } catch (er) {\n if (newError(er)) {\n return old.realpathSync(p, cache)\n } else {\n throw er\n }\n }\n}\n\nfunction monkeypatch () {\n fs.realpath = realpath\n fs.realpathSync = realpathSync\n}\n\nfunction unmonkeypatch () {\n fs.realpath = origRealpath\n fs.realpathSync = origRealpathSync\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar pathModule = require('path');\nvar isWindows = process.platform === 'win32';\nvar fs = require('fs');\n\n// JavaScript implementation of realpath, ported from node pre-v6\n\nvar DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);\n\nfunction rethrow() {\n // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and\n // is fairly slow to generate.\n var callback;\n if (DEBUG) {\n var backtrace = new Error;\n callback = debugCallback;\n } else\n callback = missingCallback;\n\n return callback;\n\n function debugCallback(err) {\n if (err) {\n backtrace.message = err.message;\n err = backtrace;\n missingCallback(err);\n }\n }\n\n function missingCallback(err) {\n if (err) {\n if (process.throwDeprecation)\n throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs\n else if (!process.noDeprecation) {\n var msg = 'fs: missing callback ' + (err.stack || err.message);\n if (process.traceDeprecation)\n console.trace(msg);\n else\n console.error(msg);\n }\n }\n }\n}\n\nfunction maybeCallback(cb) {\n return typeof cb === 'function' ? cb : rethrow();\n}\n\nvar normalize = pathModule.normalize;\n\n// Regexp that finds the next partion of a (partial) path\n// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']\nif (isWindows) {\n var nextPartRe = /(.*?)(?:[\\/\\\\]+|$)/g;\n} else {\n var nextPartRe = /(.*?)(?:[\\/]+|$)/g;\n}\n\n// Regex to find the device root, including trailing slash. E.g. 'c:\\\\'.\nif (isWindows) {\n var splitRootRe = /^(?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/][^\\\\\\/]+)?[\\\\\\/]*/;\n} else {\n var splitRootRe = /^[\\/]*/;\n}\n\nexports.realpathSync = function realpathSync(p, cache) {\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return cache[p];\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstatSync(base);\n knownHard[base] = true;\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n // NB: p.length changes.\n while (pos < p.length) {\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n continue;\n }\n\n var resolvedLink;\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // some known symbolic link. no need to stat again.\n resolvedLink = cache[base];\n } else {\n var stat = fs.lstatSync(base);\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n continue;\n }\n\n // read the link if it wasn't read before\n // dev/ino always return 0 on windows, so skip the check.\n var linkTarget = null;\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n linkTarget = seenLinks[id];\n }\n }\n if (linkTarget === null) {\n fs.statSync(base);\n linkTarget = fs.readlinkSync(base);\n }\n resolvedLink = pathModule.resolve(previous, linkTarget);\n // track this, if given a cache.\n if (cache) cache[base] = resolvedLink;\n if (!isWindows) seenLinks[id] = linkTarget;\n }\n\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n\n if (cache) cache[original] = p;\n\n return p;\n};\n\n\nexports.realpath = function realpath(p, cache, cb) {\n if (typeof cb !== 'function') {\n cb = maybeCallback(cache);\n cache = null;\n }\n\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return process.nextTick(cb.bind(null, null, cache[p]));\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstat(base, function(err) {\n if (err) return cb(err);\n knownHard[base] = true;\n LOOP();\n });\n } else {\n process.nextTick(LOOP);\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n function LOOP() {\n // stop if scanned past end of path\n if (pos >= p.length) {\n if (cache) cache[original] = p;\n return cb(null, p);\n }\n\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n return process.nextTick(LOOP);\n }\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // known symbolic link. no need to stat again.\n return gotResolvedLink(cache[base]);\n }\n\n return fs.lstat(base, gotStat);\n }\n\n function gotStat(err, stat) {\n if (err) return cb(err);\n\n // if not a symlink, skip to the next path part\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n return process.nextTick(LOOP);\n }\n\n // stat & read the link if not read before\n // call gotTarget as soon as the link target is known\n // dev/ino always return 0 on windows, so skip the check.\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n return gotTarget(null, seenLinks[id], base);\n }\n }\n fs.stat(base, function(err) {\n if (err) return cb(err);\n\n fs.readlink(base, function(err, target) {\n if (!isWindows) seenLinks[id] = target;\n gotTarget(err, target);\n });\n });\n }\n\n function gotTarget(err, target, base) {\n if (err) return cb(err);\n\n var resolvedLink = pathModule.resolve(previous, target);\n if (cache) cache[base] = resolvedLink;\n gotResolvedLink(resolvedLink);\n }\n\n function gotResolvedLink(resolvedLink) {\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\nconst {PassThrough: PassThroughStream} = require('stream');\n\nmodule.exports = options => {\n\toptions = {...options};\n\n\tconst {array} = options;\n\tlet {encoding} = options;\n\tconst isBuffer = encoding === 'buffer';\n\tlet objectMode = false;\n\n\tif (array) {\n\t\tobjectMode = !(encoding || isBuffer);\n\t} else {\n\t\tencoding = encoding || 'utf8';\n\t}\n\n\tif (isBuffer) {\n\t\tencoding = null;\n\t}\n\n\tconst stream = new PassThroughStream({objectMode});\n\n\tif (encoding) {\n\t\tstream.setEncoding(encoding);\n\t}\n\n\tlet length = 0;\n\tconst chunks = [];\n\n\tstream.on('data', chunk => {\n\t\tchunks.push(chunk);\n\n\t\tif (objectMode) {\n\t\t\tlength = chunks.length;\n\t\t} else {\n\t\t\tlength += chunk.length;\n\t\t}\n\t});\n\n\tstream.getBufferedValue = () => {\n\t\tif (array) {\n\t\t\treturn chunks;\n\t\t}\n\n\t\treturn isBuffer ? Buffer.concat(chunks, length) : chunks.join('');\n\t};\n\n\tstream.getBufferedLength = () => length;\n\n\treturn stream;\n};\n","'use strict';\nconst {constants: BufferConstants} = require('buffer');\nconst pump = require('pump');\nconst bufferStream = require('./buffer-stream');\n\nclass MaxBufferError extends Error {\n\tconstructor() {\n\t\tsuper('maxBuffer exceeded');\n\t\tthis.name = 'MaxBufferError';\n\t}\n}\n\nasync function getStream(inputStream, options) {\n\tif (!inputStream) {\n\t\treturn Promise.reject(new Error('Expected a stream'));\n\t}\n\n\toptions = {\n\t\tmaxBuffer: Infinity,\n\t\t...options\n\t};\n\n\tconst {maxBuffer} = options;\n\n\tlet stream;\n\tawait new Promise((resolve, reject) => {\n\t\tconst rejectPromise = error => {\n\t\t\t// Don't retrieve an oversized buffer.\n\t\t\tif (error && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) {\n\t\t\t\terror.bufferedData = stream.getBufferedValue();\n\t\t\t}\n\n\t\t\treject(error);\n\t\t};\n\n\t\tstream = pump(inputStream, bufferStream(options), error => {\n\t\t\tif (error) {\n\t\t\t\trejectPromise(error);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve();\n\t\t});\n\n\t\tstream.on('data', () => {\n\t\t\tif (stream.getBufferedLength() > maxBuffer) {\n\t\t\t\trejectPromise(new MaxBufferError());\n\t\t\t}\n\t\t});\n\t});\n\n\treturn stream.getBufferedValue();\n}\n\nmodule.exports = getStream;\n// TODO: Remove this for the next major release\nmodule.exports.default = getStream;\nmodule.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'});\nmodule.exports.array = (stream, options) => getStream(stream, {...options, array: true});\nmodule.exports.MaxBufferError = MaxBufferError;\n","'use strict';\n\nvar isGlob = require('is-glob');\nvar pathPosixDirname = require('path').posix.dirname;\nvar isWin32 = require('os').platform() === 'win32';\n\nvar slash = '/';\nvar backslash = /\\\\/g;\nvar escaped = /\\\\([!*?|[\\](){}])/g;\n\n/**\n * @param {string} str\n * @param {Object} opts\n * @param {boolean} [opts.flipBackslashes=true]\n */\nmodule.exports = function globParent(str, opts) {\n var options = Object.assign({ flipBackslashes: true }, opts);\n\n // flip windows path separators\n if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {\n str = str.replace(backslash, slash);\n }\n\n // special case for strings ending in enclosure containing path separator\n if (isEnclosure(str)) {\n str += slash;\n }\n\n // preserves full path in case of trailing path separator\n str += 'a';\n\n // remove path parts that are globby\n do {\n str = pathPosixDirname(str);\n } while (isGlobby(str));\n\n // remove escape chars and return result\n return str.replace(escaped, '$1');\n};\n\nfunction isEnclosure(str) {\n var lastChar = str.slice(-1);\n\n var enclosureStart;\n switch (lastChar) {\n case '}':\n enclosureStart = '{';\n break;\n case ']':\n enclosureStart = '[';\n break;\n default:\n return false;\n }\n\n var foundIndex = str.indexOf(enclosureStart);\n if (foundIndex < 0) {\n return false;\n }\n\n return str.slice(foundIndex + 1, -1).includes(slash);\n}\n\nfunction isGlobby(str) {\n if (/\\([^()]+$/.test(str)) {\n return true;\n }\n if (str[0] === '{' || str[0] === '[') {\n return true;\n }\n if (/[^\\\\][{[]/.test(str)) {\n return true;\n }\n return isGlob(str);\n}\n","exports.setopts = setopts\nexports.ownProp = ownProp\nexports.makeAbs = makeAbs\nexports.finish = finish\nexports.mark = mark\nexports.isIgnored = isIgnored\nexports.childrenIgnored = childrenIgnored\n\nfunction ownProp (obj, field) {\n return Object.prototype.hasOwnProperty.call(obj, field)\n}\n\nvar fs = require(\"fs\")\nvar path = require(\"path\")\nvar minimatch = require(\"minimatch\")\nvar isAbsolute = require(\"path-is-absolute\")\nvar Minimatch = minimatch.Minimatch\n\nfunction alphasort (a, b) {\n return a.localeCompare(b, 'en')\n}\n\nfunction setupIgnores (self, options) {\n self.ignore = options.ignore || []\n\n if (!Array.isArray(self.ignore))\n self.ignore = [self.ignore]\n\n if (self.ignore.length) {\n self.ignore = self.ignore.map(ignoreMap)\n }\n}\n\n// ignore patterns are always in dot:true mode.\nfunction ignoreMap (pattern) {\n var gmatcher = null\n if (pattern.slice(-3) === '/**') {\n var gpattern = pattern.replace(/(\\/\\*\\*)+$/, '')\n gmatcher = new Minimatch(gpattern, { dot: true })\n }\n\n return {\n matcher: new Minimatch(pattern, { dot: true }),\n gmatcher: gmatcher\n }\n}\n\nfunction setopts (self, pattern, options) {\n if (!options)\n options = {}\n\n // base-matching: just use globstar for that.\n if (options.matchBase && -1 === pattern.indexOf(\"/\")) {\n if (options.noglobstar) {\n throw new Error(\"base matching requires globstar\")\n }\n pattern = \"**/\" + pattern\n }\n\n self.silent = !!options.silent\n self.pattern = pattern\n self.strict = options.strict !== false\n self.realpath = !!options.realpath\n self.realpathCache = options.realpathCache || Object.create(null)\n self.follow = !!options.follow\n self.dot = !!options.dot\n self.mark = !!options.mark\n self.nodir = !!options.nodir\n if (self.nodir)\n self.mark = true\n self.sync = !!options.sync\n self.nounique = !!options.nounique\n self.nonull = !!options.nonull\n self.nosort = !!options.nosort\n self.nocase = !!options.nocase\n self.stat = !!options.stat\n self.noprocess = !!options.noprocess\n self.absolute = !!options.absolute\n self.fs = options.fs || fs\n\n self.maxLength = options.maxLength || Infinity\n self.cache = options.cache || Object.create(null)\n self.statCache = options.statCache || Object.create(null)\n self.symlinks = options.symlinks || Object.create(null)\n\n setupIgnores(self, options)\n\n self.changedCwd = false\n var cwd = process.cwd()\n if (!ownProp(options, \"cwd\"))\n self.cwd = cwd\n else {\n self.cwd = path.resolve(options.cwd)\n self.changedCwd = self.cwd !== cwd\n }\n\n self.root = options.root || path.resolve(self.cwd, \"/\")\n self.root = path.resolve(self.root)\n if (process.platform === \"win32\")\n self.root = self.root.replace(/\\\\/g, \"/\")\n\n // TODO: is an absolute `cwd` supposed to be resolved against `root`?\n // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')\n self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)\n if (process.platform === \"win32\")\n self.cwdAbs = self.cwdAbs.replace(/\\\\/g, \"/\")\n self.nomount = !!options.nomount\n\n // disable comments and negation in Minimatch.\n // Note that they are not supported in Glob itself anyway.\n options.nonegate = true\n options.nocomment = true\n\n self.minimatch = new Minimatch(pattern, options)\n self.options = self.minimatch.options\n}\n\nfunction finish (self) {\n var nou = self.nounique\n var all = nou ? [] : Object.create(null)\n\n for (var i = 0, l = self.matches.length; i < l; i ++) {\n var matches = self.matches[i]\n if (!matches || Object.keys(matches).length === 0) {\n if (self.nonull) {\n // do like the shell, and spit out the literal glob\n var literal = self.minimatch.globSet[i]\n if (nou)\n all.push(literal)\n else\n all[literal] = true\n }\n } else {\n // had matches\n var m = Object.keys(matches)\n if (nou)\n all.push.apply(all, m)\n else\n m.forEach(function (m) {\n all[m] = true\n })\n }\n }\n\n if (!nou)\n all = Object.keys(all)\n\n if (!self.nosort)\n all = all.sort(alphasort)\n\n // at *some* point we statted all of these\n if (self.mark) {\n for (var i = 0; i < all.length; i++) {\n all[i] = self._mark(all[i])\n }\n if (self.nodir) {\n all = all.filter(function (e) {\n var notDir = !(/\\/$/.test(e))\n var c = self.cache[e] || self.cache[makeAbs(self, e)]\n if (notDir && c)\n notDir = c !== 'DIR' && !Array.isArray(c)\n return notDir\n })\n }\n }\n\n if (self.ignore.length)\n all = all.filter(function(m) {\n return !isIgnored(self, m)\n })\n\n self.found = all\n}\n\nfunction mark (self, p) {\n var abs = makeAbs(self, p)\n var c = self.cache[abs]\n var m = p\n if (c) {\n var isDir = c === 'DIR' || Array.isArray(c)\n var slash = p.slice(-1) === '/'\n\n if (isDir && !slash)\n m += '/'\n else if (!isDir && slash)\n m = m.slice(0, -1)\n\n if (m !== p) {\n var mabs = makeAbs(self, m)\n self.statCache[mabs] = self.statCache[abs]\n self.cache[mabs] = self.cache[abs]\n }\n }\n\n return m\n}\n\n// lotta situps...\nfunction makeAbs (self, f) {\n var abs = f\n if (f.charAt(0) === '/') {\n abs = path.join(self.root, f)\n } else if (isAbsolute(f) || f === '') {\n abs = f\n } else if (self.changedCwd) {\n abs = path.resolve(self.cwd, f)\n } else {\n abs = path.resolve(f)\n }\n\n if (process.platform === 'win32')\n abs = abs.replace(/\\\\/g, '/')\n\n return abs\n}\n\n\n// Return true, if pattern ends with globstar '**', for the accompanying parent directory.\n// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents\nfunction isIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n\nfunction childrenIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n","// Approach:\n//\n// 1. Get the minimatch set\n// 2. For each pattern in the set, PROCESS(pattern, false)\n// 3. Store matches per-set, then uniq them\n//\n// PROCESS(pattern, inGlobStar)\n// Get the first [n] items from pattern that are all strings\n// Join these together. This is PREFIX.\n// If there is no more remaining, then stat(PREFIX) and\n// add to matches if it succeeds. END.\n//\n// If inGlobStar and PREFIX is symlink and points to dir\n// set ENTRIES = []\n// else readdir(PREFIX) as ENTRIES\n// If fail, END\n//\n// with ENTRIES\n// If pattern[n] is GLOBSTAR\n// // handle the case where the globstar match is empty\n// // by pruning it out, and testing the resulting pattern\n// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n// // handle other cases.\n// for ENTRY in ENTRIES (not dotfiles)\n// // attach globstar + tail onto the entry\n// // Mark that this entry is a globstar match\n// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n//\n// else // not globstar\n// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n// Test ENTRY against pattern[n]\n// If fails, continue\n// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n//\n// Caveat:\n// Cache all stats and readdirs results to minimize syscall. Since all\n// we ever care about is existence and directory-ness, we can just keep\n// `true` for files, and [children,...] for directories, or `false` for\n// things that don't exist.\n\nmodule.exports = glob\n\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar inherits = require('inherits')\nvar EE = require('events').EventEmitter\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar globSync = require('./sync.js')\nvar common = require('./common.js')\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar inflight = require('inflight')\nvar util = require('util')\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nvar once = require('once')\n\nfunction glob (pattern, options, cb) {\n if (typeof options === 'function') cb = options, options = {}\n if (!options) options = {}\n\n if (options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return globSync(pattern, options)\n }\n\n return new Glob(pattern, options, cb)\n}\n\nglob.sync = globSync\nvar GlobSync = glob.GlobSync = globSync.GlobSync\n\n// old api surface\nglob.glob = glob\n\nfunction extend (origin, add) {\n if (add === null || typeof add !== 'object') {\n return origin\n }\n\n var keys = Object.keys(add)\n var i = keys.length\n while (i--) {\n origin[keys[i]] = add[keys[i]]\n }\n return origin\n}\n\nglob.hasMagic = function (pattern, options_) {\n var options = extend({}, options_)\n options.noprocess = true\n\n var g = new Glob(pattern, options)\n var set = g.minimatch.set\n\n if (!pattern)\n return false\n\n if (set.length > 1)\n return true\n\n for (var j = 0; j < set[0].length; j++) {\n if (typeof set[0][j] !== 'string')\n return true\n }\n\n return false\n}\n\nglob.Glob = Glob\ninherits(Glob, EE)\nfunction Glob (pattern, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n\n if (options && options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return new GlobSync(pattern, options)\n }\n\n if (!(this instanceof Glob))\n return new Glob(pattern, options, cb)\n\n setopts(this, pattern, options)\n this._didRealPath = false\n\n // process each pattern in the minimatch set\n var n = this.minimatch.set.length\n\n // The matches are stored as {: true,...} so that\n // duplicates are automagically pruned.\n // Later, we do an Object.keys() on these.\n // Keep them as a list so we can fill in when nonull is set.\n this.matches = new Array(n)\n\n if (typeof cb === 'function') {\n cb = once(cb)\n this.on('error', cb)\n this.on('end', function (matches) {\n cb(null, matches)\n })\n }\n\n var self = this\n this._processing = 0\n\n this._emitQueue = []\n this._processQueue = []\n this.paused = false\n\n if (this.noprocess)\n return this\n\n if (n === 0)\n return done()\n\n var sync = true\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false, done)\n }\n sync = false\n\n function done () {\n --self._processing\n if (self._processing <= 0) {\n if (sync) {\n process.nextTick(function () {\n self._finish()\n })\n } else {\n self._finish()\n }\n }\n }\n}\n\nGlob.prototype._finish = function () {\n assert(this instanceof Glob)\n if (this.aborted)\n return\n\n if (this.realpath && !this._didRealpath)\n return this._realpath()\n\n common.finish(this)\n this.emit('end', this.found)\n}\n\nGlob.prototype._realpath = function () {\n if (this._didRealpath)\n return\n\n this._didRealpath = true\n\n var n = this.matches.length\n if (n === 0)\n return this._finish()\n\n var self = this\n for (var i = 0; i < this.matches.length; i++)\n this._realpathSet(i, next)\n\n function next () {\n if (--n === 0)\n self._finish()\n }\n}\n\nGlob.prototype._realpathSet = function (index, cb) {\n var matchset = this.matches[index]\n if (!matchset)\n return cb()\n\n var found = Object.keys(matchset)\n var self = this\n var n = found.length\n\n if (n === 0)\n return cb()\n\n var set = this.matches[index] = Object.create(null)\n found.forEach(function (p, i) {\n // If there's a problem with the stat, then it means that\n // one or more of the links in the realpath couldn't be\n // resolved. just return the abs value in that case.\n p = self._makeAbs(p)\n rp.realpath(p, self.realpathCache, function (er, real) {\n if (!er)\n set[real] = true\n else if (er.syscall === 'stat')\n set[p] = true\n else\n self.emit('error', er) // srsly wtf right here\n\n if (--n === 0) {\n self.matches[index] = set\n cb()\n }\n })\n })\n}\n\nGlob.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlob.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n\nGlob.prototype.abort = function () {\n this.aborted = true\n this.emit('abort')\n}\n\nGlob.prototype.pause = function () {\n if (!this.paused) {\n this.paused = true\n this.emit('pause')\n }\n}\n\nGlob.prototype.resume = function () {\n if (this.paused) {\n this.emit('resume')\n this.paused = false\n if (this._emitQueue.length) {\n var eq = this._emitQueue.slice(0)\n this._emitQueue.length = 0\n for (var i = 0; i < eq.length; i ++) {\n var e = eq[i]\n this._emitMatch(e[0], e[1])\n }\n }\n if (this._processQueue.length) {\n var pq = this._processQueue.slice(0)\n this._processQueue.length = 0\n for (var i = 0; i < pq.length; i ++) {\n var p = pq[i]\n this._processing--\n this._process(p[0], p[1], p[2], p[3])\n }\n }\n }\n}\n\nGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n assert(this instanceof Glob)\n assert(typeof cb === 'function')\n\n if (this.aborted)\n return\n\n this._processing++\n if (this.paused) {\n this._processQueue.push([pattern, index, inGlobStar, cb])\n return\n }\n\n //console.error('PROCESS %d', this._processing, pattern)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // see if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index, cb)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip _processing\n if (childrenIgnored(this, read))\n return cb()\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)\n}\n\nGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\nGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return cb()\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return cb()\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return cb()\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n this._process([e].concat(remain), index, inGlobStar, cb)\n }\n cb()\n}\n\nGlob.prototype._emitMatch = function (index, e) {\n if (this.aborted)\n return\n\n if (isIgnored(this, e))\n return\n\n if (this.paused) {\n this._emitQueue.push([index, e])\n return\n }\n\n var abs = isAbsolute(e) ? e : this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute)\n e = abs\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n var st = this.statCache[abs]\n if (st)\n this.emit('stat', e, st)\n\n this.emit('match', e)\n}\n\nGlob.prototype._readdirInGlobStar = function (abs, cb) {\n if (this.aborted)\n return\n\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false, cb)\n\n var lstatkey = 'lstat\\0' + abs\n var self = this\n var lstatcb = inflight(lstatkey, lstatcb_)\n\n if (lstatcb)\n self.fs.lstat(abs, lstatcb)\n\n function lstatcb_ (er, lstat) {\n if (er && er.code === 'ENOENT')\n return cb()\n\n var isSym = lstat && lstat.isSymbolicLink()\n self.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory()) {\n self.cache[abs] = 'FILE'\n cb()\n } else\n self._readdir(abs, false, cb)\n }\n}\n\nGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n if (this.aborted)\n return\n\n cb = inflight('readdir\\0'+abs+'\\0'+inGlobStar, cb)\n if (!cb)\n return\n\n //console.error('RD %j %j', +inGlobStar, abs)\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs, cb)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return cb()\n\n if (Array.isArray(c))\n return cb(null, c)\n }\n\n var self = this\n self.fs.readdir(abs, readdirCb(this, abs, cb))\n}\n\nfunction readdirCb (self, abs, cb) {\n return function (er, entries) {\n if (er)\n self._readdirError(abs, er, cb)\n else\n self._readdirEntries(abs, entries, cb)\n }\n}\n\nGlob.prototype._readdirEntries = function (abs, entries, cb) {\n if (this.aborted)\n return\n\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n return cb(null, entries)\n}\n\nGlob.prototype._readdirError = function (f, er, cb) {\n if (this.aborted)\n return\n\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n this.emit('error', error)\n this.abort()\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict) {\n this.emit('error', er)\n // If the error is handled, then we abort\n // if not, we threw out of here\n this.abort()\n }\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n\n return cb()\n}\n\nGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\n\nGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n //console.error('pgs2', prefix, remain[0], entries)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return cb()\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false, cb)\n\n var isSym = this.symlinks[abs]\n var len = entries.length\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return cb()\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true, cb)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true, cb)\n }\n\n cb()\n}\n\nGlob.prototype._processSimple = function (prefix, index, cb) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var self = this\n this._stat(prefix, function (er, exists) {\n self._processSimple2(prefix, index, er, exists, cb)\n })\n}\nGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n\n //console.error('ps2', prefix, exists)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return cb()\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n cb()\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlob.prototype._stat = function (f, cb) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return cb()\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return cb(null, c)\n\n if (needDir && c === 'FILE')\n return cb()\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (stat !== undefined) {\n if (stat === false)\n return cb(null, stat)\n else {\n var type = stat.isDirectory() ? 'DIR' : 'FILE'\n if (needDir && type === 'FILE')\n return cb()\n else\n return cb(null, type, stat)\n }\n }\n\n var self = this\n var statcb = inflight('stat\\0' + abs, lstatcb_)\n if (statcb)\n self.fs.lstat(abs, statcb)\n\n function lstatcb_ (er, lstat) {\n if (lstat && lstat.isSymbolicLink()) {\n // If it's a symlink, then treat it as the target, unless\n // the target does not exist, then treat it as a file.\n return self.fs.stat(abs, function (er, stat) {\n if (er)\n self._stat2(f, abs, null, lstat, cb)\n else\n self._stat2(f, abs, er, stat, cb)\n })\n } else {\n self._stat2(f, abs, er, lstat, cb)\n }\n }\n}\n\nGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return cb()\n }\n\n var needDir = f.slice(-1) === '/'\n this.statCache[abs] = stat\n\n if (abs.slice(-1) === '/' && stat && !stat.isDirectory())\n return cb(null, false, stat)\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return cb()\n\n return cb(null, c, stat)\n}\n","module.exports = globSync\nglobSync.GlobSync = GlobSync\n\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar Glob = require('./glob.js').Glob\nvar util = require('util')\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar common = require('./common.js')\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nfunction globSync (pattern, options) {\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n return new GlobSync(pattern, options).found\n}\n\nfunction GlobSync (pattern, options) {\n if (!pattern)\n throw new Error('must provide pattern')\n\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n if (!(this instanceof GlobSync))\n return new GlobSync(pattern, options)\n\n setopts(this, pattern, options)\n\n if (this.noprocess)\n return this\n\n var n = this.minimatch.set.length\n this.matches = new Array(n)\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false)\n }\n this._finish()\n}\n\nGlobSync.prototype._finish = function () {\n assert(this instanceof GlobSync)\n if (this.realpath) {\n var self = this\n this.matches.forEach(function (matchset, index) {\n var set = self.matches[index] = Object.create(null)\n for (var p in matchset) {\n try {\n p = self._makeAbs(p)\n var real = rp.realpathSync(p, self.realpathCache)\n set[real] = true\n } catch (er) {\n if (er.syscall === 'stat')\n set[self._makeAbs(p)] = true\n else\n throw er\n }\n }\n })\n }\n common.finish(this)\n}\n\n\nGlobSync.prototype._process = function (pattern, index, inGlobStar) {\n assert(this instanceof GlobSync)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // See if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip processing\n if (childrenIgnored(this, read))\n return\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar)\n}\n\n\nGlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {\n var entries = this._readdir(abs, inGlobStar)\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix.slice(-1) !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix)\n newPattern = [prefix, e]\n else\n newPattern = [e]\n this._process(newPattern.concat(remain), index, inGlobStar)\n }\n}\n\n\nGlobSync.prototype._emitMatch = function (index, e) {\n if (isIgnored(this, e))\n return\n\n var abs = this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute) {\n e = abs\n }\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n if (this.stat)\n this._stat(e)\n}\n\n\nGlobSync.prototype._readdirInGlobStar = function (abs) {\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false)\n\n var entries\n var lstat\n var stat\n try {\n lstat = this.fs.lstatSync(abs)\n } catch (er) {\n if (er.code === 'ENOENT') {\n // lstat failed, doesn't exist\n return null\n }\n }\n\n var isSym = lstat && lstat.isSymbolicLink()\n this.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory())\n this.cache[abs] = 'FILE'\n else\n entries = this._readdir(abs, false)\n\n return entries\n}\n\nGlobSync.prototype._readdir = function (abs, inGlobStar) {\n var entries\n\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return null\n\n if (Array.isArray(c))\n return c\n }\n\n try {\n return this._readdirEntries(abs, this.fs.readdirSync(abs))\n } catch (er) {\n this._readdirError(abs, er)\n return null\n }\n}\n\nGlobSync.prototype._readdirEntries = function (abs, entries) {\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n\n // mark and cache dir-ness\n return entries\n}\n\nGlobSync.prototype._readdirError = function (f, er) {\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n throw error\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict)\n throw er\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n}\n\nGlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {\n\n var entries = this._readdir(abs, inGlobStar)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false)\n\n var len = entries.length\n var isSym = this.symlinks[abs]\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true)\n }\n}\n\nGlobSync.prototype._processSimple = function (prefix, index) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var exists = this._stat(prefix)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlobSync.prototype._stat = function (f) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return false\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return c\n\n if (needDir && c === 'FILE')\n return false\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (!stat) {\n var lstat\n try {\n lstat = this.fs.lstatSync(abs)\n } catch (er) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return false\n }\n }\n\n if (lstat && lstat.isSymbolicLink()) {\n try {\n stat = this.fs.statSync(abs)\n } catch (er) {\n stat = lstat\n }\n } else {\n stat = lstat\n }\n }\n\n this.statCache[abs] = stat\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return false\n\n return c\n}\n\nGlobSync.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlobSync.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n","'use strict';\nconst {promisify} = require('util');\nconst fs = require('fs');\nconst path = require('path');\nconst fastGlob = require('fast-glob');\nconst gitIgnore = require('ignore');\nconst slash = require('slash');\n\nconst DEFAULT_IGNORE = [\n\t'**/node_modules/**',\n\t'**/flow-typed/**',\n\t'**/coverage/**',\n\t'**/.git'\n];\n\nconst readFileP = promisify(fs.readFile);\n\nconst mapGitIgnorePatternTo = base => ignore => {\n\tif (ignore.startsWith('!')) {\n\t\treturn '!' + path.posix.join(base, ignore.slice(1));\n\t}\n\n\treturn path.posix.join(base, ignore);\n};\n\nconst parseGitIgnore = (content, options) => {\n\tconst base = slash(path.relative(options.cwd, path.dirname(options.fileName)));\n\n\treturn content\n\t\t.split(/\\r?\\n/)\n\t\t.filter(Boolean)\n\t\t.filter(line => !line.startsWith('#'))\n\t\t.map(mapGitIgnorePatternTo(base));\n};\n\nconst reduceIgnore = files => {\n\tconst ignores = gitIgnore();\n\tfor (const file of files) {\n\t\tignores.add(parseGitIgnore(file.content, {\n\t\t\tcwd: file.cwd,\n\t\t\tfileName: file.filePath\n\t\t}));\n\t}\n\n\treturn ignores;\n};\n\nconst ensureAbsolutePathForCwd = (cwd, p) => {\n\tcwd = slash(cwd);\n\tif (path.isAbsolute(p)) {\n\t\tif (slash(p).startsWith(cwd)) {\n\t\t\treturn p;\n\t\t}\n\n\t\tthrow new Error(`Path ${p} is not in cwd ${cwd}`);\n\t}\n\n\treturn path.join(cwd, p);\n};\n\nconst getIsIgnoredPredecate = (ignores, cwd) => {\n\treturn p => ignores.ignores(slash(path.relative(cwd, ensureAbsolutePathForCwd(cwd, p.path || p))));\n};\n\nconst getFile = async (file, cwd) => {\n\tconst filePath = path.join(cwd, file);\n\tconst content = await readFileP(filePath, 'utf8');\n\n\treturn {\n\t\tcwd,\n\t\tfilePath,\n\t\tcontent\n\t};\n};\n\nconst getFileSync = (file, cwd) => {\n\tconst filePath = path.join(cwd, file);\n\tconst content = fs.readFileSync(filePath, 'utf8');\n\n\treturn {\n\t\tcwd,\n\t\tfilePath,\n\t\tcontent\n\t};\n};\n\nconst normalizeOptions = ({\n\tignore = [],\n\tcwd = slash(process.cwd())\n} = {}) => {\n\treturn {ignore, cwd};\n};\n\nmodule.exports = async options => {\n\toptions = normalizeOptions(options);\n\n\tconst paths = await fastGlob('**/.gitignore', {\n\t\tignore: DEFAULT_IGNORE.concat(options.ignore),\n\t\tcwd: options.cwd\n\t});\n\n\tconst files = await Promise.all(paths.map(file => getFile(file, options.cwd)));\n\tconst ignores = reduceIgnore(files);\n\n\treturn getIsIgnoredPredecate(ignores, options.cwd);\n};\n\nmodule.exports.sync = options => {\n\toptions = normalizeOptions(options);\n\n\tconst paths = fastGlob.sync('**/.gitignore', {\n\t\tignore: DEFAULT_IGNORE.concat(options.ignore),\n\t\tcwd: options.cwd\n\t});\n\n\tconst files = paths.map(file => getFileSync(file, options.cwd));\n\tconst ignores = reduceIgnore(files);\n\n\treturn getIsIgnoredPredecate(ignores, options.cwd);\n};\n","'use strict';\nconst fs = require('fs');\nconst arrayUnion = require('array-union');\nconst merge2 = require('merge2');\nconst fastGlob = require('fast-glob');\nconst dirGlob = require('dir-glob');\nconst gitignore = require('./gitignore');\nconst {FilterStream, UniqueStream} = require('./stream-utils');\n\nconst DEFAULT_FILTER = () => false;\n\nconst isNegative = pattern => pattern[0] === '!';\n\nconst assertPatternsInput = patterns => {\n\tif (!patterns.every(pattern => typeof pattern === 'string')) {\n\t\tthrow new TypeError('Patterns must be a string or an array of strings');\n\t}\n};\n\nconst checkCwdOption = (options = {}) => {\n\tif (!options.cwd) {\n\t\treturn;\n\t}\n\n\tlet stat;\n\ttry {\n\t\tstat = fs.statSync(options.cwd);\n\t} catch {\n\t\treturn;\n\t}\n\n\tif (!stat.isDirectory()) {\n\t\tthrow new Error('The `cwd` option must be a path to a directory');\n\t}\n};\n\nconst getPathString = p => p.stats instanceof fs.Stats ? p.path : p;\n\nconst generateGlobTasks = (patterns, taskOptions) => {\n\tpatterns = arrayUnion([].concat(patterns));\n\tassertPatternsInput(patterns);\n\tcheckCwdOption(taskOptions);\n\n\tconst globTasks = [];\n\n\ttaskOptions = {\n\t\tignore: [],\n\t\texpandDirectories: true,\n\t\t...taskOptions\n\t};\n\n\tfor (const [index, pattern] of patterns.entries()) {\n\t\tif (isNegative(pattern)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst ignore = patterns\n\t\t\t.slice(index)\n\t\t\t.filter(pattern => isNegative(pattern))\n\t\t\t.map(pattern => pattern.slice(1));\n\n\t\tconst options = {\n\t\t\t...taskOptions,\n\t\t\tignore: taskOptions.ignore.concat(ignore)\n\t\t};\n\n\t\tglobTasks.push({pattern, options});\n\t}\n\n\treturn globTasks;\n};\n\nconst globDirs = (task, fn) => {\n\tlet options = {};\n\tif (task.options.cwd) {\n\t\toptions.cwd = task.options.cwd;\n\t}\n\n\tif (Array.isArray(task.options.expandDirectories)) {\n\t\toptions = {\n\t\t\t...options,\n\t\t\tfiles: task.options.expandDirectories\n\t\t};\n\t} else if (typeof task.options.expandDirectories === 'object') {\n\t\toptions = {\n\t\t\t...options,\n\t\t\t...task.options.expandDirectories\n\t\t};\n\t}\n\n\treturn fn(task.pattern, options);\n};\n\nconst getPattern = (task, fn) => task.options.expandDirectories ? globDirs(task, fn) : [task.pattern];\n\nconst getFilterSync = options => {\n\treturn options && options.gitignore ?\n\t\tgitignore.sync({cwd: options.cwd, ignore: options.ignore}) :\n\t\tDEFAULT_FILTER;\n};\n\nconst globToTask = task => glob => {\n\tconst {options} = task;\n\tif (options.ignore && Array.isArray(options.ignore) && options.expandDirectories) {\n\t\toptions.ignore = dirGlob.sync(options.ignore);\n\t}\n\n\treturn {\n\t\tpattern: glob,\n\t\toptions\n\t};\n};\n\nmodule.exports = async (patterns, options) => {\n\tconst globTasks = generateGlobTasks(patterns, options);\n\n\tconst getFilter = async () => {\n\t\treturn options && options.gitignore ?\n\t\t\tgitignore({cwd: options.cwd, ignore: options.ignore}) :\n\t\t\tDEFAULT_FILTER;\n\t};\n\n\tconst getTasks = async () => {\n\t\tconst tasks = await Promise.all(globTasks.map(async task => {\n\t\t\tconst globs = await getPattern(task, dirGlob);\n\t\t\treturn Promise.all(globs.map(globToTask(task)));\n\t\t}));\n\n\t\treturn arrayUnion(...tasks);\n\t};\n\n\tconst [filter, tasks] = await Promise.all([getFilter(), getTasks()]);\n\tconst paths = await Promise.all(tasks.map(task => fastGlob(task.pattern, task.options)));\n\n\treturn arrayUnion(...paths).filter(path_ => !filter(getPathString(path_)));\n};\n\nmodule.exports.sync = (patterns, options) => {\n\tconst globTasks = generateGlobTasks(patterns, options);\n\n\tconst tasks = [];\n\tfor (const task of globTasks) {\n\t\tconst newTask = getPattern(task, dirGlob.sync).map(globToTask(task));\n\t\ttasks.push(...newTask);\n\t}\n\n\tconst filter = getFilterSync(options);\n\n\tlet matches = [];\n\tfor (const task of tasks) {\n\t\tmatches = arrayUnion(matches, fastGlob.sync(task.pattern, task.options));\n\t}\n\n\treturn matches.filter(path_ => !filter(path_));\n};\n\nmodule.exports.stream = (patterns, options) => {\n\tconst globTasks = generateGlobTasks(patterns, options);\n\n\tconst tasks = [];\n\tfor (const task of globTasks) {\n\t\tconst newTask = getPattern(task, dirGlob.sync).map(globToTask(task));\n\t\ttasks.push(...newTask);\n\t}\n\n\tconst filter = getFilterSync(options);\n\tconst filterStream = new FilterStream(p => !filter(p));\n\tconst uniqueStream = new UniqueStream();\n\n\treturn merge2(tasks.map(task => fastGlob.stream(task.pattern, task.options)))\n\t\t.pipe(filterStream)\n\t\t.pipe(uniqueStream);\n};\n\nmodule.exports.generateGlobTasks = generateGlobTasks;\n\nmodule.exports.hasMagic = (patterns, options) => []\n\t.concat(patterns)\n\t.some(pattern => fastGlob.isDynamicPattern(pattern, options));\n\nmodule.exports.gitignore = gitignore;\n","'use strict';\nconst {Transform} = require('stream');\n\nclass ObjectTransform extends Transform {\n\tconstructor() {\n\t\tsuper({\n\t\t\tobjectMode: true\n\t\t});\n\t}\n}\n\nclass FilterStream extends ObjectTransform {\n\tconstructor(filter) {\n\t\tsuper();\n\t\tthis._filter = filter;\n\t}\n\n\t_transform(data, encoding, callback) {\n\t\tif (this._filter(data)) {\n\t\t\tthis.push(data);\n\t\t}\n\n\t\tcallback();\n\t}\n}\n\nclass UniqueStream extends ObjectTransform {\n\tconstructor() {\n\t\tsuper();\n\t\tthis._pushed = new Set();\n\t}\n\n\t_transform(data, encoding, callback) {\n\t\tif (!this._pushed.has(data)) {\n\t\t\tthis.push(data);\n\t\t\tthis._pushed.add(data);\n\t\t}\n\n\t\tcallback();\n\t}\n}\n\nmodule.exports = {\n\tFilterStream,\n\tUniqueStream\n};\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n return obj.__proto__\n}\n\nfunction clone (obj) {\n if (obj === null || typeof obj !== 'object')\n return obj\n\n if (obj instanceof Object)\n var copy = { __proto__: getPrototypeOf(obj) }\n else\n var copy = Object.create(null)\n\n Object.getOwnPropertyNames(obj).forEach(function (key) {\n Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n })\n\n return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n gracefulQueue = Symbol.for('graceful-fs.queue')\n // This is used in testing by future versions\n previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n gracefulQueue = '___graceful-fs.queue'\n previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n Object.defineProperty(context, gracefulQueue, {\n get: function() {\n return queue\n }\n })\n}\n\nvar debug = noop\nif (util.debuglog)\n debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n debug = function() {\n var m = util.format.apply(util, arguments)\n m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n console.error(m)\n }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n // This queue can be shared by multiple loaded instances\n var queue = global[gracefulQueue] || []\n publishQueue(fs, queue)\n\n // Patch fs.close/closeSync to shared queue version, because we need\n // to retry() whenever a close happens *anywhere* in the program.\n // This is essential when multiple graceful-fs instances are\n // in play at the same time.\n fs.close = (function (fs$close) {\n function close (fd, cb) {\n return fs$close.call(fs, fd, function (err) {\n // This function uses the graceful-fs shared queue\n if (!err) {\n resetQueue()\n }\n\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n })\n }\n\n Object.defineProperty(close, previousSymbol, {\n value: fs$close\n })\n return close\n })(fs.close)\n\n fs.closeSync = (function (fs$closeSync) {\n function closeSync (fd) {\n // This function uses the graceful-fs shared queue\n fs$closeSync.apply(fs, arguments)\n resetQueue()\n }\n\n Object.defineProperty(closeSync, previousSymbol, {\n value: fs$closeSync\n })\n return closeSync\n })(fs.closeSync)\n\n if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n process.on('exit', function() {\n debug(fs[gracefulQueue])\n require('assert').equal(fs[gracefulQueue].length, 0)\n })\n }\n}\n\nif (!global[gracefulQueue]) {\n publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n module.exports = patch(fs)\n fs.__patched = true;\n}\n\nfunction patch (fs) {\n // Everything that references the open() function needs to be in here\n polyfills(fs)\n fs.gracefulify = patch\n\n fs.createReadStream = createReadStream\n fs.createWriteStream = createWriteStream\n var fs$readFile = fs.readFile\n fs.readFile = readFile\n function readFile (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$readFile(path, options, cb)\n\n function go$readFile (path, options, cb, startTime) {\n return fs$readFile(path, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$writeFile = fs.writeFile\n fs.writeFile = writeFile\n function writeFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$writeFile(path, data, options, cb)\n\n function go$writeFile (path, data, options, cb, startTime) {\n return fs$writeFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$appendFile = fs.appendFile\n if (fs$appendFile)\n fs.appendFile = appendFile\n function appendFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$appendFile(path, data, options, cb)\n\n function go$appendFile (path, data, options, cb, startTime) {\n return fs$appendFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$copyFile = fs.copyFile\n if (fs$copyFile)\n fs.copyFile = copyFile\n function copyFile (src, dest, flags, cb) {\n if (typeof flags === 'function') {\n cb = flags\n flags = 0\n }\n return go$copyFile(src, dest, flags, cb)\n\n function go$copyFile (src, dest, flags, cb, startTime) {\n return fs$copyFile(src, dest, flags, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$readdir = fs.readdir\n fs.readdir = readdir\n var noReaddirOptionVersions = /^v[0-5]\\./\n function readdir (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n var go$readdir = noReaddirOptionVersions.test(process.version)\n ? function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n : function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, options, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n\n return go$readdir(path, options, cb)\n\n function fs$readdirCallback (path, options, cb, startTime) {\n return function (err, files) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([\n go$readdir,\n [path, options, cb],\n err,\n startTime || Date.now(),\n Date.now()\n ])\n else {\n if (files && files.sort)\n files.sort()\n\n if (typeof cb === 'function')\n cb.call(this, err, files)\n }\n }\n }\n }\n\n if (process.version.substr(0, 4) === 'v0.8') {\n var legStreams = legacy(fs)\n ReadStream = legStreams.ReadStream\n WriteStream = legStreams.WriteStream\n }\n\n var fs$ReadStream = fs.ReadStream\n if (fs$ReadStream) {\n ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n ReadStream.prototype.open = ReadStream$open\n }\n\n var fs$WriteStream = fs.WriteStream\n if (fs$WriteStream) {\n WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n WriteStream.prototype.open = WriteStream$open\n }\n\n Object.defineProperty(fs, 'ReadStream', {\n get: function () {\n return ReadStream\n },\n set: function (val) {\n ReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n Object.defineProperty(fs, 'WriteStream', {\n get: function () {\n return WriteStream\n },\n set: function (val) {\n WriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n // legacy names\n var FileReadStream = ReadStream\n Object.defineProperty(fs, 'FileReadStream', {\n get: function () {\n return FileReadStream\n },\n set: function (val) {\n FileReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n var FileWriteStream = WriteStream\n Object.defineProperty(fs, 'FileWriteStream', {\n get: function () {\n return FileWriteStream\n },\n set: function (val) {\n FileWriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n function ReadStream (path, options) {\n if (this instanceof ReadStream)\n return fs$ReadStream.apply(this, arguments), this\n else\n return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n }\n\n function ReadStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n if (that.autoClose)\n that.destroy()\n\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n that.read()\n }\n })\n }\n\n function WriteStream (path, options) {\n if (this instanceof WriteStream)\n return fs$WriteStream.apply(this, arguments), this\n else\n return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n }\n\n function WriteStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n that.destroy()\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n }\n })\n }\n\n function createReadStream (path, options) {\n return new fs.ReadStream(path, options)\n }\n\n function createWriteStream (path, options) {\n return new fs.WriteStream(path, options)\n }\n\n var fs$open = fs.open\n fs.open = open\n function open (path, flags, mode, cb) {\n if (typeof mode === 'function')\n cb = mode, mode = null\n\n return go$open(path, flags, mode, cb)\n\n function go$open (path, flags, mode, cb, startTime) {\n return fs$open(path, flags, mode, function (err, fd) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n return fs\n}\n\nfunction enqueue (elem) {\n debug('ENQUEUE', elem[0].name, elem[1])\n fs[gracefulQueue].push(elem)\n retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n var now = Date.now()\n for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n // entries that are only a length of 2 are from an older version, don't\n // bother modifying those since they'll be retried anyway.\n if (fs[gracefulQueue][i].length > 2) {\n fs[gracefulQueue][i][3] = now // startTime\n fs[gracefulQueue][i][4] = now // lastTime\n }\n }\n // call retry to make sure we're actively processing the queue\n retry()\n}\n\nfunction retry () {\n // clear the timer and remove it to help prevent unintended concurrency\n clearTimeout(retryTimer)\n retryTimer = undefined\n\n if (fs[gracefulQueue].length === 0)\n return\n\n var elem = fs[gracefulQueue].shift()\n var fn = elem[0]\n var args = elem[1]\n // these items may be unset if they were added by an older graceful-fs\n var err = elem[2]\n var startTime = elem[3]\n var lastTime = elem[4]\n\n // if we don't have a startTime we have no way of knowing if we've waited\n // long enough, so go ahead and retry this item now\n if (startTime === undefined) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args)\n } else if (Date.now() - startTime >= 60000) {\n // it's been more than 60 seconds total, bail now\n debug('TIMEOUT', fn.name, args)\n var cb = args.pop()\n if (typeof cb === 'function')\n cb.call(null, err)\n } else {\n // the amount of time between the last attempt and right now\n var sinceAttempt = Date.now() - lastTime\n // the amount of time between when we first tried, and when we last tried\n // rounded up to at least 1\n var sinceStart = Math.max(lastTime - startTime, 1)\n // backoff. wait longer than the total time we've been retrying, but only\n // up to a maximum of 100ms\n var desiredDelay = Math.min(sinceStart * 1.2, 100)\n // it's been long enough since the last retry, do it again\n if (sinceAttempt >= desiredDelay) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args.concat([startTime]))\n } else {\n // if we can't do this job yet, push it to the end of the queue\n // and let the next iteration check again\n fs[gracefulQueue].push(elem)\n }\n }\n\n // schedule our next run if one isn't already scheduled\n if (retryTimer === undefined) {\n retryTimer = setTimeout(retry, 0)\n }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n return {\n ReadStream: ReadStream,\n WriteStream: WriteStream\n }\n\n function ReadStream (path, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n Stream.call(this);\n\n var self = this;\n\n this.path = path;\n this.fd = null;\n this.readable = true;\n this.paused = false;\n\n this.flags = 'r';\n this.mode = 438; /*=0666*/\n this.bufferSize = 64 * 1024;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.encoding) this.setEncoding(this.encoding);\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n } else if ('number' !== typeof this.end) {\n throw TypeError('end must be a Number');\n }\n\n if (this.start > this.end) {\n throw new Error('start must be <= end');\n }\n\n this.pos = this.start;\n }\n\n if (this.fd !== null) {\n process.nextTick(function() {\n self._read();\n });\n return;\n }\n\n fs.open(this.path, this.flags, this.mode, function (err, fd) {\n if (err) {\n self.emit('error', err);\n self.readable = false;\n return;\n }\n\n self.fd = fd;\n self.emit('open', fd);\n self._read();\n })\n }\n\n function WriteStream (path, options) {\n if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n Stream.call(this);\n\n this.path = path;\n this.fd = null;\n this.writable = true;\n\n this.flags = 'w';\n this.encoding = 'binary';\n this.mode = 438; /*=0666*/\n this.bytesWritten = 0;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.start < 0) {\n throw new Error('start must be >= zero');\n }\n\n this.pos = this.start;\n }\n\n this.busy = false;\n this._queue = [];\n\n if (this.fd === null) {\n this._open = fs.open;\n this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n this.flush();\n }\n }\n}\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n if (!cwd)\n cwd = origCwd.call(process)\n return cwd\n}\ntry {\n process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n var chdir = process.chdir\n process.chdir = function (d) {\n cwd = null\n chdir.call(process, d)\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n // (re-)implement some things that are known busted or missing.\n\n // lchmod, broken prior to 0.6.2\n // back-port the fix here.\n if (constants.hasOwnProperty('O_SYMLINK') &&\n process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n patchLchmod(fs)\n }\n\n // lutimes implementation, or no-op\n if (!fs.lutimes) {\n patchLutimes(fs)\n }\n\n // https://github.com/isaacs/node-graceful-fs/issues/4\n // Chown should not fail on einval or eperm if non-root.\n // It should not fail on enosys ever, as this just indicates\n // that a fs doesn't support the intended operation.\n\n fs.chown = chownFix(fs.chown)\n fs.fchown = chownFix(fs.fchown)\n fs.lchown = chownFix(fs.lchown)\n\n fs.chmod = chmodFix(fs.chmod)\n fs.fchmod = chmodFix(fs.fchmod)\n fs.lchmod = chmodFix(fs.lchmod)\n\n fs.chownSync = chownFixSync(fs.chownSync)\n fs.fchownSync = chownFixSync(fs.fchownSync)\n fs.lchownSync = chownFixSync(fs.lchownSync)\n\n fs.chmodSync = chmodFixSync(fs.chmodSync)\n fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n fs.stat = statFix(fs.stat)\n fs.fstat = statFix(fs.fstat)\n fs.lstat = statFix(fs.lstat)\n\n fs.statSync = statFixSync(fs.statSync)\n fs.fstatSync = statFixSync(fs.fstatSync)\n fs.lstatSync = statFixSync(fs.lstatSync)\n\n // if lchmod/lchown do not exist, then make them no-ops\n if (fs.chmod && !fs.lchmod) {\n fs.lchmod = function (path, mode, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchmodSync = function () {}\n }\n if (fs.chown && !fs.lchown) {\n fs.lchown = function (path, uid, gid, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchownSync = function () {}\n }\n\n // on Windows, A/V software can lock the directory, causing this\n // to fail with an EACCES or EPERM if the directory contains newly\n // created files. Try again on failure, for up to 60 seconds.\n\n // Set the timeout this long because some Windows Anti-Virus, such as Parity\n // bit9, may lock files for up to a minute, causing npm package install\n // failures. Also, take care to yield the scheduler. Windows scheduling gives\n // CPU to a busy looping process, which can cause the program causing the lock\n // contention to be starved of CPU by node, so the contention doesn't resolve.\n if (platform === \"win32\") {\n fs.rename = typeof fs.rename !== 'function' ? fs.rename\n : (function (fs$rename) {\n function rename (from, to, cb) {\n var start = Date.now()\n var backoff = 0;\n fs$rename(from, to, function CB (er) {\n if (er\n && (er.code === \"EACCES\" || er.code === \"EPERM\" || er.code === \"EBUSY\")\n && Date.now() - start < 60000) {\n setTimeout(function() {\n fs.stat(to, function (stater, st) {\n if (stater && stater.code === \"ENOENT\")\n fs$rename(from, to, CB);\n else\n cb(er)\n })\n }, backoff)\n if (backoff < 100)\n backoff += 10;\n return;\n }\n if (cb) cb(er)\n })\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n return rename\n })(fs.rename)\n }\n\n // if read() returns EAGAIN, then just try it again.\n fs.read = typeof fs.read !== 'function' ? fs.read\n : (function (fs$read) {\n function read (fd, buffer, offset, length, position, callback_) {\n var callback\n if (callback_ && typeof callback_ === 'function') {\n var eagCounter = 0\n callback = function (er, _, __) {\n if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n callback_.apply(this, arguments)\n }\n }\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n\n // This ensures `util.promisify` works as it does for native `fs.read`.\n if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n return read\n })(fs.read)\n\n fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n var eagCounter = 0\n while (true) {\n try {\n return fs$readSync.call(fs, fd, buffer, offset, length, position)\n } catch (er) {\n if (er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n continue\n }\n throw er\n }\n }\n }})(fs.readSync)\n\n function patchLchmod (fs) {\n fs.lchmod = function (path, mode, callback) {\n fs.open( path\n , constants.O_WRONLY | constants.O_SYMLINK\n , mode\n , function (err, fd) {\n if (err) {\n if (callback) callback(err)\n return\n }\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n fs.fchmod(fd, mode, function (err) {\n fs.close(fd, function(err2) {\n if (callback) callback(err || err2)\n })\n })\n })\n }\n\n fs.lchmodSync = function (path, mode) {\n var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n var threw = true\n var ret\n try {\n ret = fs.fchmodSync(fd, mode)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n }\n\n function patchLutimes (fs) {\n if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n fs.lutimes = function (path, at, mt, cb) {\n fs.open(path, constants.O_SYMLINK, function (er, fd) {\n if (er) {\n if (cb) cb(er)\n return\n }\n fs.futimes(fd, at, mt, function (er) {\n fs.close(fd, function (er2) {\n if (cb) cb(er || er2)\n })\n })\n })\n }\n\n fs.lutimesSync = function (path, at, mt) {\n var fd = fs.openSync(path, constants.O_SYMLINK)\n var ret\n var threw = true\n try {\n ret = fs.futimesSync(fd, at, mt)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n\n } else if (fs.futimes) {\n fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n fs.lutimesSync = function () {}\n }\n }\n\n function chmodFix (orig) {\n if (!orig) return orig\n return function (target, mode, cb) {\n return orig.call(fs, target, mode, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chmodFixSync (orig) {\n if (!orig) return orig\n return function (target, mode) {\n try {\n return orig.call(fs, target, mode)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n\n function chownFix (orig) {\n if (!orig) return orig\n return function (target, uid, gid, cb) {\n return orig.call(fs, target, uid, gid, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chownFixSync (orig) {\n if (!orig) return orig\n return function (target, uid, gid) {\n try {\n return orig.call(fs, target, uid, gid)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n function statFix (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n function callback (er, stats) {\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n if (cb) cb.apply(this, arguments)\n }\n return options ? orig.call(fs, target, options, callback)\n : orig.call(fs, target, callback)\n }\n }\n\n function statFixSync (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options) {\n var stats = options ? orig.call(fs, target, options)\n : orig.call(fs, target)\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n return stats;\n }\n }\n\n // ENOSYS means that the fs doesn't support the op. Just ignore\n // that, because it doesn't matter.\n //\n // if there's no getuid, or if getuid() is something other\n // than 0, and the error is EINVAL or EPERM, then just ignore\n // it.\n //\n // This specific case is a silent failure in cp, install, tar,\n // and most other unix tools that manage permissions.\n //\n // When running as root, or if other types of errors are\n // encountered, then it's strict.\n function chownErOk (er) {\n if (!er)\n return true\n\n if (er.code === \"ENOSYS\")\n return true\n\n var nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n return true\n }\n\n return false\n }\n}\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","/*!\n * has-glob \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isGlob = require('is-glob');\n\nmodule.exports = function hasGlob(val) {\n if (val == null) return false;\n if (typeof val === 'string') {\n return isGlob(val);\n }\n if (Array.isArray(val)) {\n var len = val.length;\n while (len--) {\n if (isGlob(val[len])) {\n return true;\n }\n }\n }\n return false;\n};\n","/*!\n * is-glob \n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\n\nmodule.exports = function isGlob(str) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n if (isExtglob(str)) return true;\n\n var regex = /(\\\\).|([*?]|\\[.*\\]|\\{.*\\}|\\(.*\\|.*\\)|^!)/;\n var match;\n\n while ((match = regex.exec(str))) {\n if (match[2]) return true;\n str = str.slice(match.index + match[0].length);\n }\n return false;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict'\n\nvar gitHosts = module.exports = {\n github: {\n // First two are insecure and generally shouldn't be used any more, but\n // they are still supported.\n 'protocols': [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'github.com',\n 'treepath': 'tree',\n 'filetemplate': 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}',\n 'bugstemplate': 'https://{domain}/{user}/{project}/issues',\n 'gittemplate': 'git://{auth@}{domain}/{user}/{project}.git{#committish}',\n 'tarballtemplate': 'https://codeload.{domain}/{user}/{project}/tar.gz/{committish}'\n },\n bitbucket: {\n 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'bitbucket.org',\n 'treepath': 'src',\n 'tarballtemplate': 'https://{domain}/{user}/{project}/get/{committish}.tar.gz'\n },\n gitlab: {\n 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'gitlab.com',\n 'treepath': 'tree',\n 'bugstemplate': 'https://{domain}/{user}/{project}/issues',\n 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}',\n 'tarballtemplate': 'https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}',\n 'pathmatch': /^[/]([^/]+)[/]((?!.*(\\/-\\/|\\/repository\\/archive\\.tar\\.gz\\?=.*|\\/repository\\/[^/]+\\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/\n },\n gist: {\n 'protocols': [ 'git', 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'gist.github.com',\n 'pathmatch': /^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/,\n 'filetemplate': 'https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}',\n 'bugstemplate': 'https://{domain}/{project}',\n 'gittemplate': 'git://{domain}/{project}.git{#committish}',\n 'sshtemplate': 'git@{domain}:/{project}.git{#committish}',\n 'sshurltemplate': 'git+ssh://git@{domain}/{project}.git{#committish}',\n 'browsetemplate': 'https://{domain}/{project}{/committish}',\n 'browsefiletemplate': 'https://{domain}/{project}{/committish}{#path}',\n 'docstemplate': 'https://{domain}/{project}{/committish}',\n 'httpstemplate': 'git+https://{domain}/{project}.git{#committish}',\n 'shortcuttemplate': '{type}:{project}{#committish}',\n 'pathtemplate': '{project}{#committish}',\n 'tarballtemplate': 'https://codeload.github.com/gist/{project}/tar.gz/{committish}',\n 'hashformat': function (fragment) {\n return 'file-' + formatHashFragment(fragment)\n }\n }\n}\n\nvar gitHostDefaults = {\n 'sshtemplate': 'git@{domain}:{user}/{project}.git{#committish}',\n 'sshurltemplate': 'git+ssh://git@{domain}/{user}/{project}.git{#committish}',\n 'browsetemplate': 'https://{domain}/{user}/{project}{/tree/committish}',\n 'browsefiletemplate': 'https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}',\n 'docstemplate': 'https://{domain}/{user}/{project}{/tree/committish}#readme',\n 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}',\n 'filetemplate': 'https://{domain}/{user}/{project}/raw/{committish}/{path}',\n 'shortcuttemplate': '{type}:{user}/{project}{#committish}',\n 'pathtemplate': '{user}/{project}{#committish}',\n 'pathmatch': /^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,\n 'hashformat': formatHashFragment\n}\n\nObject.keys(gitHosts).forEach(function (name) {\n Object.keys(gitHostDefaults).forEach(function (key) {\n if (gitHosts[name][key]) return\n gitHosts[name][key] = gitHostDefaults[key]\n })\n gitHosts[name].protocols_re = RegExp('^(' +\n gitHosts[name].protocols.map(function (protocol) {\n return protocol.replace(/([\\\\+*{}()[\\]$^|])/g, '\\\\$1')\n }).join('|') + '):$')\n})\n\nfunction formatHashFragment (fragment) {\n return fragment.toLowerCase().replace(/^\\W+|\\/|\\W+$/g, '').replace(/\\W+/g, '-')\n}\n","'use strict'\nvar gitHosts = require('./git-host-info.js')\n/* eslint-disable node/no-deprecated-api */\n\n// copy-pasta util._extend from node's source, to avoid pulling\n// the whole util module into peoples' webpack bundles.\n/* istanbul ignore next */\nvar extend = Object.assign || function _extend (target, source) {\n // Don't do anything if source isn't an object\n if (source === null || typeof source !== 'object') return target\n\n var keys = Object.keys(source)\n var i = keys.length\n while (i--) {\n target[keys[i]] = source[keys[i]]\n }\n return target\n}\n\nmodule.exports = GitHost\nfunction GitHost (type, user, auth, project, committish, defaultRepresentation, opts) {\n var gitHostInfo = this\n gitHostInfo.type = type\n Object.keys(gitHosts[type]).forEach(function (key) {\n gitHostInfo[key] = gitHosts[type][key]\n })\n gitHostInfo.user = user\n gitHostInfo.auth = auth\n gitHostInfo.project = project\n gitHostInfo.committish = committish\n gitHostInfo.default = defaultRepresentation\n gitHostInfo.opts = opts || {}\n}\n\nGitHost.prototype.hash = function () {\n return this.committish ? '#' + this.committish : ''\n}\n\nGitHost.prototype._fill = function (template, opts) {\n if (!template) return\n var vars = extend({}, opts)\n vars.path = vars.path ? vars.path.replace(/^[/]+/g, '') : ''\n opts = extend(extend({}, this.opts), opts)\n var self = this\n Object.keys(this).forEach(function (key) {\n if (self[key] != null && vars[key] == null) vars[key] = self[key]\n })\n var rawAuth = vars.auth\n var rawcommittish = vars.committish\n var rawFragment = vars.fragment\n var rawPath = vars.path\n var rawProject = vars.project\n Object.keys(vars).forEach(function (key) {\n var value = vars[key]\n if ((key === 'path' || key === 'project') && typeof value === 'string') {\n vars[key] = value.split('/').map(function (pathComponent) {\n return encodeURIComponent(pathComponent)\n }).join('/')\n } else {\n vars[key] = encodeURIComponent(value)\n }\n })\n vars['auth@'] = rawAuth ? rawAuth + '@' : ''\n vars['#fragment'] = rawFragment ? '#' + this.hashformat(rawFragment) : ''\n vars.fragment = vars.fragment ? vars.fragment : ''\n vars['#path'] = rawPath ? '#' + this.hashformat(rawPath) : ''\n vars['/path'] = vars.path ? '/' + vars.path : ''\n vars.projectPath = rawProject.split('/').map(encodeURIComponent).join('/')\n if (opts.noCommittish) {\n vars['#committish'] = ''\n vars['/tree/committish'] = ''\n vars['/committish'] = ''\n vars.committish = ''\n } else {\n vars['#committish'] = rawcommittish ? '#' + rawcommittish : ''\n vars['/tree/committish'] = vars.committish\n ? '/' + vars.treepath + '/' + vars.committish\n : ''\n vars['/committish'] = vars.committish ? '/' + vars.committish : ''\n vars.committish = vars.committish || 'master'\n }\n var res = template\n Object.keys(vars).forEach(function (key) {\n res = res.replace(new RegExp('[{]' + key + '[}]', 'g'), vars[key])\n })\n if (opts.noGitPlus) {\n return res.replace(/^git[+]/, '')\n } else {\n return res\n }\n}\n\nGitHost.prototype.ssh = function (opts) {\n return this._fill(this.sshtemplate, opts)\n}\n\nGitHost.prototype.sshurl = function (opts) {\n return this._fill(this.sshurltemplate, opts)\n}\n\nGitHost.prototype.browse = function (P, F, opts) {\n if (typeof P === 'string') {\n if (typeof F !== 'string') {\n opts = F\n F = null\n }\n return this._fill(this.browsefiletemplate, extend({\n fragment: F,\n path: P\n }, opts))\n } else {\n return this._fill(this.browsetemplate, P)\n }\n}\n\nGitHost.prototype.docs = function (opts) {\n return this._fill(this.docstemplate, opts)\n}\n\nGitHost.prototype.bugs = function (opts) {\n return this._fill(this.bugstemplate, opts)\n}\n\nGitHost.prototype.https = function (opts) {\n return this._fill(this.httpstemplate, opts)\n}\n\nGitHost.prototype.git = function (opts) {\n return this._fill(this.gittemplate, opts)\n}\n\nGitHost.prototype.shortcut = function (opts) {\n return this._fill(this.shortcuttemplate, opts)\n}\n\nGitHost.prototype.path = function (opts) {\n return this._fill(this.pathtemplate, opts)\n}\n\nGitHost.prototype.tarball = function (opts_) {\n var opts = extend({}, opts_, { noCommittish: false })\n return this._fill(this.tarballtemplate, opts)\n}\n\nGitHost.prototype.file = function (P, opts) {\n return this._fill(this.filetemplate, extend({ path: P }, opts))\n}\n\nGitHost.prototype.getDefaultRepresentation = function () {\n return this.default\n}\n\nGitHost.prototype.toString = function (opts) {\n if (this.default && typeof this[this.default] === 'function') return this[this.default](opts)\n return this.sshurl(opts)\n}\n","'use strict'\nvar url = require('url')\nvar gitHosts = require('./git-host-info.js')\nvar GitHost = module.exports = require('./git-host.js')\n\nvar protocolToRepresentationMap = {\n 'git+ssh:': 'sshurl',\n 'git+https:': 'https',\n 'ssh:': 'sshurl',\n 'git:': 'git'\n}\n\nfunction protocolToRepresentation (protocol) {\n return protocolToRepresentationMap[protocol] || protocol.slice(0, -1)\n}\n\nvar authProtocols = {\n 'git:': true,\n 'https:': true,\n 'git+https:': true,\n 'http:': true,\n 'git+http:': true\n}\n\nvar cache = {}\n\nmodule.exports.fromUrl = function (giturl, opts) {\n if (typeof giturl !== 'string') return\n var key = giturl + JSON.stringify(opts || {})\n\n if (!(key in cache)) {\n cache[key] = fromUrl(giturl, opts)\n }\n\n return cache[key]\n}\n\nfunction fromUrl (giturl, opts) {\n if (giturl == null || giturl === '') return\n var url = fixupUnqualifiedGist(\n isGitHubShorthand(giturl) ? 'github:' + giturl : giturl\n )\n var parsed = parseGitUrl(url)\n var shortcutMatch = url.match(/^([^:]+):(?:[^@]+@)?(?:([^/]*)\\/)?([^#]+)/)\n var matches = Object.keys(gitHosts).map(function (gitHostName) {\n try {\n var gitHostInfo = gitHosts[gitHostName]\n var auth = null\n if (parsed.auth && authProtocols[parsed.protocol]) {\n auth = parsed.auth\n }\n var committish = parsed.hash ? decodeURIComponent(parsed.hash.substr(1)) : null\n var user = null\n var project = null\n var defaultRepresentation = null\n if (shortcutMatch && shortcutMatch[1] === gitHostName) {\n user = shortcutMatch[2] && decodeURIComponent(shortcutMatch[2])\n project = decodeURIComponent(shortcutMatch[3].replace(/\\.git$/, ''))\n defaultRepresentation = 'shortcut'\n } else {\n if (parsed.host && parsed.host !== gitHostInfo.domain && parsed.host.replace(/^www[.]/, '') !== gitHostInfo.domain) return\n if (!gitHostInfo.protocols_re.test(parsed.protocol)) return\n if (!parsed.path) return\n var pathmatch = gitHostInfo.pathmatch\n var matched = parsed.path.match(pathmatch)\n if (!matched) return\n /* istanbul ignore else */\n if (matched[1] !== null && matched[1] !== undefined) {\n user = decodeURIComponent(matched[1].replace(/^:/, ''))\n }\n project = decodeURIComponent(matched[2])\n defaultRepresentation = protocolToRepresentation(parsed.protocol)\n }\n return new GitHost(gitHostName, user, auth, project, committish, defaultRepresentation, opts)\n } catch (ex) {\n /* istanbul ignore else */\n if (ex instanceof URIError) {\n } else throw ex\n }\n }).filter(function (gitHostInfo) { return gitHostInfo })\n if (matches.length !== 1) return\n return matches[0]\n}\n\nfunction isGitHubShorthand (arg) {\n // Note: This does not fully test the git ref format.\n // See https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html\n //\n // The only way to do this properly would be to shell out to\n // git-check-ref-format, and as this is a fast sync function,\n // we don't want to do that. Just let git fail if it turns\n // out that the commit-ish is invalid.\n // GH usernames cannot start with . or -\n return /^[^:@%/\\s.-][^:@%/\\s]*[/][^:@\\s/%]+(?:#.*)?$/.test(arg)\n}\n\nfunction fixupUnqualifiedGist (giturl) {\n // necessary for round-tripping gists\n var parsed = url.parse(giturl)\n if (parsed.protocol === 'gist:' && parsed.host && !parsed.path) {\n return parsed.protocol + '/' + parsed.host\n } else {\n return giturl\n }\n}\n\nfunction parseGitUrl (giturl) {\n var matched = giturl.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/)\n if (!matched) {\n var legacy = url.parse(giturl)\n // If we don't have url.URL, then sorry, this is just not fixable.\n // This affects Node <= 6.12.\n if (legacy.auth && typeof url.URL === 'function') {\n // git urls can be in the form of scp-style/ssh-connect strings, like\n // git+ssh://user@host.com:some/path, which the legacy url parser\n // supports, but WhatWG url.URL class does not. However, the legacy\n // parser de-urlencodes the username and password, so something like\n // https://user%3An%40me:p%40ss%3Aword@x.com/ becomes\n // https://user:n@me:p@ss:word@x.com/ which is all kinds of wrong.\n // Pull off just the auth and host, so we dont' get the confusing\n // scp-style URL, then pass that to the WhatWG parser to get the\n // auth properly escaped.\n var authmatch = giturl.match(/[^@]+@[^:/]+/)\n /* istanbul ignore else - this should be impossible */\n if (authmatch) {\n var whatwg = new url.URL(authmatch[0])\n legacy.auth = whatwg.username || ''\n if (whatwg.password) legacy.auth += ':' + whatwg.password\n }\n }\n return legacy\n }\n return {\n protocol: 'git+ssh:',\n slashes: true,\n auth: matched[1],\n host: matched[2],\n port: null,\n hostname: matched[2],\n hash: matched[4],\n search: null,\n query: null,\n pathname: '/' + matched[3],\n path: '/' + matched[3],\n href: 'git+ssh://' + matched[1] + '@' + matched[2] +\n '/' + matched[3] + (matched[4] || '')\n }\n}\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.SIGNALS=void 0;\n\nconst SIGNALS=[\n{\nname:\"SIGHUP\",\nnumber:1,\naction:\"terminate\",\ndescription:\"Terminal closed\",\nstandard:\"posix\"},\n\n{\nname:\"SIGINT\",\nnumber:2,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-C\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGQUIT\",\nnumber:3,\naction:\"core\",\ndescription:\"User interruption with CTRL-\\\\\",\nstandard:\"posix\"},\n\n{\nname:\"SIGILL\",\nnumber:4,\naction:\"core\",\ndescription:\"Invalid machine instruction\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGTRAP\",\nnumber:5,\naction:\"core\",\ndescription:\"Debugger breakpoint\",\nstandard:\"posix\"},\n\n{\nname:\"SIGABRT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGIOT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGBUS\",\nnumber:7,\naction:\"core\",\ndescription:\n\"Bus error due to misaligned, non-existing address or paging error\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGEMT\",\nnumber:7,\naction:\"terminate\",\ndescription:\"Command should be emulated but is not implemented\",\nstandard:\"other\"},\n\n{\nname:\"SIGFPE\",\nnumber:8,\naction:\"core\",\ndescription:\"Floating point arithmetic error\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGKILL\",\nnumber:9,\naction:\"terminate\",\ndescription:\"Forced termination\",\nstandard:\"posix\",\nforced:true},\n\n{\nname:\"SIGUSR1\",\nnumber:10,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"},\n\n{\nname:\"SIGSEGV\",\nnumber:11,\naction:\"core\",\ndescription:\"Segmentation fault\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGUSR2\",\nnumber:12,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"},\n\n{\nname:\"SIGPIPE\",\nnumber:13,\naction:\"terminate\",\ndescription:\"Broken pipe or socket\",\nstandard:\"posix\"},\n\n{\nname:\"SIGALRM\",\nnumber:14,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"posix\"},\n\n{\nname:\"SIGTERM\",\nnumber:15,\naction:\"terminate\",\ndescription:\"Termination\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGSTKFLT\",\nnumber:16,\naction:\"terminate\",\ndescription:\"Stack is empty or overflowed\",\nstandard:\"other\"},\n\n{\nname:\"SIGCHLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"posix\"},\n\n{\nname:\"SIGCLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"other\"},\n\n{\nname:\"SIGCONT\",\nnumber:18,\naction:\"unpause\",\ndescription:\"Unpaused\",\nstandard:\"posix\",\nforced:true},\n\n{\nname:\"SIGSTOP\",\nnumber:19,\naction:\"pause\",\ndescription:\"Paused\",\nstandard:\"posix\",\nforced:true},\n\n{\nname:\"SIGTSTP\",\nnumber:20,\naction:\"pause\",\ndescription:\"Paused using CTRL-Z or \\\"suspend\\\"\",\nstandard:\"posix\"},\n\n{\nname:\"SIGTTIN\",\nnumber:21,\naction:\"pause\",\ndescription:\"Background process cannot read terminal input\",\nstandard:\"posix\"},\n\n{\nname:\"SIGBREAK\",\nnumber:21,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-BREAK\",\nstandard:\"other\"},\n\n{\nname:\"SIGTTOU\",\nnumber:22,\naction:\"pause\",\ndescription:\"Background process cannot write to terminal output\",\nstandard:\"posix\"},\n\n{\nname:\"SIGURG\",\nnumber:23,\naction:\"ignore\",\ndescription:\"Socket received out-of-band data\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGXCPU\",\nnumber:24,\naction:\"core\",\ndescription:\"Process timed out\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGXFSZ\",\nnumber:25,\naction:\"core\",\ndescription:\"File too big\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGVTALRM\",\nnumber:26,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGPROF\",\nnumber:27,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGWINCH\",\nnumber:28,\naction:\"ignore\",\ndescription:\"Terminal window size changed\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGIO\",\nnumber:29,\naction:\"terminate\",\ndescription:\"I/O is available\",\nstandard:\"other\"},\n\n{\nname:\"SIGPOLL\",\nnumber:29,\naction:\"terminate\",\ndescription:\"Watched event\",\nstandard:\"other\"},\n\n{\nname:\"SIGINFO\",\nnumber:29,\naction:\"ignore\",\ndescription:\"Request for process information\",\nstandard:\"other\"},\n\n{\nname:\"SIGPWR\",\nnumber:30,\naction:\"terminate\",\ndescription:\"Device running out of power\",\nstandard:\"systemv\"},\n\n{\nname:\"SIGSYS\",\nnumber:31,\naction:\"core\",\ndescription:\"Invalid system call\",\nstandard:\"other\"},\n\n{\nname:\"SIGUNUSED\",\nnumber:31,\naction:\"terminate\",\ndescription:\"Invalid system call\",\nstandard:\"other\"}];exports.SIGNALS=SIGNALS;\n//# sourceMappingURL=core.js.map","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.signalsByNumber=exports.signalsByName=void 0;var _os=require(\"os\");\n\nvar _signals=require(\"./signals.js\");\nvar _realtime=require(\"./realtime.js\");\n\n\n\nconst getSignalsByName=function(){\nconst signals=(0,_signals.getSignals)();\nreturn signals.reduce(getSignalByName,{});\n};\n\nconst getSignalByName=function(\nsignalByNameMemo,\n{name,number,description,supported,action,forced,standard})\n{\nreturn{\n...signalByNameMemo,\n[name]:{name,number,description,supported,action,forced,standard}};\n\n};\n\nconst signalsByName=getSignalsByName();exports.signalsByName=signalsByName;\n\n\n\n\nconst getSignalsByNumber=function(){\nconst signals=(0,_signals.getSignals)();\nconst length=_realtime.SIGRTMAX+1;\nconst signalsA=Array.from({length},(value,number)=>\ngetSignalByNumber(number,signals));\n\nreturn Object.assign({},...signalsA);\n};\n\nconst getSignalByNumber=function(number,signals){\nconst signal=findSignalByNumber(number,signals);\n\nif(signal===undefined){\nreturn{};\n}\n\nconst{name,description,supported,action,forced,standard}=signal;\nreturn{\n[number]:{\nname,\nnumber,\ndescription,\nsupported,\naction,\nforced,\nstandard}};\n\n\n};\n\n\n\nconst findSignalByNumber=function(number,signals){\nconst signal=signals.find(({name})=>_os.constants.signals[name]===number);\n\nif(signal!==undefined){\nreturn signal;\n}\n\nreturn signals.find(signalA=>signalA.number===number);\n};\n\nconst signalsByNumber=getSignalsByNumber();exports.signalsByNumber=signalsByNumber;\n//# sourceMappingURL=main.js.map","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.SIGRTMAX=exports.getRealtimeSignals=void 0;\nconst getRealtimeSignals=function(){\nconst length=SIGRTMAX-SIGRTMIN+1;\nreturn Array.from({length},getRealtimeSignal);\n};exports.getRealtimeSignals=getRealtimeSignals;\n\nconst getRealtimeSignal=function(value,index){\nreturn{\nname:`SIGRT${index+1}`,\nnumber:SIGRTMIN+index,\naction:\"terminate\",\ndescription:\"Application-specific signal (realtime)\",\nstandard:\"posix\"};\n\n};\n\nconst SIGRTMIN=34;\nconst SIGRTMAX=64;exports.SIGRTMAX=SIGRTMAX;\n//# sourceMappingURL=realtime.js.map","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.getSignals=void 0;var _os=require(\"os\");\n\nvar _core=require(\"./core.js\");\nvar _realtime=require(\"./realtime.js\");\n\n\n\nconst getSignals=function(){\nconst realtimeSignals=(0,_realtime.getRealtimeSignals)();\nconst signals=[..._core.SIGNALS,...realtimeSignals].map(normalizeSignal);\nreturn signals;\n};exports.getSignals=getSignals;\n\n\n\n\n\n\n\nconst normalizeSignal=function({\nname,\nnumber:defaultNumber,\ndescription,\naction,\nforced=false,\nstandard})\n{\nconst{\nsignals:{[name]:constantSignal}}=\n_os.constants;\nconst supported=constantSignal!==undefined;\nconst number=supported?constantSignal:defaultNumber;\nreturn{name,number,description,supported,action,forced,standard};\n};\n//# sourceMappingURL=signals.js.map","// A simple implementation of make-array\nfunction makeArray (subject) {\n return Array.isArray(subject)\n ? subject\n : [subject]\n}\n\nconst EMPTY = ''\nconst SPACE = ' '\nconst ESCAPE = '\\\\'\nconst REGEX_TEST_BLANK_LINE = /^\\s+$/\nconst REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\\\!/\nconst REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\\\#/\nconst REGEX_SPLITALL_CRLF = /\\r?\\n/g\n// /foo,\n// ./foo,\n// ../foo,\n// .\n// ..\nconst REGEX_TEST_INVALID_PATH = /^\\.*\\/|^\\.+$/\n\nconst SLASH = '/'\nconst KEY_IGNORE = typeof Symbol !== 'undefined'\n ? Symbol.for('node-ignore')\n /* istanbul ignore next */\n : 'node-ignore'\n\nconst define = (object, key, value) =>\n Object.defineProperty(object, key, {value})\n\nconst REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g\n\nconst RETURN_FALSE = () => false\n\n// Sanitize the range of a regular expression\n// The cases are complicated, see test cases for details\nconst sanitizeRange = range => range.replace(\n REGEX_REGEXP_RANGE,\n (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0)\n ? match\n // Invalid range (out of order) which is ok for gitignore rules but\n // fatal for JavaScript regular expression, so eliminate it.\n : EMPTY\n)\n\n// See fixtures #59\nconst cleanRangeBackSlash = slashes => {\n const {length} = slashes\n return slashes.slice(0, length - length % 2)\n}\n\n// > If the pattern ends with a slash,\n// > it is removed for the purpose of the following description,\n// > but it would only find a match with a directory.\n// > In other words, foo/ will match a directory foo and paths underneath it,\n// > but will not match a regular file or a symbolic link foo\n// > (this is consistent with the way how pathspec works in general in Git).\n// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'\n// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call\n// you could use option `mark: true` with `glob`\n\n// '`foo/`' should not continue with the '`..`'\nconst REPLACERS = [\n\n // > Trailing spaces are ignored unless they are quoted with backslash (\"\\\")\n [\n // (a\\ ) -> (a )\n // (a ) -> (a)\n // (a \\ ) -> (a )\n /\\\\?\\s+$/,\n match => match.indexOf('\\\\') === 0\n ? SPACE\n : EMPTY\n ],\n\n // replace (\\ ) with ' '\n [\n /\\\\\\s/g,\n () => SPACE\n ],\n\n // Escape metacharacters\n // which is written down by users but means special for regular expressions.\n\n // > There are 12 characters with special meanings:\n // > - the backslash \\,\n // > - the caret ^,\n // > - the dollar sign $,\n // > - the period or dot .,\n // > - the vertical bar or pipe symbol |,\n // > - the question mark ?,\n // > - the asterisk or star *,\n // > - the plus sign +,\n // > - the opening parenthesis (,\n // > - the closing parenthesis ),\n // > - and the opening square bracket [,\n // > - the opening curly brace {,\n // > These special characters are often called \"metacharacters\".\n [\n /[\\\\$.|*+(){^]/g,\n match => `\\\\${match}`\n ],\n\n [\n // > a question mark (?) matches a single character\n /(?!\\\\)\\?/g,\n () => '[^/]'\n ],\n\n // leading slash\n [\n\n // > A leading slash matches the beginning of the pathname.\n // > For example, \"/*.c\" matches \"cat-file.c\" but not \"mozilla-sha1/sha1.c\".\n // A leading slash matches the beginning of the pathname\n /^\\//,\n () => '^'\n ],\n\n // replace special metacharacter slash after the leading slash\n [\n /\\//g,\n () => '\\\\/'\n ],\n\n [\n // > A leading \"**\" followed by a slash means match in all directories.\n // > For example, \"**/foo\" matches file or directory \"foo\" anywhere,\n // > the same as pattern \"foo\".\n // > \"**/foo/bar\" matches file or directory \"bar\" anywhere that is directly\n // > under directory \"foo\".\n // Notice that the '*'s have been replaced as '\\\\*'\n /^\\^*\\\\\\*\\\\\\*\\\\\\//,\n\n // '**/foo' <-> 'foo'\n () => '^(?:.*\\\\/)?'\n ],\n\n // starting\n [\n // there will be no leading '/'\n // (which has been replaced by section \"leading slash\")\n // If starts with '**', adding a '^' to the regular expression also works\n /^(?=[^^])/,\n function startingReplacer () {\n // If has a slash `/` at the beginning or middle\n return !/\\/(?!$)/.test(this)\n // > Prior to 2.22.1\n // > If the pattern does not contain a slash /,\n // > Git treats it as a shell glob pattern\n // Actually, if there is only a trailing slash,\n // git also treats it as a shell glob pattern\n\n // After 2.22.1 (compatible but clearer)\n // > If there is a separator at the beginning or middle (or both)\n // > of the pattern, then the pattern is relative to the directory\n // > level of the particular .gitignore file itself.\n // > Otherwise the pattern may also match at any level below\n // > the .gitignore level.\n ? '(?:^|\\\\/)'\n\n // > Otherwise, Git treats the pattern as a shell glob suitable for\n // > consumption by fnmatch(3)\n : '^'\n }\n ],\n\n // two globstars\n [\n // Use lookahead assertions so that we could match more than one `'/**'`\n /\\\\\\/\\\\\\*\\\\\\*(?=\\\\\\/|$)/g,\n\n // Zero, one or several directories\n // should not use '*', or it will be replaced by the next replacer\n\n // Check if it is not the last `'/**'`\n (_, index, str) => index + 6 < str.length\n\n // case: /**/\n // > A slash followed by two consecutive asterisks then a slash matches\n // > zero or more directories.\n // > For example, \"a/**/b\" matches \"a/b\", \"a/x/b\", \"a/x/y/b\" and so on.\n // '/**/'\n ? '(?:\\\\/[^\\\\/]+)*'\n\n // case: /**\n // > A trailing `\"/**\"` matches everything inside.\n\n // #21: everything inside but it should not include the current folder\n : '\\\\/.+'\n ],\n\n // intermediate wildcards\n [\n // Never replace escaped '*'\n // ignore rule '\\*' will match the path '*'\n\n // 'abc.*/' -> go\n // 'abc.*' -> skip this rule\n /(^|[^\\\\]+)\\\\\\*(?=.+)/g,\n\n // '*.js' matches '.js'\n // '*.js' doesn't match 'abc'\n (_, p1) => `${p1}[^\\\\/]*`\n ],\n\n [\n // unescape, revert step 3 except for back slash\n // For example, if a user escape a '\\\\*',\n // after step 3, the result will be '\\\\\\\\\\\\*'\n /\\\\\\\\\\\\(?=[$.|*+(){^])/g,\n () => ESCAPE\n ],\n\n [\n // '\\\\\\\\' -> '\\\\'\n /\\\\\\\\/g,\n () => ESCAPE\n ],\n\n [\n // > The range notation, e.g. [a-zA-Z],\n // > can be used to match one of the characters in a range.\n\n // `\\` is escaped by step 3\n /(\\\\)?\\[([^\\]/]*?)(\\\\*)($|\\])/g,\n (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE\n // '\\\\[bar]' -> '\\\\\\\\[bar\\\\]'\n ? `\\\\[${range}${cleanRangeBackSlash(endEscape)}${close}`\n : close === ']'\n ? endEscape.length % 2 === 0\n // A normal case, and it is a range notation\n // '[bar]'\n // '[bar\\\\\\\\]'\n ? `[${sanitizeRange(range)}${endEscape}]`\n // Invalid range notaton\n // '[bar\\\\]' -> '[bar\\\\\\\\]'\n : '[]'\n : '[]'\n ],\n\n // ending\n [\n // 'js' will not match 'js.'\n // 'ab' will not match 'abc'\n /(?:[^*])$/,\n\n // WTF!\n // https://git-scm.com/docs/gitignore\n // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1)\n // which re-fixes #24, #38\n\n // > If there is a separator at the end of the pattern then the pattern\n // > will only match directories, otherwise the pattern can match both\n // > files and directories.\n\n // 'js*' will not match 'a.js'\n // 'js/' will not match 'a.js'\n // 'js' will match 'a.js' and 'a.js/'\n match => /\\/$/.test(match)\n // foo/ will not match 'foo'\n ? `${match}$`\n // foo matches 'foo' and 'foo/'\n : `${match}(?=$|\\\\/$)`\n ],\n\n // trailing wildcard\n [\n /(\\^|\\\\\\/)?\\\\\\*$/,\n (_, p1) => {\n const prefix = p1\n // '\\^':\n // '/*' does not match EMPTY\n // '/*' does not match everything\n\n // '\\\\\\/':\n // 'abc/*' does not match 'abc/'\n ? `${p1}[^/]+`\n\n // 'a*' matches 'a'\n // 'a*' matches 'aa'\n : '[^/]*'\n\n return `${prefix}(?=$|\\\\/$)`\n }\n ],\n]\n\n// A simple cache, because an ignore rule only has only one certain meaning\nconst regexCache = Object.create(null)\n\n// @param {pattern}\nconst makeRegex = (pattern, ignoreCase) => {\n let source = regexCache[pattern]\n\n if (!source) {\n source = REPLACERS.reduce(\n (prev, current) => prev.replace(current[0], current[1].bind(pattern)),\n pattern\n )\n regexCache[pattern] = source\n }\n\n return ignoreCase\n ? new RegExp(source, 'i')\n : new RegExp(source)\n}\n\nconst isString = subject => typeof subject === 'string'\n\n// > A blank line matches no files, so it can serve as a separator for readability.\nconst checkPattern = pattern => pattern\n && isString(pattern)\n && !REGEX_TEST_BLANK_LINE.test(pattern)\n\n // > A line starting with # serves as a comment.\n && pattern.indexOf('#') !== 0\n\nconst splitPattern = pattern => pattern.split(REGEX_SPLITALL_CRLF)\n\nclass IgnoreRule {\n constructor (\n origin,\n pattern,\n negative,\n regex\n ) {\n this.origin = origin\n this.pattern = pattern\n this.negative = negative\n this.regex = regex\n }\n}\n\nconst createRule = (pattern, ignoreCase) => {\n const origin = pattern\n let negative = false\n\n // > An optional prefix \"!\" which negates the pattern;\n if (pattern.indexOf('!') === 0) {\n negative = true\n pattern = pattern.substr(1)\n }\n\n pattern = pattern\n // > Put a backslash (\"\\\") in front of the first \"!\" for patterns that\n // > begin with a literal \"!\", for example, `\"\\!important!.txt\"`.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!')\n // > Put a backslash (\"\\\") in front of the first hash for patterns that\n // > begin with a hash.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#')\n\n const regex = makeRegex(pattern, ignoreCase)\n\n return new IgnoreRule(\n origin,\n pattern,\n negative,\n regex\n )\n}\n\nconst throwError = (message, Ctor) => {\n throw new Ctor(message)\n}\n\nconst checkPath = (path, originalPath, doThrow) => {\n if (!isString(path)) {\n return doThrow(\n `path must be a string, but got \\`${originalPath}\\``,\n TypeError\n )\n }\n\n // We don't know if we should ignore EMPTY, so throw\n if (!path) {\n return doThrow(`path must not be empty`, TypeError)\n }\n\n // Check if it is a relative path\n if (checkPath.isNotRelative(path)) {\n const r = '`path.relative()`d'\n return doThrow(\n `path should be a ${r} string, but got \"${originalPath}\"`,\n RangeError\n )\n }\n\n return true\n}\n\nconst isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path)\n\ncheckPath.isNotRelative = isNotRelative\ncheckPath.convert = p => p\n\nclass Ignore {\n constructor ({\n ignorecase = true,\n ignoreCase = ignorecase,\n allowRelativePaths = false\n } = {}) {\n define(this, KEY_IGNORE, true)\n\n this._rules = []\n this._ignoreCase = ignoreCase\n this._allowRelativePaths = allowRelativePaths\n this._initCache()\n }\n\n _initCache () {\n this._ignoreCache = Object.create(null)\n this._testCache = Object.create(null)\n }\n\n _addPattern (pattern) {\n // #32\n if (pattern && pattern[KEY_IGNORE]) {\n this._rules = this._rules.concat(pattern._rules)\n this._added = true\n return\n }\n\n if (checkPattern(pattern)) {\n const rule = createRule(pattern, this._ignoreCase)\n this._added = true\n this._rules.push(rule)\n }\n }\n\n // @param {Array | string | Ignore} pattern\n add (pattern) {\n this._added = false\n\n makeArray(\n isString(pattern)\n ? splitPattern(pattern)\n : pattern\n ).forEach(this._addPattern, this)\n\n // Some rules have just added to the ignore,\n // making the behavior changed.\n if (this._added) {\n this._initCache()\n }\n\n return this\n }\n\n // legacy\n addPattern (pattern) {\n return this.add(pattern)\n }\n\n // | ignored : unignored\n // negative | 0:0 | 0:1 | 1:0 | 1:1\n // -------- | ------- | ------- | ------- | --------\n // 0 | TEST | TEST | SKIP | X\n // 1 | TESTIF | SKIP | TEST | X\n\n // - SKIP: always skip\n // - TEST: always test\n // - TESTIF: only test if checkUnignored\n // - X: that never happen\n\n // @param {boolean} whether should check if the path is unignored,\n // setting `checkUnignored` to `false` could reduce additional\n // path matching.\n\n // @returns {TestResult} true if a file is ignored\n _testOne (path, checkUnignored) {\n let ignored = false\n let unignored = false\n\n this._rules.forEach(rule => {\n const {negative} = rule\n if (\n unignored === negative && ignored !== unignored\n || negative && !ignored && !unignored && !checkUnignored\n ) {\n return\n }\n\n const matched = rule.regex.test(path)\n\n if (matched) {\n ignored = !negative\n unignored = negative\n }\n })\n\n return {\n ignored,\n unignored\n }\n }\n\n // @returns {TestResult}\n _test (originalPath, cache, checkUnignored, slices) {\n const path = originalPath\n // Supports nullable path\n && checkPath.convert(originalPath)\n\n checkPath(\n path,\n originalPath,\n this._allowRelativePaths\n ? RETURN_FALSE\n : throwError\n )\n\n return this._t(path, cache, checkUnignored, slices)\n }\n\n _t (path, cache, checkUnignored, slices) {\n if (path in cache) {\n return cache[path]\n }\n\n if (!slices) {\n // path/to/a.js\n // ['path', 'to', 'a.js']\n slices = path.split(SLASH)\n }\n\n slices.pop()\n\n // If the path has no parent directory, just test it\n if (!slices.length) {\n return cache[path] = this._testOne(path, checkUnignored)\n }\n\n const parent = this._t(\n slices.join(SLASH) + SLASH,\n cache,\n checkUnignored,\n slices\n )\n\n // If the path contains a parent directory, check the parent first\n return cache[path] = parent.ignored\n // > It is not possible to re-include a file if a parent directory of\n // > that file is excluded.\n ? parent\n : this._testOne(path, checkUnignored)\n }\n\n ignores (path) {\n return this._test(path, this._ignoreCache, false).ignored\n }\n\n createFilter () {\n return path => !this.ignores(path)\n }\n\n filter (paths) {\n return makeArray(paths).filter(this.createFilter())\n }\n\n // @returns {TestResult}\n test (path) {\n return this._test(path, this._testCache, true)\n }\n}\n\nconst factory = options => new Ignore(options)\n\nconst isPathValid = path =>\n checkPath(path && checkPath.convert(path), path, RETURN_FALSE)\n\nfactory.isPathValid = isPathValid\n\n// Fixes typescript\nfactory.default = factory\n\nmodule.exports = factory\n\n// Windows\n// --------------------------------------------------------------\n/* istanbul ignore if */\nif (\n // Detect `process` so that it can run in browsers.\n typeof process !== 'undefined'\n && (\n process.env && process.env.IGNORE_TEST_WIN32\n || process.platform === 'win32'\n )\n) {\n /* eslint no-control-regex: \"off\" */\n const makePosix = str => /^\\\\\\\\\\?\\\\/.test(str)\n || /[\"<>|\\u0000-\\u001F]+/u.test(str)\n ? str\n : str.replace(/\\\\/g, '/')\n\n checkPath.convert = makePosix\n\n // 'C:\\\\foo' <- 'C:\\\\foo' has been converted to 'C:/'\n // 'd:\\\\foo'\n const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\\//i\n checkPath.isNotRelative = path =>\n REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path)\n || isNotRelative(path)\n}\n","/**\n * @preserve\n * JS Implementation of incremental MurmurHash3 (r150) (as of May 10, 2013)\n *\n * @author Jens Taylor\n * @see http://github.com/homebrewing/brauhaus-diff\n * @author Gary Court\n * @see http://github.com/garycourt/murmurhash-js\n * @author Austin Appleby\n * @see http://sites.google.com/site/murmurhash/\n */\n(function(){\n var cache;\n\n // Call this function without `new` to use the cached object (good for\n // single-threaded environments), or with `new` to create a new object.\n //\n // @param {string} key A UTF-16 or ASCII string\n // @param {number} seed An optional positive integer\n // @return {object} A MurmurHash3 object for incremental hashing\n function MurmurHash3(key, seed) {\n var m = this instanceof MurmurHash3 ? this : cache;\n m.reset(seed)\n if (typeof key === 'string' && key.length > 0) {\n m.hash(key);\n }\n\n if (m !== this) {\n return m;\n }\n };\n\n // Incrementally add a string to this hash\n //\n // @param {string} key A UTF-16 or ASCII string\n // @return {object} this\n MurmurHash3.prototype.hash = function(key) {\n var h1, k1, i, top, len;\n\n len = key.length;\n this.len += len;\n\n k1 = this.k1;\n i = 0;\n switch (this.rem) {\n case 0: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) : 0;\n case 1: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 8 : 0;\n case 2: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 16 : 0;\n case 3:\n k1 ^= len > i ? (key.charCodeAt(i) & 0xff) << 24 : 0;\n k1 ^= len > i ? (key.charCodeAt(i++) & 0xff00) >> 8 : 0;\n }\n\n this.rem = (len + this.rem) & 3; // & 3 is same as % 4\n len -= this.rem;\n if (len > 0) {\n h1 = this.h1;\n while (1) {\n k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff;\n\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1 = (h1 * 5 + 0xe6546b64) & 0xffffffff;\n\n if (i >= len) {\n break;\n }\n\n k1 = ((key.charCodeAt(i++) & 0xffff)) ^\n ((key.charCodeAt(i++) & 0xffff) << 8) ^\n ((key.charCodeAt(i++) & 0xffff) << 16);\n top = key.charCodeAt(i++);\n k1 ^= ((top & 0xff) << 24) ^\n ((top & 0xff00) >> 8);\n }\n\n k1 = 0;\n switch (this.rem) {\n case 3: k1 ^= (key.charCodeAt(i + 2) & 0xffff) << 16;\n case 2: k1 ^= (key.charCodeAt(i + 1) & 0xffff) << 8;\n case 1: k1 ^= (key.charCodeAt(i) & 0xffff);\n }\n\n this.h1 = h1;\n }\n\n this.k1 = k1;\n return this;\n };\n\n // Get the result of this hash\n //\n // @return {number} The 32-bit hash\n MurmurHash3.prototype.result = function() {\n var k1, h1;\n \n k1 = this.k1;\n h1 = this.h1;\n\n if (k1 > 0) {\n k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff;\n h1 ^= k1;\n }\n\n h1 ^= this.len;\n\n h1 ^= h1 >>> 16;\n h1 = (h1 * 0xca6b + (h1 & 0xffff) * 0x85eb0000) & 0xffffffff;\n h1 ^= h1 >>> 13;\n h1 = (h1 * 0xae35 + (h1 & 0xffff) * 0xc2b20000) & 0xffffffff;\n h1 ^= h1 >>> 16;\n\n return h1 >>> 0;\n };\n\n // Reset the hash object for reuse\n //\n // @param {number} seed An optional positive integer\n MurmurHash3.prototype.reset = function(seed) {\n this.h1 = typeof seed === 'number' ? seed : 0;\n this.rem = this.k1 = this.len = 0;\n return this;\n };\n\n // A cached object to use. This can be safely used if you're in a single-\n // threaded environment, otherwise you need to create new hashes to use.\n cache = new MurmurHash3();\n\n if (typeof(module) != 'undefined') {\n module.exports = MurmurHash3;\n } else {\n this.MurmurHash3 = MurmurHash3;\n }\n}());\n","'use strict';\n\nmodule.exports = (string, count = 1, options) => {\n\toptions = {\n\t\tindent: ' ',\n\t\tincludeEmptyLines: false,\n\t\t...options\n\t};\n\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof string}\\``\n\t\t);\n\t}\n\n\tif (typeof count !== 'number') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof count}\\``\n\t\t);\n\t}\n\n\tif (typeof options.indent !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof options.indent}\\``\n\t\t);\n\t}\n\n\tif (count === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = options.includeEmptyLines ? /^/gm : /^(?!\\s*$)/gm;\n\n\treturn string.replace(regex, options.indent.repeat(count));\n};\n","var wrappy = require('wrappy')\nvar reqs = Object.create(null)\nvar once = require('once')\n\nmodule.exports = wrappy(inflight)\n\nfunction inflight (key, cb) {\n if (reqs[key]) {\n reqs[key].push(cb)\n return null\n } else {\n reqs[key] = [cb]\n return makeres(key)\n }\n}\n\nfunction makeres (key) {\n return once(function RES () {\n var cbs = reqs[key]\n var len = cbs.length\n var args = slice(arguments)\n\n // XXX It's somewhat ambiguous whether a new callback added in this\n // pass should be queued for later execution if something in the\n // list of callbacks throws, or if it should just be discarded.\n // However, it's such an edge case that it hardly matters, and either\n // choice is likely as surprising as the other.\n // As it happens, we do go ahead and schedule it for later execution.\n try {\n for (var i = 0; i < len; i++) {\n cbs[i].apply(null, args)\n }\n } finally {\n if (cbs.length > len) {\n // added more in the interim.\n // de-zalgo, just in case, but don't call again.\n cbs.splice(0, len)\n process.nextTick(function () {\n RES.apply(null, args)\n })\n } else {\n delete reqs[key]\n }\n }\n })\n}\n\nfunction slice (args) {\n var length = args.length\n var array = []\n\n for (var i = 0; i < length; i++) array[i] = args[i]\n return array\n}\n","try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (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 }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nmodule.exports = function isArrayish(obj) {\n\tif (!obj) {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && obj.splice instanceof Function);\n};\n","'use strict';\n\nvar hasOwn = require('hasown');\n\nfunction specifierIncluded(current, specifier) {\n\tvar nodeParts = current.split('.');\n\tvar parts = specifier.split(' ');\n\tvar op = parts.length > 1 ? parts[0] : '=';\n\tvar versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.');\n\n\tfor (var i = 0; i < 3; ++i) {\n\t\tvar cur = parseInt(nodeParts[i] || 0, 10);\n\t\tvar ver = parseInt(versionParts[i] || 0, 10);\n\t\tif (cur === ver) {\n\t\t\tcontinue; // eslint-disable-line no-restricted-syntax, no-continue\n\t\t}\n\t\tif (op === '<') {\n\t\t\treturn cur < ver;\n\t\t}\n\t\tif (op === '>=') {\n\t\t\treturn cur >= ver;\n\t\t}\n\t\treturn false;\n\t}\n\treturn op === '>=';\n}\n\nfunction matchesRange(current, range) {\n\tvar specifiers = range.split(/ ?&& ?/);\n\tif (specifiers.length === 0) {\n\t\treturn false;\n\t}\n\tfor (var i = 0; i < specifiers.length; ++i) {\n\t\tif (!specifierIncluded(current, specifiers[i])) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nfunction versionIncluded(nodeVersion, specifierValue) {\n\tif (typeof specifierValue === 'boolean') {\n\t\treturn specifierValue;\n\t}\n\n\tvar current = typeof nodeVersion === 'undefined'\n\t\t? process.versions && process.versions.node\n\t\t: nodeVersion;\n\n\tif (typeof current !== 'string') {\n\t\tthrow new TypeError(typeof nodeVersion === 'undefined' ? 'Unable to determine current node version' : 'If provided, a valid node version is required');\n\t}\n\n\tif (specifierValue && typeof specifierValue === 'object') {\n\t\tfor (var i = 0; i < specifierValue.length; ++i) {\n\t\t\tif (matchesRange(current, specifierValue[i])) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\treturn matchesRange(current, specifierValue);\n}\n\nvar data = require('./core.json');\n\nmodule.exports = function isCore(x, nodeVersion) {\n\treturn hasOwn(data, x) && versionIncluded(nodeVersion, data[x]);\n};\n","/*!\n * is-extglob \n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n var match;\n while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n if (match[2]) return true;\n str = str.slice(match.index + match[0].length);\n }\n\n return false;\n};\n","/*!\n * is-glob \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\nvar chars = { '{': '}', '(': ')', '[': ']'};\nvar strictCheck = function(str) {\n if (str[0] === '!') {\n return true;\n }\n var index = 0;\n var pipeIndex = -2;\n var closeSquareIndex = -2;\n var closeCurlyIndex = -2;\n var closeParenIndex = -2;\n var backSlashIndex = -2;\n while (index < str.length) {\n if (str[index] === '*') {\n return true;\n }\n\n if (str[index + 1] === '?' && /[\\].+)]/.test(str[index])) {\n return true;\n }\n\n if (closeSquareIndex !== -1 && str[index] === '[' && str[index + 1] !== ']') {\n if (closeSquareIndex < index) {\n closeSquareIndex = str.indexOf(']', index);\n }\n if (closeSquareIndex > index) {\n if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n return true;\n }\n backSlashIndex = str.indexOf('\\\\', index);\n if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n return true;\n }\n }\n }\n\n if (closeCurlyIndex !== -1 && str[index] === '{' && str[index + 1] !== '}') {\n closeCurlyIndex = str.indexOf('}', index);\n if (closeCurlyIndex > index) {\n backSlashIndex = str.indexOf('\\\\', index);\n if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) {\n return true;\n }\n }\n }\n\n if (closeParenIndex !== -1 && str[index] === '(' && str[index + 1] === '?' && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ')') {\n closeParenIndex = str.indexOf(')', index);\n if (closeParenIndex > index) {\n backSlashIndex = str.indexOf('\\\\', index);\n if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n return true;\n }\n }\n }\n\n if (pipeIndex !== -1 && str[index] === '(' && str[index + 1] !== '|') {\n if (pipeIndex < index) {\n pipeIndex = str.indexOf('|', index);\n }\n if (pipeIndex !== -1 && str[pipeIndex + 1] !== ')') {\n closeParenIndex = str.indexOf(')', pipeIndex);\n if (closeParenIndex > pipeIndex) {\n backSlashIndex = str.indexOf('\\\\', pipeIndex);\n if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n return true;\n }\n }\n }\n }\n\n if (str[index] === '\\\\') {\n var open = str[index + 1];\n index += 2;\n var close = chars[open];\n\n if (close) {\n var n = str.indexOf(close, index);\n if (n !== -1) {\n index = n + 1;\n }\n }\n\n if (str[index] === '!') {\n return true;\n }\n } else {\n index++;\n }\n }\n return false;\n};\n\nvar relaxedCheck = function(str) {\n if (str[0] === '!') {\n return true;\n }\n var index = 0;\n while (index < str.length) {\n if (/[*?{}()[\\]]/.test(str[index])) {\n return true;\n }\n\n if (str[index] === '\\\\') {\n var open = str[index + 1];\n index += 2;\n var close = chars[open];\n\n if (close) {\n var n = str.indexOf(close, index);\n if (n !== -1) {\n index = n + 1;\n }\n }\n\n if (str[index] === '!') {\n return true;\n }\n } else {\n index++;\n }\n }\n return false;\n};\n\nmodule.exports = function isGlob(str, options) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n if (isExtglob(str)) {\n return true;\n }\n\n var check = strictCheck;\n\n // optionally relax check\n if (options && options.strict === false) {\n check = relaxedCheck;\n }\n\n return check(str);\n};\n","'use strict';\n\nmodule.exports = ({stream = process.stdout} = {}) => {\n\treturn Boolean(\n\t\tstream && stream.isTTY &&\n\t\tprocess.env.TERM !== 'dumb' &&\n\t\t!('CI' in process.env)\n\t);\n};\n","/*!\n * is-number \n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n if (typeof num === 'number') {\n return num - num === 0;\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n }\n return false;\n};\n","'use strict';\nconst path = require('path');\n\nmodule.exports = path_ => {\n\tlet cwd = process.cwd();\n\n\tpath_ = path.resolve(path_);\n\n\tif (process.platform === 'win32') {\n\t\tcwd = cwd.toLowerCase();\n\t\tpath_ = path_.toLowerCase();\n\t}\n\n\treturn path_ === cwd;\n};\n","'use strict';\nconst path = require('path');\n\nmodule.exports = (childPath, parentPath) => {\n\tconst relation = path.relative(parentPath, childPath);\n\treturn Boolean(\n\t\trelation &&\n\t\trelation !== '..' &&\n\t\t!relation.startsWith(`..${path.sep}`) &&\n\t\trelation !== path.resolve(childPath)\n\t);\n};\n","'use strict';\nvar toString = Object.prototype.toString;\n\nmodule.exports = function (x) {\n\tvar prototype;\n\treturn toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n};\n","'use strict';\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function';\n\nmodule.exports = isStream;\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell\n// License: MIT. (See LICENSE.)\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n})\n\n// This regex comes from regex.coffee, and is inserted here by generate-index.js\n// (run `npm run build`).\nexports.default = /((['\"])(?:(?!\\2|\\\\).|\\\\(?:\\r\\n|[\\s\\S]))*(\\2)?|`(?:[^`\\\\$]|\\\\[\\s\\S]|\\$(?!\\{)|\\$\\{(?:[^{}]|\\{[^}]*\\}?)*\\}?)*(`)?)|(\\/\\/.*)|(\\/\\*(?:[^*]|\\*(?!\\/))*(\\*\\/)?)|(\\/(?!\\*)(?:\\[(?:(?![\\]\\\\]).|\\\\.)*\\]|(?![\\/\\]\\\\]).|\\\\.)+\\/(?:(?!\\s*(?:\\b|[\\u0080-\\uFFFF$\\\\'\"~({]|[+\\-!](?!=)|\\.?\\d))|[gmiyus]{1,6}\\b(?![\\u0080-\\uFFFF$\\\\]|\\s*(?:[+\\-*%&|^<>!=?({]|\\/(?![\\/*])))))|(0[xX][\\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?)|((?!\\d)(?:(?!\\s)[$\\w\\u0080-\\uFFFF]|\\\\u[\\da-fA-F]{4}|\\\\u\\{[\\da-fA-F]+\\})+)|(--|\\+\\+|&&|\\|\\||=>|\\.{3}|(?:[+\\-\\/%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\\](){}])|(\\s+)|(^$|[\\s\\S])/g\n\nexports.matchToToken = function(match) {\n var token = {type: \"invalid\", value: match[0], closed: undefined}\n if (match[ 1]) token.type = \"string\" , token.closed = !!(match[3] || match[4])\n else if (match[ 5]) token.type = \"comment\"\n else if (match[ 6]) token.type = \"comment\", token.closed = !!match[7]\n else if (match[ 8]) token.type = \"regex\"\n else if (match[ 9]) token.type = \"number\"\n else if (match[10]) token.type = \"name\"\n else if (match[11]) token.type = \"punctuator\"\n else if (match[12]) token.type = \"whitespace\"\n return token\n}\n","'use strict'\n\nconst hexify = char => {\n const h = char.charCodeAt(0).toString(16).toUpperCase()\n return '0x' + (h.length % 2 ? '0' : '') + h\n}\n\nconst parseError = (e, txt, context) => {\n if (!txt) {\n return {\n message: e.message + ' while parsing empty string',\n position: 0,\n }\n }\n const badToken = e.message.match(/^Unexpected token (.) .*position\\s+(\\d+)/i)\n const errIdx = badToken ? +badToken[2]\n : e.message.match(/^Unexpected end of JSON.*/i) ? txt.length - 1\n : null\n\n const msg = badToken ? e.message.replace(/^Unexpected token ./, `Unexpected token ${\n JSON.stringify(badToken[1])\n } (${hexify(badToken[1])})`)\n : e.message\n\n if (errIdx !== null && errIdx !== undefined) {\n const start = errIdx <= context ? 0\n : errIdx - context\n\n const end = errIdx + context >= txt.length ? txt.length\n : errIdx + context\n\n const slice = (start === 0 ? '' : '...') +\n txt.slice(start, end) +\n (end === txt.length ? '' : '...')\n\n const near = txt === slice ? '' : 'near '\n\n return {\n message: msg + ` while parsing ${near}${JSON.stringify(slice)}`,\n position: errIdx,\n }\n } else {\n return {\n message: msg + ` while parsing '${txt.slice(0, context * 2)}'`,\n position: 0,\n }\n }\n}\n\nclass JSONParseError extends SyntaxError {\n constructor (er, txt, context, caller) {\n context = context || 20\n const metadata = parseError(er, txt, context)\n super(metadata.message)\n Object.assign(this, metadata)\n this.code = 'EJSONPARSE'\n this.systemError = er\n Error.captureStackTrace(this, caller || this.constructor)\n }\n get name () { return this.constructor.name }\n set name (n) {}\n get [Symbol.toStringTag] () { return this.constructor.name }\n}\n\nconst kIndent = Symbol.for('indent')\nconst kNewline = Symbol.for('newline')\n// only respect indentation if we got a line break, otherwise squash it\n// things other than objects and arrays aren't indented, so ignore those\n// Important: in both of these regexps, the $1 capture group is the newline\n// or undefined, and the $2 capture group is the indent, or undefined.\nconst formatRE = /^\\s*[{\\[]((?:\\r?\\n)+)([\\s\\t]*)/\nconst emptyRE = /^(?:\\{\\}|\\[\\])((?:\\r?\\n)+)?$/\n\nconst parseJson = (txt, reviver, context) => {\n const parseText = stripBOM(txt)\n context = context || 20\n try {\n // get the indentation so that we can save it back nicely\n // if the file starts with {\" then we have an indent of '', ie, none\n // otherwise, pick the indentation of the next line after the first \\n\n // If the pattern doesn't match, then it means no indentation.\n // JSON.stringify ignores symbols, so this is reasonably safe.\n // if the string is '{}' or '[]', then use the default 2-space indent.\n const [, newline = '\\n', indent = ' '] = parseText.match(emptyRE) ||\n parseText.match(formatRE) ||\n [, '', '']\n\n const result = JSON.parse(parseText, reviver)\n if (result && typeof result === 'object') {\n result[kNewline] = newline\n result[kIndent] = indent\n }\n return result\n } catch (e) {\n if (typeof txt !== 'string' && !Buffer.isBuffer(txt)) {\n const isEmptyArray = Array.isArray(txt) && txt.length === 0\n throw Object.assign(new TypeError(\n `Cannot parse ${isEmptyArray ? 'an empty array' : String(txt)}`\n ), {\n code: 'EJSONPARSE',\n systemError: e,\n })\n }\n\n throw new JSONParseError(e, parseText, context, parseJson)\n }\n}\n\n// Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n// because the buffer-to-string conversion in `fs.readFileSync()`\n// translates it to FEFF, the UTF-16 BOM.\nconst stripBOM = txt => String(txt).replace(/^\\uFEFF/, '')\n\nmodule.exports = parseJson\nparseJson.JSONParseError = JSONParseError\n\nparseJson.noExceptions = (txt, reviver) => {\n try {\n return JSON.parse(stripBOM(txt), reviver)\n } catch (e) {}\n}\n","'use strict';\n\nconst blacklist = [\n\t// # All\n\t'^npm-debug\\\\.log$', // Error log for npm\n\t'^\\\\..*\\\\.swp$', // Swap file for vim state\n\n\t// # macOS\n\t'^\\\\.DS_Store$', // Stores custom folder attributes\n\t'^\\\\.AppleDouble$', // Stores additional file resources\n\t'^\\\\.LSOverride$', // Contains the absolute path to the app to be used\n\t'^Icon\\\\r$', // Custom Finder icon: http://superuser.com/questions/298785/icon-file-on-os-x-desktop\n\t'^\\\\._.*', // Thumbnail\n\t'^\\\\.Spotlight-V100(?:$|\\\\/)', // Directory that might appear on external disk\n\t'\\\\.Trashes', // File that might appear on external disk\n\t'^__MACOSX$', // Resource fork\n\n\t// # Linux\n\t'~$', // Backup file\n\n\t// # Windows\n\t'^Thumbs\\\\.db$', // Image file cache\n\t'^ehthumbs\\\\.db$', // Folder config file\n\t'^Desktop\\\\.ini$', // Stores custom folder attributes\n\t'@eaDir$' // Synology Diskstation \"hidden\" folder where the server stores thumbnails\n];\n\nexports.re = () => {\n\tthrow new Error('`junk.re` was renamed to `junk.regex`');\n};\n\nexports.regex = new RegExp(blacklist.join('|'));\n\nexports.is = filename => exports.regex.test(filename);\n\nexports.not = filename => !exports.is(filename);\n\n// TODO: Remove this for the next major release\nexports.default = module.exports;\n","'use strict';\nconst path = require('path');\nconst {promisify} = require('util');\nconst fs = require('graceful-fs');\nconst stripBom = require('strip-bom');\nconst parseJson = require('parse-json');\n\nconst parse = (data, filePath, options = {}) => {\n\tdata = stripBom(data);\n\n\tif (typeof options.beforeParse === 'function') {\n\t\tdata = options.beforeParse(data);\n\t}\n\n\treturn parseJson(data, options.reviver, path.relative(process.cwd(), filePath));\n};\n\nmodule.exports = async (filePath, options) => parse(await promisify(fs.readFile)(filePath, 'utf8'), filePath, options);\nmodule.exports.sync = (filePath, options) => parse(fs.readFileSync(filePath, 'utf8'), filePath, options);\n","'use strict';\nconst fs = require('fs');\nconst path = require('path');\nconst {promisify} = require('util');\nconst semver = require('semver');\n\nconst useNativeRecursiveOption = semver.satisfies(process.version, '>=10.12.0');\n\n// https://github.com/nodejs/node/issues/8987\n// https://github.com/libuv/libuv/pull/1088\nconst checkPath = pth => {\n\tif (process.platform === 'win32') {\n\t\tconst pathHasInvalidWinCharacters = /[<>:\"|?*]/.test(pth.replace(path.parse(pth).root, ''));\n\n\t\tif (pathHasInvalidWinCharacters) {\n\t\t\tconst error = new Error(`Path contains invalid characters: ${pth}`);\n\t\t\terror.code = 'EINVAL';\n\t\t\tthrow error;\n\t\t}\n\t}\n};\n\nconst processOptions = options => {\n\t// https://github.com/sindresorhus/make-dir/issues/18\n\tconst defaults = {\n\t\tmode: 0o777,\n\t\tfs\n\t};\n\n\treturn {\n\t\t...defaults,\n\t\t...options\n\t};\n};\n\nconst permissionError = pth => {\n\t// This replicates the exception of `fs.mkdir` with native the\n\t// `recusive` option when run on an invalid drive under Windows.\n\tconst error = new Error(`operation not permitted, mkdir '${pth}'`);\n\terror.code = 'EPERM';\n\terror.errno = -4048;\n\terror.path = pth;\n\terror.syscall = 'mkdir';\n\treturn error;\n};\n\nconst makeDir = async (input, options) => {\n\tcheckPath(input);\n\toptions = processOptions(options);\n\n\tconst mkdir = promisify(options.fs.mkdir);\n\tconst stat = promisify(options.fs.stat);\n\n\tif (useNativeRecursiveOption && options.fs.mkdir === fs.mkdir) {\n\t\tconst pth = path.resolve(input);\n\n\t\tawait mkdir(pth, {\n\t\t\tmode: options.mode,\n\t\t\trecursive: true\n\t\t});\n\n\t\treturn pth;\n\t}\n\n\tconst make = async pth => {\n\t\ttry {\n\t\t\tawait mkdir(pth, options.mode);\n\n\t\t\treturn pth;\n\t\t} catch (error) {\n\t\t\tif (error.code === 'EPERM') {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (error.code === 'ENOENT') {\n\t\t\t\tif (path.dirname(pth) === pth) {\n\t\t\t\t\tthrow permissionError(pth);\n\t\t\t\t}\n\n\t\t\t\tif (error.message.includes('null bytes')) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\tawait make(path.dirname(pth));\n\n\t\t\t\treturn make(pth);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst stats = await stat(pth);\n\t\t\t\tif (!stats.isDirectory()) {\n\t\t\t\t\tthrow new Error('The path is not a directory');\n\t\t\t\t}\n\t\t\t} catch (_) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn pth;\n\t\t}\n\t};\n\n\treturn make(path.resolve(input));\n};\n\nmodule.exports = makeDir;\n\nmodule.exports.sync = (input, options) => {\n\tcheckPath(input);\n\toptions = processOptions(options);\n\n\tif (useNativeRecursiveOption && options.fs.mkdirSync === fs.mkdirSync) {\n\t\tconst pth = path.resolve(input);\n\n\t\tfs.mkdirSync(pth, {\n\t\t\tmode: options.mode,\n\t\t\trecursive: true\n\t\t});\n\n\t\treturn pth;\n\t}\n\n\tconst make = pth => {\n\t\ttry {\n\t\t\toptions.fs.mkdirSync(pth, options.mode);\n\t\t} catch (error) {\n\t\t\tif (error.code === 'EPERM') {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (error.code === 'ENOENT') {\n\t\t\t\tif (path.dirname(pth) === pth) {\n\t\t\t\t\tthrow permissionError(pth);\n\t\t\t\t}\n\n\t\t\t\tif (error.message.includes('null bytes')) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\tmake(path.dirname(pth));\n\t\t\t\treturn make(pth);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tif (!options.fs.statSync(pth).isDirectory()) {\n\t\t\t\t\tthrow new Error('The path is not a directory');\n\t\t\t\t}\n\t\t\t} catch (_) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\treturn pth;\n\t};\n\n\treturn make(path.resolve(input));\n};\n","'use strict';\n\nconst { PassThrough } = require('stream');\n\nmodule.exports = function (/*streams...*/) {\n var sources = []\n var output = new PassThrough({objectMode: true})\n\n output.setMaxListeners(0)\n\n output.add = add\n output.isEmpty = isEmpty\n\n output.on('unpipe', remove)\n\n Array.prototype.slice.call(arguments).forEach(add)\n\n return output\n\n function add (source) {\n if (Array.isArray(source)) {\n source.forEach(add)\n return this\n }\n\n sources.push(source);\n source.once('end', remove.bind(null, source))\n source.once('error', output.emit.bind(output, 'error'))\n source.pipe(output, {end: false})\n return this\n }\n\n function isEmpty () {\n return sources.length == 0;\n }\n\n function remove (source) {\n sources = sources.filter(function (it) { return it !== source })\n if (!sources.length && output.readable) { output.end() }\n }\n}\n","'use strict'\n/*\n * merge2\n * https://github.com/teambition/merge2\n *\n * Copyright (c) 2014-2020 Teambition\n * Licensed under the MIT license.\n */\nconst Stream = require('stream')\nconst PassThrough = Stream.PassThrough\nconst slice = Array.prototype.slice\n\nmodule.exports = merge2\n\nfunction merge2 () {\n const streamsQueue = []\n const args = slice.call(arguments)\n let merging = false\n let options = args[args.length - 1]\n\n if (options && !Array.isArray(options) && options.pipe == null) {\n args.pop()\n } else {\n options = {}\n }\n\n const doEnd = options.end !== false\n const doPipeError = options.pipeError === true\n if (options.objectMode == null) {\n options.objectMode = true\n }\n if (options.highWaterMark == null) {\n options.highWaterMark = 64 * 1024\n }\n const mergedStream = PassThrough(options)\n\n function addStream () {\n for (let i = 0, len = arguments.length; i < len; i++) {\n streamsQueue.push(pauseStreams(arguments[i], options))\n }\n mergeStream()\n return this\n }\n\n function mergeStream () {\n if (merging) {\n return\n }\n merging = true\n\n let streams = streamsQueue.shift()\n if (!streams) {\n process.nextTick(endStream)\n return\n }\n if (!Array.isArray(streams)) {\n streams = [streams]\n }\n\n let pipesCount = streams.length + 1\n\n function next () {\n if (--pipesCount > 0) {\n return\n }\n merging = false\n mergeStream()\n }\n\n function pipe (stream) {\n function onend () {\n stream.removeListener('merge2UnpipeEnd', onend)\n stream.removeListener('end', onend)\n if (doPipeError) {\n stream.removeListener('error', onerror)\n }\n next()\n }\n function onerror (err) {\n mergedStream.emit('error', err)\n }\n // skip ended stream\n if (stream._readableState.endEmitted) {\n return next()\n }\n\n stream.on('merge2UnpipeEnd', onend)\n stream.on('end', onend)\n\n if (doPipeError) {\n stream.on('error', onerror)\n }\n\n stream.pipe(mergedStream, { end: false })\n // compatible for old stream\n stream.resume()\n }\n\n for (let i = 0; i < streams.length; i++) {\n pipe(streams[i])\n }\n\n next()\n }\n\n function endStream () {\n merging = false\n // emit 'queueDrain' when all streams merged.\n mergedStream.emit('queueDrain')\n if (doEnd) {\n mergedStream.end()\n }\n }\n\n mergedStream.setMaxListeners(0)\n mergedStream.add = addStream\n mergedStream.on('unpipe', function (stream) {\n stream.emit('merge2UnpipeEnd')\n })\n\n if (args.length) {\n addStream.apply(null, args)\n }\n return mergedStream\n}\n\n// check and pause streams for pipe.\nfunction pauseStreams (streams, options) {\n if (!Array.isArray(streams)) {\n // Backwards-compat with old-style streams\n if (!streams._readableState && streams.pipe) {\n streams = streams.pipe(PassThrough(options))\n }\n if (!streams._readableState || !streams.pause || !streams.pipe) {\n throw new Error('Only readable stream can be merged.')\n }\n streams.pause()\n } else {\n for (let i = 0, len = streams.length; i < len; i++) {\n streams[i] = pauseStreams(streams[i], options)\n }\n }\n return streams\n}\n","'use strict';\n\nconst util = require('util');\nconst braces = require('braces');\nconst picomatch = require('picomatch');\nconst utils = require('picomatch/lib/utils');\n\nconst isEmptyString = v => v === '' || v === './';\nconst hasBraces = v => {\n const index = v.indexOf('{');\n return index > -1 && v.indexOf('}', index) > -1;\n};\n\n/**\n * Returns an array of strings that match one or more glob patterns.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {String|Array} `list` List of strings to match.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options)\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nconst micromatch = (list, patterns, options) => {\n patterns = [].concat(patterns);\n list = [].concat(list);\n\n let omit = new Set();\n let keep = new Set();\n let items = new Set();\n let negatives = 0;\n\n let onResult = state => {\n items.add(state.output);\n if (options && options.onResult) {\n options.onResult(state);\n }\n };\n\n for (let i = 0; i < patterns.length; i++) {\n let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);\n let negated = isMatch.state.negated || isMatch.state.negatedExtglob;\n if (negated) negatives++;\n\n for (let item of list) {\n let matched = isMatch(item, true);\n\n let match = negated ? !matched.isMatch : matched.isMatch;\n if (!match) continue;\n\n if (negated) {\n omit.add(matched.output);\n } else {\n omit.delete(matched.output);\n keep.add(matched.output);\n }\n }\n }\n\n let result = negatives === patterns.length ? [...items] : [...keep];\n let matches = result.filter(item => !omit.has(item));\n\n if (options && matches.length === 0) {\n if (options.failglob === true) {\n throw new Error(`No matches found for \"${patterns.join(', ')}\"`);\n }\n\n if (options.nonull === true || options.nullglob === true) {\n return options.unescape ? patterns.map(p => p.replace(/\\\\/g, '')) : patterns;\n }\n }\n\n return matches;\n};\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.match = micromatch;\n\n/**\n * Returns a matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matcher(pattern[, options]);\n *\n * const isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options`\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = (pattern, options) => picomatch(pattern, options);\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.isMatch(string, patterns[, options]);\n *\n * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(mm.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `[options]` See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.any = micromatch.isMatch;\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.not(list, patterns[, options]);\n *\n * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nmicromatch.not = (list, patterns, options = {}) => {\n patterns = [].concat(patterns).map(String);\n let result = new Set();\n let items = [];\n\n let onResult = state => {\n if (options.onResult) options.onResult(state);\n items.push(state.output);\n };\n\n let matches = new Set(micromatch(list, patterns, { ...options, onResult }));\n\n for (let item of items) {\n if (!matches.has(item)) {\n result.add(item);\n }\n }\n return [...result];\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var mm = require('micromatch');\n * // mm.contains(string, pattern[, options]);\n *\n * console.log(mm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(mm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any of the patterns matches any part of `str`.\n * @api public\n */\n\nmicromatch.contains = (str, pattern, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n if (Array.isArray(pattern)) {\n return pattern.some(p => micromatch.contains(str, p, options));\n }\n\n if (typeof pattern === 'string') {\n if (isEmptyString(str) || isEmptyString(pattern)) {\n return false;\n }\n\n if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {\n return true;\n }\n }\n\n return micromatch.isMatch(str, pattern, { ...options, contains: true });\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matchKeys(object, patterns[, options]);\n *\n * const obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(mm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nmicromatch.matchKeys = (obj, patterns, options) => {\n if (!utils.isObject(obj)) {\n throw new TypeError('Expected the first argument to be an object');\n }\n let keys = micromatch(Object.keys(obj), patterns, options);\n let res = {};\n for (let key of keys) res[key] = obj[key];\n return res;\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.some(list, patterns[, options]);\n *\n * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list`\n * @api public\n */\n\nmicromatch.some = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (items.some(item => isMatch(item))) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns true if every string in the given `list` matches\n * any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.every(list, patterns[, options]);\n *\n * console.log(mm.every('foo.js', ['foo.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list`\n * @api public\n */\n\nmicromatch.every = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (!items.every(item => isMatch(item))) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.all(string, patterns[, options]);\n *\n * console.log(mm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(mm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.all = (str, patterns, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n return [].concat(patterns).every(p => picomatch(p, options)(str));\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.capture(pattern, string[, options]);\n *\n * console.log(mm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(mm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `glob` Glob pattern to use for matching.\n * @param {String} `input` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = (glob, input, options) => {\n let posix = utils.isWindows(options);\n let regex = picomatch.makeRe(String(glob), { ...options, capture: true });\n let match = regex.exec(posix ? utils.toPosixSlashes(input) : input);\n\n if (match) {\n return match.slice(1).map(v => v === void 0 ? '' : v);\n }\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.makeRe(pattern[, options]);\n *\n * console.log(mm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = (...args) => picomatch.makeRe(...args);\n\n/**\n * Scan a glob pattern to separate the pattern into segments. Used\n * by the [split](#split) method.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.scan(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\nmicromatch.scan = (...args) => picomatch.scan(...args);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.parse(pattern[, options]);\n * ```\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as regex source string.\n * @api public\n */\n\nmicromatch.parse = (patterns, options) => {\n let res = [];\n for (let pattern of [].concat(patterns || [])) {\n for (let str of braces(String(pattern), options)) {\n res.push(picomatch.parse(str, options));\n }\n }\n return res;\n};\n\n/**\n * Process the given brace `pattern`.\n *\n * ```js\n * const { braces } = require('micromatch');\n * console.log(braces('foo/{a,b,c}/bar'));\n * //=> [ 'foo/(a|b|c)/bar' ]\n *\n * console.log(braces('foo/{a,b,c}/bar', { expand: true }));\n * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]\n * ```\n * @param {String} `pattern` String with brace pattern to process.\n * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.\n * @return {Array}\n * @api public\n */\n\nmicromatch.braces = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n if ((options && options.nobrace === true) || !hasBraces(pattern)) {\n return [pattern];\n }\n return braces(pattern, options);\n};\n\n/**\n * Expand braces\n */\n\nmicromatch.braceExpand = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n return micromatch.braces(pattern, { ...options, expand: true });\n};\n\n/**\n * Expose micromatch\n */\n\n// exposed for tests\nmicromatch.hasBraces = hasBraces;\nmodule.exports = micromatch;\n","'use strict';\n\nconst mimicFn = (to, from) => {\n\tfor (const prop of Reflect.ownKeys(from)) {\n\t\tObject.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop));\n\t}\n\n\treturn to;\n};\n\nmodule.exports = mimicFn;\n// TODO: Remove this for the next major release\nmodule.exports.default = mimicFn;\n","module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = (function () { try { return require('path') } catch (e) {}}()) || {\n sep: '/'\n}\nminimatch.sep = path.sep\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n b = b || {}\n var t = {}\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch\n }\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n m.Minimatch.defaults = function defaults (options) {\n return orig.defaults(ext(def, options)).Minimatch\n }\n\n m.filter = function filter (pattern, options) {\n return orig.filter(pattern, ext(def, options))\n }\n\n m.defaults = function defaults (options) {\n return orig.defaults(ext(def, options))\n }\n\n m.makeRe = function makeRe (pattern, options) {\n return orig.makeRe(pattern, ext(def, options))\n }\n\n m.braceExpand = function braceExpand (pattern, options) {\n return orig.braceExpand(pattern, ext(def, options))\n }\n\n m.match = function (list, pattern, options) {\n return orig.match(list, pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n assertValidPattern(pattern)\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n assertValidPattern(pattern)\n\n if (!options) options = {}\n\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (!options.allowWindowsEscape && path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.maxGlobstarRecursion = options.maxGlobstarRecursion !== undefined\n ? options.maxGlobstarRecursion : 200\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n this.partial = !!options.partial\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) }\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n assertValidPattern(pattern)\n\n // Thanks to Yeting Li for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\nvar MAX_PATTERN_LENGTH = 1024 * 64\nvar assertValidPattern = function (pattern) {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern')\n }\n\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long')\n }\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n assertValidPattern(pattern)\n\n var options = this.options\n\n // shortcuts\n if (pattern === '**') {\n if (!options.noglobstar)\n return GLOBSTAR\n else\n pattern = '*'\n }\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n /* istanbul ignore next */\n case '/': {\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n }\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // coalesce consecutive non-globstar * characters\n if (c === '*' && stateChar === '*') continue\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '[': case '.': case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) /* istanbul ignore next - should be impossible */ {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) /* istanbul ignore next - should be impossible */ {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = function match (f, partial) {\n if (typeof partial === 'undefined') partial = this.partial\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n if (pattern.indexOf(GLOBSTAR) !== -1) {\n return this._matchGlobstar(file, pattern, partial, 0, 0)\n }\n return this._matchOne(file, pattern, partial, 0, 0)\n}\n\nMinimatch.prototype._matchGlobstar = function (file, pattern, partial, fileIndex, patternIndex) {\n var i\n\n // find first globstar from patternIndex\n var firstgs = -1\n for (i = patternIndex; i < pattern.length; i++) {\n if (pattern[i] === GLOBSTAR) { firstgs = i; break }\n }\n\n // find last globstar\n var lastgs = -1\n for (i = pattern.length - 1; i >= 0; i--) {\n if (pattern[i] === GLOBSTAR) { lastgs = i; break }\n }\n\n var head = pattern.slice(patternIndex, firstgs)\n var body = partial ? pattern.slice(firstgs + 1) : pattern.slice(firstgs + 1, lastgs)\n var tail = partial ? [] : pattern.slice(lastgs + 1)\n\n // check the head\n if (head.length) {\n var fileHead = file.slice(fileIndex, fileIndex + head.length)\n if (!this._matchOne(fileHead, head, partial, 0, 0)) {\n return false\n }\n fileIndex += head.length\n }\n\n // check the tail\n var fileTailMatch = 0\n if (tail.length) {\n if (tail.length + fileIndex > file.length) return false\n\n var tailStart = file.length - tail.length\n if (this._matchOne(file, tail, partial, tailStart, 0)) {\n fileTailMatch = tail.length\n } else {\n // affordance for stuff like a/**/* matching a/b/\n if (file[file.length - 1] !== '' ||\n fileIndex + tail.length === file.length) {\n return false\n }\n tailStart--\n if (!this._matchOne(file, tail, partial, tailStart, 0)) {\n return false\n }\n fileTailMatch = tail.length + 1\n }\n }\n\n // if body is empty (single ** between head and tail)\n if (!body.length) {\n var sawSome = !!fileTailMatch\n for (i = fileIndex; i < file.length - fileTailMatch; i++) {\n var f = String(file[i])\n sawSome = true\n if (f === '.' || f === '..' ||\n (!this.options.dot && f.charAt(0) === '.')) {\n return false\n }\n }\n return partial || sawSome\n }\n\n // split body into segments at each GLOBSTAR\n var bodySegments = [[[], 0]]\n var currentBody = bodySegments[0]\n var nonGsParts = 0\n var nonGsPartsSums = [0]\n for (var bi = 0; bi < body.length; bi++) {\n var b = body[bi]\n if (b === GLOBSTAR) {\n nonGsPartsSums.push(nonGsParts)\n currentBody = [[], 0]\n bodySegments.push(currentBody)\n } else {\n currentBody[0].push(b)\n nonGsParts++\n }\n }\n\n var idx = bodySegments.length - 1\n var fileLength = file.length - fileTailMatch\n for (var si = 0; si < bodySegments.length; si++) {\n bodySegments[si][1] = fileLength -\n (nonGsPartsSums[idx--] + bodySegments[si][0].length)\n }\n\n return !!this._matchGlobStarBodySections(\n file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch\n )\n}\n\n// return false for \"nope, not matching\"\n// return null for \"not matching, cannot keep trying\"\nMinimatch.prototype._matchGlobStarBodySections = function (\n file, bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail\n) {\n var bs = bodySegments[bodyIndex]\n if (!bs) {\n // just make sure there are no bad dots\n for (var i = fileIndex; i < file.length; i++) {\n sawTail = true\n var f = file[i]\n if (f === '.' || f === '..' ||\n (!this.options.dot && f.charAt(0) === '.')) {\n return false\n }\n }\n return sawTail\n }\n\n var body = bs[0]\n var after = bs[1]\n while (fileIndex <= after) {\n var m = this._matchOne(\n file.slice(0, fileIndex + body.length),\n body,\n partial,\n fileIndex,\n 0\n )\n // if limit exceeded, no match. intentional false negative,\n // acceptable break in correctness for security.\n if (m && globStarDepth < this.maxGlobstarRecursion) {\n var sub = this._matchGlobStarBodySections(\n file, bodySegments,\n fileIndex + body.length, bodyIndex + 1,\n partial, globStarDepth + 1, sawTail\n )\n if (sub !== false) {\n return sub\n }\n }\n var f = file[fileIndex]\n if (f === '.' || f === '..' ||\n (!this.options.dot && f.charAt(0) === '.')) {\n return false\n }\n fileIndex++\n }\n return partial || null\n}\n\nMinimatch.prototype._matchOne = function (file, pattern, partial, fileIndex, patternIndex) {\n var fi, pi, fl, pl\n for (\n fi = fileIndex, pi = patternIndex, fl = file.length, pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++\n ) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n /* istanbul ignore if */\n if (p === false || p === GLOBSTAR) return false\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n hit = f === p\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else /* istanbul ignore else */ if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n return (fi === fl - 1) && (file[fi] === '')\n }\n\n // should be unreachable.\n /* istanbul ignore next */\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n","var concatMap = require('concat-map');\nvar balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,(?!,).*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.max(Math.abs(numeric(n[2])), 1)\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n","'use strict';\n\nfunction hasKey(obj, keys) {\n\tvar o = obj;\n\tkeys.slice(0, -1).forEach(function (key) {\n\t\to = o[key] || {};\n\t});\n\n\tvar key = keys[keys.length - 1];\n\treturn key in o;\n}\n\nfunction isNumber(x) {\n\tif (typeof x === 'number') { return true; }\n\tif ((/^0x[0-9a-f]+$/i).test(x)) { return true; }\n\treturn (/^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/).test(x);\n}\n\nfunction isConstructorOrProto(obj, key) {\n\treturn (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';\n}\n\nmodule.exports = function (args, opts) {\n\tif (!opts) { opts = {}; }\n\n\tvar flags = {\n\t\tbools: {},\n\t\tstrings: {},\n\t\tunknownFn: null,\n\t};\n\n\tif (typeof opts.unknown === 'function') {\n\t\tflags.unknownFn = opts.unknown;\n\t}\n\n\tif (typeof opts.boolean === 'boolean' && opts.boolean) {\n\t\tflags.allBools = true;\n\t} else {\n\t\t[].concat(opts.boolean).filter(Boolean).forEach(function (key) {\n\t\t\tflags.bools[key] = true;\n\t\t});\n\t}\n\n\tvar aliases = {};\n\n\tfunction aliasIsBoolean(key) {\n\t\treturn aliases[key].some(function (x) {\n\t\t\treturn flags.bools[x];\n\t\t});\n\t}\n\n\tObject.keys(opts.alias || {}).forEach(function (key) {\n\t\taliases[key] = [].concat(opts.alias[key]);\n\t\taliases[key].forEach(function (x) {\n\t\t\taliases[x] = [key].concat(aliases[key].filter(function (y) {\n\t\t\t\treturn x !== y;\n\t\t\t}));\n\t\t});\n\t});\n\n\t[].concat(opts.string).filter(Boolean).forEach(function (key) {\n\t\tflags.strings[key] = true;\n\t\tif (aliases[key]) {\n\t\t\t[].concat(aliases[key]).forEach(function (k) {\n\t\t\t\tflags.strings[k] = true;\n\t\t\t});\n\t\t}\n\t});\n\n\tvar defaults = opts.default || {};\n\n\tvar argv = { _: [] };\n\n\tfunction argDefined(key, arg) {\n\t\treturn (flags.allBools && (/^--[^=]+$/).test(arg))\n\t\t\t|| flags.strings[key]\n\t\t\t|| flags.bools[key]\n\t\t\t|| aliases[key];\n\t}\n\n\tfunction setKey(obj, keys, value) {\n\t\tvar o = obj;\n\t\tfor (var i = 0; i < keys.length - 1; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (isConstructorOrProto(o, key)) { return; }\n\t\t\tif (o[key] === undefined) { o[key] = {}; }\n\t\t\tif (\n\t\t\t\to[key] === Object.prototype\n\t\t\t\t|| o[key] === Number.prototype\n\t\t\t\t|| o[key] === String.prototype\n\t\t\t) {\n\t\t\t\to[key] = {};\n\t\t\t}\n\t\t\tif (o[key] === Array.prototype) { o[key] = []; }\n\t\t\to = o[key];\n\t\t}\n\n\t\tvar lastKey = keys[keys.length - 1];\n\t\tif (isConstructorOrProto(o, lastKey)) { return; }\n\t\tif (\n\t\t\to === Object.prototype\n\t\t\t|| o === Number.prototype\n\t\t\t|| o === String.prototype\n\t\t) {\n\t\t\to = {};\n\t\t}\n\t\tif (o === Array.prototype) { o = []; }\n\t\tif (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') {\n\t\t\to[lastKey] = value;\n\t\t} else if (Array.isArray(o[lastKey])) {\n\t\t\to[lastKey].push(value);\n\t\t} else {\n\t\t\to[lastKey] = [o[lastKey], value];\n\t\t}\n\t}\n\n\tfunction setArg(key, val, arg) {\n\t\tif (arg && flags.unknownFn && !argDefined(key, arg)) {\n\t\t\tif (flags.unknownFn(arg) === false) { return; }\n\t\t}\n\n\t\tvar value = !flags.strings[key] && isNumber(val)\n\t\t\t? Number(val)\n\t\t\t: val;\n\t\tsetKey(argv, key.split('.'), value);\n\n\t\t(aliases[key] || []).forEach(function (x) {\n\t\t\tsetKey(argv, x.split('.'), value);\n\t\t});\n\t}\n\n\tObject.keys(flags.bools).forEach(function (key) {\n\t\tsetArg(key, defaults[key] === undefined ? false : defaults[key]);\n\t});\n\n\tvar notFlags = [];\n\n\tif (args.indexOf('--') !== -1) {\n\t\tnotFlags = args.slice(args.indexOf('--') + 1);\n\t\targs = args.slice(0, args.indexOf('--'));\n\t}\n\n\tfor (var i = 0; i < args.length; i++) {\n\t\tvar arg = args[i];\n\t\tvar key;\n\t\tvar next;\n\n\t\tif ((/^--.+=/).test(arg)) {\n\t\t\t// Using [\\s\\S] instead of . because js doesn't support the\n\t\t\t// 'dotall' regex modifier. See:\n\t\t\t// http://stackoverflow.com/a/1068308/13216\n\t\t\tvar m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n\t\t\tkey = m[1];\n\t\t\tvar value = m[2];\n\t\t\tif (flags.bools[key]) {\n\t\t\t\tvalue = value !== 'false';\n\t\t\t}\n\t\t\tsetArg(key, value, arg);\n\t\t} else if ((/^--no-.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--no-(.+)/)[1];\n\t\t\tsetArg(key, false, arg);\n\t\t} else if ((/^--.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--(.+)/)[1];\n\t\t\tnext = args[i + 1];\n\t\t\tif (\n\t\t\t\tnext !== undefined\n\t\t\t\t&& !(/^(-|--)[^-]/).test(next)\n\t\t\t\t&& !flags.bools[key]\n\t\t\t\t&& !flags.allBools\n\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t) {\n\t\t\t\tsetArg(key, next, arg);\n\t\t\t\ti += 1;\n\t\t\t} else if ((/^(true|false)$/).test(next)) {\n\t\t\t\tsetArg(key, next === 'true', arg);\n\t\t\t\ti += 1;\n\t\t\t} else {\n\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t}\n\t\t} else if ((/^-[^-]+/).test(arg)) {\n\t\t\tvar letters = arg.slice(1, -1).split('');\n\n\t\t\tvar broken = false;\n\t\t\tfor (var j = 0; j < letters.length; j++) {\n\t\t\t\tnext = arg.slice(j + 2);\n\n\t\t\t\tif (next === '-') {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') {\n\t\t\t\t\tsetArg(letters[j], next.slice(1), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(/[A-Za-z]/).test(letters[j])\n\t\t\t\t\t&& (/-?\\d+(\\.\\d*)?(e-?\\d+)?$/).test(next)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n\t\t\t\t\tsetArg(letters[j], arg.slice(j + 2), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tkey = arg.slice(-1)[0];\n\t\t\tif (!broken && key !== '-') {\n\t\t\t\tif (\n\t\t\t\t\targs[i + 1]\n\t\t\t\t\t&& !(/^(-|--)[^-]/).test(args[i + 1])\n\t\t\t\t\t&& !flags.bools[key]\n\t\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(key, args[i + 1], arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) {\n\t\t\t\t\tsetArg(key, args[i + 1] === 'true', arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!flags.unknownFn || flags.unknownFn(arg) !== false) {\n\t\t\t\targv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));\n\t\t\t}\n\t\t\tif (opts.stopEarly) {\n\t\t\t\targv._.push.apply(argv._, args.slice(i + 1));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.keys(defaults).forEach(function (k) {\n\t\tif (!hasKey(argv, k.split('.'))) {\n\t\t\tsetKey(argv, k.split('.'), defaults[k]);\n\n\t\t\t(aliases[k] || []).forEach(function (x) {\n\t\t\t\tsetKey(argv, x.split('.'), defaults[k]);\n\t\t\t});\n\t\t}\n\t});\n\n\tif (opts['--']) {\n\t\targv['--'] = notFlags.slice();\n\t} else {\n\t\tnotFlags.forEach(function (k) {\n\t\t\targv._.push(k);\n\t\t});\n\t}\n\n\treturn argv;\n};\n","var path = require('path');\nvar fs = require('fs');\nvar _0777 = parseInt('0777', 8);\n\nmodule.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;\n\nfunction mkdirP (p, opts, f, made) {\n if (typeof opts === 'function') {\n f = opts;\n opts = {};\n }\n else if (!opts || typeof opts !== 'object') {\n opts = { mode: opts };\n }\n \n var mode = opts.mode;\n var xfs = opts.fs || fs;\n \n if (mode === undefined) {\n mode = _0777\n }\n if (!made) made = null;\n \n var cb = f || /* istanbul ignore next */ function () {};\n p = path.resolve(p);\n \n xfs.mkdir(p, mode, function (er) {\n if (!er) {\n made = made || p;\n return cb(null, made);\n }\n switch (er.code) {\n case 'ENOENT':\n /* istanbul ignore if */\n if (path.dirname(p) === p) return cb(er);\n mkdirP(path.dirname(p), opts, function (er, made) {\n /* istanbul ignore if */\n if (er) cb(er, made);\n else mkdirP(p, opts, cb, made);\n });\n break;\n\n // In the case of any other error, just see if there's a dir\n // there already. If so, then hooray! If not, then something\n // is borked.\n default:\n xfs.stat(p, function (er2, stat) {\n // if the stat fails, then that's super weird.\n // let the original error be the failure reason.\n if (er2 || !stat.isDirectory()) cb(er, made)\n else cb(null, made);\n });\n break;\n }\n });\n}\n\nmkdirP.sync = function sync (p, opts, made) {\n if (!opts || typeof opts !== 'object') {\n opts = { mode: opts };\n }\n \n var mode = opts.mode;\n var xfs = opts.fs || fs;\n \n if (mode === undefined) {\n mode = _0777\n }\n if (!made) made = null;\n\n p = path.resolve(p);\n\n try {\n xfs.mkdirSync(p, mode);\n made = made || p;\n }\n catch (err0) {\n switch (err0.code) {\n case 'ENOENT' :\n made = sync(path.dirname(p), opts, made);\n sync(p, opts, made);\n break;\n\n // In the case of any other error, just see if there's a dir\n // there already. If so, then hooray! If not, then something\n // is borked.\n default:\n var stat;\n try {\n stat = xfs.statSync(p);\n }\n catch (err1) /* istanbul ignore next */ {\n throw err0;\n }\n /* istanbul ignore if */\n if (!stat.isDirectory()) throw err0;\n break;\n }\n }\n\n return made;\n};\n","'use strict';\nconst minimatch = require('minimatch');\nconst arrayUnion = require('array-union');\nconst arrayDiffer = require('array-differ');\nconst arrify = require('arrify');\n\nmodule.exports = (list, patterns, options = {}) => {\n\tlist = arrify(list);\n\tpatterns = arrify(patterns);\n\n\tif (list.length === 0 || patterns.length === 0) {\n\t\treturn [];\n\t}\n\n\treturn patterns.reduce((result, pattern) => {\n\t\tlet process = arrayUnion;\n\n\t\tif (pattern[0] === '!') {\n\t\t\tpattern = pattern.slice(1);\n\t\t\tprocess = arrayDiffer;\n\t\t}\n\n\t\treturn process(result, minimatch.match(list, pattern, options));\n\t}, []);\n};\n","var Stream = require('stream')\n\nmodule.exports = MuteStream\n\n// var out = new MuteStream(process.stdout)\n// argument auto-pipes\nfunction MuteStream (opts) {\n Stream.apply(this)\n opts = opts || {}\n this.writable = this.readable = true\n this.muted = false\n this.on('pipe', this._onpipe)\n this.replace = opts.replace\n\n // For readline-type situations\n // This much at the start of a line being redrawn after a ctrl char\n // is seen (such as backspace) won't be redrawn as the replacement\n this._prompt = opts.prompt || null\n this._hadControl = false\n}\n\nMuteStream.prototype = Object.create(Stream.prototype)\n\nObject.defineProperty(MuteStream.prototype, 'constructor', {\n value: MuteStream,\n enumerable: false\n})\n\nMuteStream.prototype.mute = function () {\n this.muted = true\n}\n\nMuteStream.prototype.unmute = function () {\n this.muted = false\n}\n\nObject.defineProperty(MuteStream.prototype, '_onpipe', {\n value: onPipe,\n enumerable: false,\n writable: true,\n configurable: true\n})\n\nfunction onPipe (src) {\n this._src = src\n}\n\nObject.defineProperty(MuteStream.prototype, 'isTTY', {\n get: getIsTTY,\n set: setIsTTY,\n enumerable: true,\n configurable: true\n})\n\nfunction getIsTTY () {\n return( (this._dest) ? this._dest.isTTY\n : (this._src) ? this._src.isTTY\n : false\n )\n}\n\n// basically just get replace the getter/setter with a regular value\nfunction setIsTTY (isTTY) {\n Object.defineProperty(this, 'isTTY', {\n value: isTTY,\n enumerable: true,\n writable: true,\n configurable: true\n })\n}\n\nObject.defineProperty(MuteStream.prototype, 'rows', {\n get: function () {\n return( this._dest ? this._dest.rows\n : this._src ? this._src.rows\n : undefined )\n }, enumerable: true, configurable: true })\n\nObject.defineProperty(MuteStream.prototype, 'columns', {\n get: function () {\n return( this._dest ? this._dest.columns\n : this._src ? this._src.columns\n : undefined )\n }, enumerable: true, configurable: true })\n\n\nMuteStream.prototype.pipe = function (dest, options) {\n this._dest = dest\n return Stream.prototype.pipe.call(this, dest, options)\n}\n\nMuteStream.prototype.pause = function () {\n if (this._src) return this._src.pause()\n}\n\nMuteStream.prototype.resume = function () {\n if (this._src) return this._src.resume()\n}\n\nMuteStream.prototype.write = function (c) {\n if (this.muted) {\n if (!this.replace) return true\n if (c.match(/^\\u001b/)) {\n if(c.indexOf(this._prompt) === 0) {\n c = c.substr(this._prompt.length);\n c = c.replace(/./g, this.replace);\n c = this._prompt + c;\n }\n this._hadControl = true\n return this.emit('data', c)\n } else {\n if (this._prompt && this._hadControl &&\n c.indexOf(this._prompt) === 0) {\n this._hadControl = false\n this.emit('data', this._prompt)\n c = c.substr(this._prompt.length)\n }\n c = c.toString().replace(/./g, this.replace)\n }\n }\n this.emit('data', c)\n}\n\nMuteStream.prototype.end = function (c) {\n if (this.muted) {\n if (c && this.replace) {\n c = c.toString().replace(/./g, this.replace)\n } else {\n c = null\n }\n }\n if (c) this.emit('data', c)\n this.emit('end')\n}\n\nfunction proxy (fn) { return function () {\n var d = this._dest\n var s = this._src\n if (d && d[fn]) d[fn].apply(d, arguments)\n if (s && s[fn]) s[fn].apply(s, arguments)\n}}\n\nMuteStream.prototype.destroy = proxy('destroy')\nMuteStream.prototype.destroySoon = proxy('destroySoon')\nMuteStream.prototype.close = proxy('close')\n","var fs = require('fs'),\n path = require('path');\n\nmodule.exports = ncp;\nncp.ncp = ncp;\n\nfunction ncp (source, dest, options, callback) {\n var cback = callback;\n\n if (!callback) {\n cback = options;\n options = {};\n }\n\n var basePath = process.cwd(),\n currentPath = path.resolve(basePath, source),\n targetPath = path.resolve(basePath, dest),\n filter = options.filter,\n rename = options.rename,\n transform = options.transform,\n clobber = options.clobber !== false,\n modified = options.modified,\n dereference = options.dereference,\n errs = null,\n started = 0,\n finished = 0,\n running = 0,\n limit = options.limit || ncp.limit || 16;\n\n limit = (limit < 1) ? 1 : (limit > 512) ? 512 : limit;\n\n startCopy(currentPath);\n \n function startCopy(source) {\n started++;\n if (filter) {\n if (filter instanceof RegExp) {\n if (!filter.test(source)) {\n return cb(true);\n }\n }\n else if (typeof filter === 'function') {\n if (!filter(source)) {\n return cb(true);\n }\n }\n }\n return getStats(source);\n }\n\n function getStats(source) {\n var stat = dereference ? fs.stat : fs.lstat;\n if (running >= limit) {\n return setImmediate(function () {\n getStats(source);\n });\n }\n running++;\n stat(source, function (err, stats) {\n var item = {};\n if (err) {\n return onError(err);\n }\n\n // We need to get the mode from the stats object and preserve it.\n item.name = source;\n item.mode = stats.mode;\n item.mtime = stats.mtime; //modified time\n item.atime = stats.atime; //access time\n\n if (stats.isDirectory()) {\n return onDir(item);\n }\n else if (stats.isFile()) {\n return onFile(item);\n }\n else if (stats.isSymbolicLink()) {\n // Symlinks don't really need to know about the mode.\n return onLink(source);\n }\n });\n }\n\n function onFile(file) {\n var target = file.name.replace(currentPath, targetPath);\n if(rename) {\n target = rename(target);\n }\n isWritable(target, function (writable) {\n if (writable) {\n return copyFile(file, target);\n }\n if(clobber) {\n rmFile(target, function () {\n copyFile(file, target);\n });\n }\n if (modified) {\n var stat = dereference ? fs.stat : fs.lstat;\n stat(target, function(err, stats) {\n //if souce modified time greater to target modified time copy file\n if (file.mtime.getTime()>stats.mtime.getTime())\n copyFile(file, target);\n else return cb();\n });\n }\n else {\n return cb();\n }\n });\n }\n\n function copyFile(file, target) {\n var readStream = fs.createReadStream(file.name),\n writeStream = fs.createWriteStream(target, { mode: file.mode });\n \n readStream.on('error', onError);\n writeStream.on('error', onError);\n \n if(transform) {\n transform(readStream, writeStream, file);\n } else {\n writeStream.on('open', function() {\n readStream.pipe(writeStream);\n });\n }\n writeStream.once('finish', function() {\n if (modified) {\n //target file modified date sync.\n fs.utimesSync(target, file.atime, file.mtime);\n cb();\n }\n else cb();\n });\n }\n\n function rmFile(file, done) {\n fs.unlink(file, function (err) {\n if (err) {\n return onError(err);\n }\n return done();\n });\n }\n\n function onDir(dir) {\n var target = dir.name.replace(currentPath, targetPath);\n isWritable(target, function (writable) {\n if (writable) {\n return mkDir(dir, target);\n }\n copyDir(dir.name);\n });\n }\n\n function mkDir(dir, target) {\n fs.mkdir(target, dir.mode, function (err) {\n if (err) {\n return onError(err);\n }\n copyDir(dir.name);\n });\n }\n\n function copyDir(dir) {\n fs.readdir(dir, function (err, items) {\n if (err) {\n return onError(err);\n }\n items.forEach(function (item) {\n startCopy(path.join(dir, item));\n });\n return cb();\n });\n }\n\n function onLink(link) {\n var target = link.replace(currentPath, targetPath);\n fs.readlink(link, function (err, resolvedPath) {\n if (err) {\n return onError(err);\n }\n checkLink(resolvedPath, target);\n });\n }\n\n function checkLink(resolvedPath, target) {\n if (dereference) {\n resolvedPath = path.resolve(basePath, resolvedPath);\n }\n isWritable(target, function (writable) {\n if (writable) {\n return makeLink(resolvedPath, target);\n }\n fs.readlink(target, function (err, targetDest) {\n if (err) {\n return onError(err);\n }\n if (dereference) {\n targetDest = path.resolve(basePath, targetDest);\n }\n if (targetDest === resolvedPath) {\n return cb();\n }\n return rmFile(target, function () {\n makeLink(resolvedPath, target);\n });\n });\n });\n }\n\n function makeLink(linkPath, target) {\n fs.symlink(linkPath, target, function (err) {\n if (err) {\n return onError(err);\n }\n return cb();\n });\n }\n\n function isWritable(path, done) {\n fs.lstat(path, function (err) {\n if (err) {\n if (err.code === 'ENOENT') return done(true);\n return done(false);\n }\n return done(false);\n });\n }\n\n function onError(err) {\n if (options.stopOnError) {\n return cback(err);\n }\n else if (!errs && options.errs) {\n errs = fs.createWriteStream(options.errs);\n }\n else if (!errs) {\n errs = [];\n }\n if (typeof errs.write === 'undefined') {\n errs.push(err);\n }\n else { \n errs.write(err.stack + '\\n\\n');\n }\n return cb();\n }\n\n function cb(skipped) {\n if (!skipped) running--;\n finished++;\n if ((started === finished) && (running === 0)) {\n if (cback !== undefined ) {\n return errs ? cback(errs) : cback(null);\n }\n }\n }\n}\n\n\n","var inherits = require('util').inherits;\n\nvar NestedError = function (message, nested) {\n this.nested = nested;\n\n if (message instanceof Error) {\n nested = message;\n } else if (typeof message !== 'undefined') {\n Object.defineProperty(this, 'message', {\n value: message,\n writable: true,\n enumerable: false,\n configurable: true\n });\n }\n\n Error.captureStackTrace(this, this.constructor);\n var oldStackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack');\n var stackDescriptor = buildStackDescriptor(oldStackDescriptor, nested);\n Object.defineProperty(this, 'stack', stackDescriptor);\n};\n\nfunction buildStackDescriptor(oldStackDescriptor, nested) {\n if (oldStackDescriptor.get) {\n return {\n get: function () {\n var stack = oldStackDescriptor.get.call(this);\n return buildCombinedStacks(stack, this.nested);\n }\n };\n } else {\n var stack = oldStackDescriptor.value;\n return {\n value: buildCombinedStacks(stack, nested)\n };\n }\n}\n\nfunction buildCombinedStacks(stack, nested) {\n if (nested) {\n stack += '\\nCaused By: ' + nested.stack;\n }\n return stack;\n}\n\ninherits(NestedError, Error);\nNestedError.prototype.name = 'NestedError';\n\n\nmodule.exports = NestedError;\n","module.exports = extractDescription\n\n// Extracts description from contents of a readme file in markdown format\nfunction extractDescription (d) {\n if (!d) return;\n if (d === \"ERROR: No README data found!\") return;\n // the first block of text before the first heading\n // that isn't the first line heading\n d = d.trim().split('\\n')\n for (var s = 0; d[s] && d[s].trim().match(/^(#|$)/); s ++);\n var l = d.length\n for (var e = s + 1; e < l && d[e].trim(); e ++);\n return d.slice(s, e).join(' ').trim()\n}\n","var semver = require(\"semver\")\nvar validateLicense = require('validate-npm-package-license');\nvar hostedGitInfo = require(\"hosted-git-info\")\nvar isBuiltinModule = require(\"resolve\").isCore\nvar depTypes = [\"dependencies\",\"devDependencies\",\"optionalDependencies\"]\nvar extractDescription = require(\"./extract_description\")\nvar url = require(\"url\")\nvar typos = require(\"./typos.json\")\n\nvar fixer = module.exports = {\n // default warning function\n warn: function() {},\n\n fixRepositoryField: function(data) {\n if (data.repositories) {\n this.warn(\"repositories\");\n data.repository = data.repositories[0]\n }\n if (!data.repository) return this.warn(\"missingRepository\")\n if (typeof data.repository === \"string\") {\n data.repository = {\n type: \"git\",\n url: data.repository\n }\n }\n var r = data.repository.url || \"\"\n if (r) {\n var hosted = hostedGitInfo.fromUrl(r)\n if (hosted) {\n r = data.repository.url\n = hosted.getDefaultRepresentation() == \"shortcut\" ? hosted.https() : hosted.toString()\n }\n }\n\n if (r.match(/github.com\\/[^\\/]+\\/[^\\/]+\\.git\\.git$/)) {\n this.warn(\"brokenGitUrl\", r)\n }\n }\n\n, fixTypos: function(data) {\n Object.keys(typos.topLevel).forEach(function (d) {\n if (data.hasOwnProperty(d)) {\n this.warn(\"typo\", d, typos.topLevel[d])\n }\n }, this)\n }\n\n, fixScriptsField: function(data) {\n if (!data.scripts) return\n if (typeof data.scripts !== \"object\") {\n this.warn(\"nonObjectScripts\")\n delete data.scripts\n return\n }\n Object.keys(data.scripts).forEach(function (k) {\n if (typeof data.scripts[k] !== \"string\") {\n this.warn(\"nonStringScript\")\n delete data.scripts[k]\n } else if (typos.script[k] && !data.scripts[typos.script[k]]) {\n this.warn(\"typo\", k, typos.script[k], \"scripts\")\n }\n }, this)\n }\n\n, fixFilesField: function(data) {\n var files = data.files\n if (files && !Array.isArray(files)) {\n this.warn(\"nonArrayFiles\")\n delete data.files\n } else if (data.files) {\n data.files = data.files.filter(function(file) {\n if (!file || typeof file !== \"string\") {\n this.warn(\"invalidFilename\", file)\n return false\n } else {\n return true\n }\n }, this)\n }\n }\n\n, fixBinField: function(data) {\n if (!data.bin) return;\n if (typeof data.bin === \"string\") {\n var b = {}\n var match\n if (match = data.name.match(/^@[^/]+[/](.*)$/)) {\n b[match[1]] = data.bin\n } else {\n b[data.name] = data.bin\n }\n data.bin = b\n }\n }\n\n, fixManField: function(data) {\n if (!data.man) return;\n if (typeof data.man === \"string\") {\n data.man = [ data.man ]\n }\n }\n, fixBundleDependenciesField: function(data) {\n var bdd = \"bundledDependencies\"\n var bd = \"bundleDependencies\"\n if (data[bdd] && !data[bd]) {\n data[bd] = data[bdd]\n delete data[bdd]\n }\n if (data[bd] && !Array.isArray(data[bd])) {\n this.warn(\"nonArrayBundleDependencies\")\n delete data[bd]\n } else if (data[bd]) {\n data[bd] = data[bd].filter(function(bd) {\n if (!bd || typeof bd !== 'string') {\n this.warn(\"nonStringBundleDependency\", bd)\n return false\n } else {\n if (!data.dependencies) {\n data.dependencies = {}\n }\n if (!data.dependencies.hasOwnProperty(bd)) {\n this.warn(\"nonDependencyBundleDependency\", bd)\n data.dependencies[bd] = \"*\"\n }\n return true\n }\n }, this)\n }\n }\n\n, fixDependencies: function(data, strict) {\n var loose = !strict\n objectifyDeps(data, this.warn)\n addOptionalDepsToDeps(data, this.warn)\n this.fixBundleDependenciesField(data)\n\n ;['dependencies','devDependencies'].forEach(function(deps) {\n if (!(deps in data)) return\n if (!data[deps] || typeof data[deps] !== \"object\") {\n this.warn(\"nonObjectDependencies\", deps)\n delete data[deps]\n return\n }\n Object.keys(data[deps]).forEach(function (d) {\n var r = data[deps][d]\n if (typeof r !== 'string') {\n this.warn(\"nonStringDependency\", d, JSON.stringify(r))\n delete data[deps][d]\n }\n var hosted = hostedGitInfo.fromUrl(data[deps][d])\n if (hosted) data[deps][d] = hosted.toString()\n }, this)\n }, this)\n }\n\n, fixModulesField: function (data) {\n if (data.modules) {\n this.warn(\"deprecatedModules\")\n delete data.modules\n }\n }\n\n, fixKeywordsField: function (data) {\n if (typeof data.keywords === \"string\") {\n data.keywords = data.keywords.split(/,\\s+/)\n }\n if (data.keywords && !Array.isArray(data.keywords)) {\n delete data.keywords\n this.warn(\"nonArrayKeywords\")\n } else if (data.keywords) {\n data.keywords = data.keywords.filter(function(kw) {\n if (typeof kw !== \"string\" || !kw) {\n this.warn(\"nonStringKeyword\");\n return false\n } else {\n return true\n }\n }, this)\n }\n }\n\n, fixVersionField: function(data, strict) {\n // allow \"loose\" semver 1.0 versions in non-strict mode\n // enforce strict semver 2.0 compliance in strict mode\n var loose = !strict\n if (!data.version) {\n data.version = \"\"\n return true\n }\n if (!semver.valid(data.version, loose)) {\n throw new Error('Invalid version: \"'+ data.version + '\"')\n }\n data.version = semver.clean(data.version, loose)\n return true\n }\n\n, fixPeople: function(data) {\n modifyPeople(data, unParsePerson)\n modifyPeople(data, parsePerson)\n }\n\n, fixNameField: function(data, options) {\n if (typeof options === \"boolean\") options = {strict: options}\n else if (typeof options === \"undefined\") options = {}\n var strict = options.strict\n if (!data.name && !strict) {\n data.name = \"\"\n return\n }\n if (typeof data.name !== \"string\") {\n throw new Error(\"name field must be a string.\")\n }\n if (!strict)\n data.name = data.name.trim()\n ensureValidName(data.name, strict, options.allowLegacyCase)\n if (isBuiltinModule(data.name))\n this.warn(\"conflictingName\", data.name)\n }\n\n\n, fixDescriptionField: function (data) {\n if (data.description && typeof data.description !== 'string') {\n this.warn(\"nonStringDescription\")\n delete data.description\n }\n if (data.readme && !data.description)\n data.description = extractDescription(data.readme)\n if(data.description === undefined) delete data.description;\n if (!data.description) this.warn(\"missingDescription\")\n }\n\n, fixReadmeField: function (data) {\n if (!data.readme) {\n this.warn(\"missingReadme\")\n data.readme = \"ERROR: No README data found!\"\n }\n }\n\n, fixBugsField: function(data) {\n if (!data.bugs && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if(hosted && hosted.bugs()) {\n data.bugs = {url: hosted.bugs()}\n }\n }\n else if(data.bugs) {\n var emailRe = /^.+@.*\\..+$/\n if(typeof data.bugs == \"string\") {\n if(emailRe.test(data.bugs))\n data.bugs = {email:data.bugs}\n else if(url.parse(data.bugs).protocol)\n data.bugs = {url: data.bugs}\n else\n this.warn(\"nonEmailUrlBugsString\")\n }\n else {\n bugsTypos(data.bugs, this.warn)\n var oldBugs = data.bugs\n data.bugs = {}\n if(oldBugs.url) {\n if(typeof(oldBugs.url) == \"string\" && url.parse(oldBugs.url).protocol)\n data.bugs.url = oldBugs.url\n else\n this.warn(\"nonUrlBugsUrlField\")\n }\n if(oldBugs.email) {\n if(typeof(oldBugs.email) == \"string\" && emailRe.test(oldBugs.email))\n data.bugs.email = oldBugs.email\n else\n this.warn(\"nonEmailBugsEmailField\")\n }\n }\n if(!data.bugs.email && !data.bugs.url) {\n delete data.bugs\n this.warn(\"emptyNormalizedBugs\")\n }\n }\n }\n\n, fixHomepageField: function(data) {\n if (!data.homepage && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if (hosted && hosted.docs()) data.homepage = hosted.docs()\n }\n if (!data.homepage) return\n\n if(typeof data.homepage !== \"string\") {\n this.warn(\"nonUrlHomepage\")\n return delete data.homepage\n }\n if(!url.parse(data.homepage).protocol) {\n data.homepage = \"http://\" + data.homepage\n }\n }\n\n, fixLicenseField: function(data) {\n if (!data.license) {\n return this.warn(\"missingLicense\")\n } else{\n if (\n typeof(data.license) !== 'string' ||\n data.license.length < 1 ||\n data.license.trim() === ''\n ) {\n this.warn(\"invalidLicense\")\n } else {\n if (!validateLicense(data.license).validForNewPackages)\n this.warn(\"invalidLicense\")\n }\n }\n }\n}\n\nfunction isValidScopedPackageName(spec) {\n if (spec.charAt(0) !== '@') return false\n\n var rest = spec.slice(1).split('/')\n if (rest.length !== 2) return false\n\n return rest[0] && rest[1] &&\n rest[0] === encodeURIComponent(rest[0]) &&\n rest[1] === encodeURIComponent(rest[1])\n}\n\nfunction isCorrectlyEncodedName(spec) {\n return !spec.match(/[\\/@\\s\\+%:]/) &&\n spec === encodeURIComponent(spec)\n}\n\nfunction ensureValidName (name, strict, allowLegacyCase) {\n if (name.charAt(0) === \".\" ||\n !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) ||\n (strict && (!allowLegacyCase) && name !== name.toLowerCase()) ||\n name.toLowerCase() === \"node_modules\" ||\n name.toLowerCase() === \"favicon.ico\") {\n throw new Error(\"Invalid name: \" + JSON.stringify(name))\n }\n}\n\nfunction modifyPeople (data, fn) {\n if (data.author) data.author = fn(data.author)\n ;[\"maintainers\", \"contributors\"].forEach(function (set) {\n if (!Array.isArray(data[set])) return;\n data[set] = data[set].map(fn)\n })\n return data\n}\n\nfunction unParsePerson (person) {\n if (typeof person === \"string\") return person\n var name = person.name || \"\"\n var u = person.url || person.web\n var url = u ? (\" (\"+u+\")\") : \"\"\n var e = person.email || person.mail\n var email = e ? (\" <\"+e+\">\") : \"\"\n return name+email+url\n}\n\nfunction parsePerson (person) {\n if (typeof person !== \"string\") return person\n var name = person.match(/^([^\\(<]+)/)\n var url = person.match(/\\(([^\\)]+)\\)/)\n var email = person.match(/<([^>]+)>/)\n var obj = {}\n if (name && name[0].trim()) obj.name = name[0].trim()\n if (email) obj.email = email[1];\n if (url) obj.url = url[1];\n return obj\n}\n\nfunction addOptionalDepsToDeps (data, warn) {\n var o = data.optionalDependencies\n if (!o) return;\n var d = data.dependencies || {}\n Object.keys(o).forEach(function (k) {\n d[k] = o[k]\n })\n data.dependencies = d\n}\n\nfunction depObjectify (deps, type, warn) {\n if (!deps) return {}\n if (typeof deps === \"string\") {\n deps = deps.trim().split(/[\\n\\r\\s\\t ,]+/)\n }\n if (!Array.isArray(deps)) return deps\n warn(\"deprecatedArrayDependencies\", type)\n var o = {}\n deps.filter(function (d) {\n return typeof d === \"string\"\n }).forEach(function(d) {\n d = d.trim().split(/(:?[@\\s><=])/)\n var dn = d.shift()\n var dv = d.join(\"\")\n dv = dv.trim()\n dv = dv.replace(/^@/, \"\")\n o[dn] = dv\n })\n return o\n}\n\nfunction objectifyDeps (data, warn) {\n depTypes.forEach(function (type) {\n if (!data[type]) return;\n data[type] = depObjectify(data[type], type, warn)\n })\n}\n\nfunction bugsTypos(bugs, warn) {\n if (!bugs) return\n Object.keys(bugs).forEach(function (k) {\n if (typos.bugs[k]) {\n warn(\"typo\", k, typos.bugs[k], \"bugs\")\n bugs[typos.bugs[k]] = bugs[k]\n delete bugs[k]\n }\n })\n}\n","var util = require(\"util\")\nvar messages = require(\"./warning_messages.json\")\n\nmodule.exports = function() {\n var args = Array.prototype.slice.call(arguments, 0)\n var warningName = args.shift()\n if (warningName == \"typo\") {\n return makeTypoWarning.apply(null,args)\n }\n else {\n var msgTemplate = messages[warningName] ? messages[warningName] : warningName + \": '%s'\"\n args.unshift(msgTemplate)\n return util.format.apply(null, args)\n }\n}\n\nfunction makeTypoWarning (providedName, probableName, field) {\n if (field) {\n providedName = field + \"['\" + providedName + \"']\"\n probableName = field + \"['\" + probableName + \"']\"\n }\n return util.format(messages.typo, providedName, probableName)\n}\n","module.exports = normalize\n\nvar fixer = require(\"./fixer\")\nnormalize.fixer = fixer\n\nvar makeWarning = require(\"./make_warning\")\n\nvar fieldsToFix = ['name','version','description','repository','modules','scripts'\n ,'files','bin','man','bugs','keywords','readme','homepage','license']\nvar otherThingsToFix = ['dependencies','people', 'typos']\n\nvar thingsToFix = fieldsToFix.map(function(fieldName) {\n return ucFirst(fieldName) + \"Field\"\n})\n// two ways to do this in CoffeeScript on only one line, sub-70 chars:\n// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + \"Field\"\n// thingsToFix = (ucFirst(name) + \"Field\" for name in fieldsToFix)\nthingsToFix = thingsToFix.concat(otherThingsToFix)\n\nfunction normalize (data, warn, strict) {\n if(warn === true) warn = null, strict = true\n if(!strict) strict = false\n if(!warn || data.private) warn = function(msg) { /* noop */ }\n\n if (data.scripts &&\n data.scripts.install === \"node-gyp rebuild\" &&\n !data.scripts.preinstall) {\n data.gypfile = true\n }\n fixer.warn = function() { warn(makeWarning.apply(null, arguments)) }\n thingsToFix.forEach(function(thingName) {\n fixer[\"fix\" + ucFirst(thingName)](data, strict)\n })\n data._id = data.name + \"@\" + data.version\n}\n\nfunction ucFirst (string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n","'use strict';\nconst path = require('path');\nconst pathKey = require('path-key');\n\nconst npmRunPath = options => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tpath: process.env[pathKey()],\n\t\texecPath: process.execPath,\n\t\t...options\n\t};\n\n\tlet previous;\n\tlet cwdPath = path.resolve(options.cwd);\n\tconst result = [];\n\n\twhile (previous !== cwdPath) {\n\t\tresult.push(path.join(cwdPath, 'node_modules/.bin'));\n\t\tprevious = cwdPath;\n\t\tcwdPath = path.resolve(cwdPath, '..');\n\t}\n\n\t// Ensure the running `node` binary is used\n\tconst execPathDir = path.resolve(options.cwd, options.execPath, '..');\n\tresult.push(execPathDir);\n\n\treturn result.concat(options.path).join(path.delimiter);\n};\n\nmodule.exports = npmRunPath;\n// TODO: Remove this for the next major release\nmodule.exports.default = npmRunPath;\n\nmodule.exports.env = options => {\n\toptions = {\n\t\tenv: process.env,\n\t\t...options\n\t};\n\n\tconst env = {...options.env};\n\tconst path = pathKey({env});\n\n\toptions.path = env[path];\n\tenv[path] = module.exports(options);\n\n\treturn env;\n};\n","var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n","'use strict';\nconst mimicFn = require('mimic-fn');\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = null;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFn(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nmodule.exports = onetime;\n// TODO: Remove this for the next major release\nmodule.exports.default = onetime;\n\nmodule.exports.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n","'use strict';\nconst readline = require('readline');\nconst chalk = require('chalk');\nconst cliCursor = require('cli-cursor');\nconst cliSpinners = require('cli-spinners');\nconst logSymbols = require('log-symbols');\nconst stripAnsi = require('strip-ansi');\nconst wcwidth = require('wcwidth');\nconst isInteractive = require('is-interactive');\nconst MuteStream = require('mute-stream');\n\nconst TEXT = Symbol('text');\nconst PREFIX_TEXT = Symbol('prefixText');\n\nconst ASCII_ETX_CODE = 0x03; // Ctrl+C emits this code\n\nclass StdinDiscarder {\n\tconstructor() {\n\t\tthis.requests = 0;\n\n\t\tthis.mutedStream = new MuteStream();\n\t\tthis.mutedStream.pipe(process.stdout);\n\t\tthis.mutedStream.mute();\n\n\t\tconst self = this;\n\t\tthis.ourEmit = function (event, data, ...args) {\n\t\t\tconst {stdin} = process;\n\t\t\tif (self.requests > 0 || stdin.emit === self.ourEmit) {\n\t\t\t\tif (event === 'keypress') { // Fixes readline behavior\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (event === 'data' && data.includes(ASCII_ETX_CODE)) {\n\t\t\t\t\tprocess.emit('SIGINT');\n\t\t\t\t}\n\n\t\t\t\tReflect.apply(self.oldEmit, this, [event, data, ...args]);\n\t\t\t} else {\n\t\t\t\tReflect.apply(process.stdin.emit, this, [event, data, ...args]);\n\t\t\t}\n\t\t};\n\t}\n\n\tstart() {\n\t\tthis.requests++;\n\n\t\tif (this.requests === 1) {\n\t\t\tthis.realStart();\n\t\t}\n\t}\n\n\tstop() {\n\t\tif (this.requests <= 0) {\n\t\t\tthrow new Error('`stop` called more times than `start`');\n\t\t}\n\n\t\tthis.requests--;\n\n\t\tif (this.requests === 0) {\n\t\t\tthis.realStop();\n\t\t}\n\t}\n\n\trealStart() {\n\t\t// No known way to make it work reliably on Windows\n\t\tif (process.platform === 'win32') {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.rl = readline.createInterface({\n\t\t\tinput: process.stdin,\n\t\t\toutput: this.mutedStream\n\t\t});\n\n\t\tthis.rl.on('SIGINT', () => {\n\t\t\tif (process.listenerCount('SIGINT') === 0) {\n\t\t\t\tprocess.emit('SIGINT');\n\t\t\t} else {\n\t\t\t\tthis.rl.close();\n\t\t\t\tprocess.kill(process.pid, 'SIGINT');\n\t\t\t}\n\t\t});\n\t}\n\n\trealStop() {\n\t\tif (process.platform === 'win32') {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.rl.close();\n\t\tthis.rl = undefined;\n\t}\n}\n\nlet stdinDiscarder;\n\nclass Ora {\n\tconstructor(options) {\n\t\tif (!stdinDiscarder) {\n\t\t\tstdinDiscarder = new StdinDiscarder();\n\t\t}\n\n\t\tif (typeof options === 'string') {\n\t\t\toptions = {\n\t\t\t\ttext: options\n\t\t\t};\n\t\t}\n\n\t\tthis.options = {\n\t\t\ttext: '',\n\t\t\tcolor: 'cyan',\n\t\t\tstream: process.stderr,\n\t\t\tdiscardStdin: true,\n\t\t\t...options\n\t\t};\n\n\t\tthis.spinner = this.options.spinner;\n\n\t\tthis.color = this.options.color;\n\t\tthis.hideCursor = this.options.hideCursor !== false;\n\t\tthis.interval = this.options.interval || this.spinner.interval || 100;\n\t\tthis.stream = this.options.stream;\n\t\tthis.id = undefined;\n\t\tthis.isEnabled = typeof this.options.isEnabled === 'boolean' ? this.options.isEnabled : isInteractive({stream: this.stream});\n\n\t\t// Set *after* `this.stream`\n\t\tthis.text = this.options.text;\n\t\tthis.prefixText = this.options.prefixText;\n\t\tthis.linesToClear = 0;\n\t\tthis.indent = this.options.indent;\n\t\tthis.discardStdin = this.options.discardStdin;\n\t\tthis.isDiscardingStdin = false;\n\t}\n\n\tget indent() {\n\t\treturn this._indent;\n\t}\n\n\tset indent(indent = 0) {\n\t\tif (!(indent >= 0 && Number.isInteger(indent))) {\n\t\t\tthrow new Error('The `indent` option must be an integer from 0 and up');\n\t\t}\n\n\t\tthis._indent = indent;\n\t}\n\n\t_updateInterval(interval) {\n\t\tif (interval !== undefined) {\n\t\t\tthis.interval = interval;\n\t\t}\n\t}\n\n\tget spinner() {\n\t\treturn this._spinner;\n\t}\n\n\tset spinner(spinner) {\n\t\tthis.frameIndex = 0;\n\n\t\tif (typeof spinner === 'object') {\n\t\t\tif (spinner.frames === undefined) {\n\t\t\t\tthrow new Error('The given spinner must have a `frames` property');\n\t\t\t}\n\n\t\t\tthis._spinner = spinner;\n\t\t} else if (process.platform === 'win32') {\n\t\t\tthis._spinner = cliSpinners.line;\n\t\t} else if (spinner === undefined) {\n\t\t\t// Set default spinner\n\t\t\tthis._spinner = cliSpinners.dots;\n\t\t} else if (cliSpinners[spinner]) {\n\t\t\tthis._spinner = cliSpinners[spinner];\n\t\t} else {\n\t\t\tthrow new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/master/spinners.json for a full list.`);\n\t\t}\n\n\t\tthis._updateInterval(this._spinner.interval);\n\t}\n\n\tget text() {\n\t\treturn this[TEXT];\n\t}\n\n\tget prefixText() {\n\t\treturn this[PREFIX_TEXT];\n\t}\n\n\tget isSpinning() {\n\t\treturn this.id !== undefined;\n\t}\n\n\tupdateLineCount() {\n\t\tconst columns = this.stream.columns || 80;\n\t\tconst fullPrefixText = (typeof this[PREFIX_TEXT] === 'string') ? this[PREFIX_TEXT] + '-' : '';\n\t\tthis.lineCount = stripAnsi(fullPrefixText + '--' + this[TEXT]).split('\\n').reduce((count, line) => {\n\t\t\treturn count + Math.max(1, Math.ceil(wcwidth(line) / columns));\n\t\t}, 0);\n\t}\n\n\tset text(value) {\n\t\tthis[TEXT] = value;\n\t\tthis.updateLineCount();\n\t}\n\n\tset prefixText(value) {\n\t\tthis[PREFIX_TEXT] = value;\n\t\tthis.updateLineCount();\n\t}\n\n\tframe() {\n\t\tconst {frames} = this.spinner;\n\t\tlet frame = frames[this.frameIndex];\n\n\t\tif (this.color) {\n\t\t\tframe = chalk[this.color](frame);\n\t\t}\n\n\t\tthis.frameIndex = ++this.frameIndex % frames.length;\n\t\tconst fullPrefixText = (typeof this.prefixText === 'string' && this.prefixText !== '') ? this.prefixText + ' ' : '';\n\t\tconst fullText = typeof this.text === 'string' ? ' ' + this.text : '';\n\n\t\treturn fullPrefixText + frame + fullText;\n\t}\n\n\tclear() {\n\t\tif (!this.isEnabled || !this.stream.isTTY) {\n\t\t\treturn this;\n\t\t}\n\n\t\tfor (let i = 0; i < this.linesToClear; i++) {\n\t\t\tif (i > 0) {\n\t\t\t\tthis.stream.moveCursor(0, -1);\n\t\t\t}\n\n\t\t\tthis.stream.clearLine();\n\t\t\tthis.stream.cursorTo(this.indent);\n\t\t}\n\n\t\tthis.linesToClear = 0;\n\n\t\treturn this;\n\t}\n\n\trender() {\n\t\tthis.clear();\n\t\tthis.stream.write(this.frame());\n\t\tthis.linesToClear = this.lineCount;\n\n\t\treturn this;\n\t}\n\n\tstart(text) {\n\t\tif (text) {\n\t\t\tthis.text = text;\n\t\t}\n\n\t\tif (!this.isEnabled) {\n\t\t\tif (this.text) {\n\t\t\t\tthis.stream.write(`- ${this.text}\\n`);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.isSpinning) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.hideCursor) {\n\t\t\tcliCursor.hide(this.stream);\n\t\t}\n\n\t\tif (this.discardStdin && process.stdin.isTTY) {\n\t\t\tthis.isDiscardingStdin = true;\n\t\t\tstdinDiscarder.start();\n\t\t}\n\n\t\tthis.render();\n\t\tthis.id = setInterval(this.render.bind(this), this.interval);\n\n\t\treturn this;\n\t}\n\n\tstop() {\n\t\tif (!this.isEnabled) {\n\t\t\treturn this;\n\t\t}\n\n\t\tclearInterval(this.id);\n\t\tthis.id = undefined;\n\t\tthis.frameIndex = 0;\n\t\tthis.clear();\n\t\tif (this.hideCursor) {\n\t\t\tcliCursor.show(this.stream);\n\t\t}\n\n\t\tif (this.discardStdin && process.stdin.isTTY && this.isDiscardingStdin) {\n\t\t\tstdinDiscarder.stop();\n\t\t\tthis.isDiscardingStdin = false;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tsucceed(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.success, text});\n\t}\n\n\tfail(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.error, text});\n\t}\n\n\twarn(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.warning, text});\n\t}\n\n\tinfo(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.info, text});\n\t}\n\n\tstopAndPersist(options = {}) {\n\t\tconst prefixText = options.prefixText || this.prefixText;\n\t\tconst fullPrefixText = (typeof prefixText === 'string' && prefixText !== '') ? prefixText + ' ' : '';\n\t\tconst text = options.text || this.text;\n\t\tconst fullText = (typeof text === 'string') ? ' ' + text : '';\n\n\t\tthis.stop();\n\t\tthis.stream.write(`${fullPrefixText}${options.symbol || ' '}${fullText}\\n`);\n\n\t\treturn this;\n\t}\n}\n\nconst oraFactory = function (options) {\n\treturn new Ora(options);\n};\n\nmodule.exports = oraFactory;\n\nmodule.exports.promise = (action, options) => {\n\t// eslint-disable-next-line promise/prefer-await-to-then\n\tif (typeof action.then !== 'function') {\n\t\tthrow new TypeError('Parameter `action` must be a Promise');\n\t}\n\n\tconst spinner = new Ora(options);\n\tspinner.start();\n\n\t(async () => {\n\t\ttry {\n\t\t\tawait action;\n\t\t\tspinner.succeed();\n\t\t} catch (_) {\n\t\t\tspinner.fail();\n\t\t}\n\t})();\n\n\treturn spinner;\n};\n","'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level > 3 || options.level < 0) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// `__proto__` is used because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tbuilder.__proto__ = proto; // eslint-disable-line no-proto\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!Array.isArray(firstString)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\n// For TypeScript\nchalk.Level = {\n\tNone: 0,\n\tBasic: 1,\n\tAnsi256: 2,\n\tTrueColor: 3,\n\t0: 'None',\n\t1: 'Basic',\n\t2: 'Ansi256',\n\t3: 'TrueColor'\n};\n\nmodule.exports = chalk;\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMsg);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n","'use strict';\nmodule.exports = (flag, argv) => {\n\targv = argv || process.argv;\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst pos = argv.indexOf(prefix + flag);\n\tconst terminatorPos = argv.indexOf('--');\n\treturn pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n","'use strict';\nconst chalk = require('chalk');\n\nconst isSupported = process.platform !== 'win32' || process.env.CI || process.env.TERM === 'xterm-256color';\n\nconst main = {\n\tinfo: chalk.blue('ℹ'),\n\tsuccess: chalk.green('✔'),\n\twarning: chalk.yellow('⚠'),\n\terror: chalk.red('✖')\n};\n\nconst fallbacks = {\n\tinfo: chalk.blue('i'),\n\tsuccess: chalk.green('√'),\n\twarning: chalk.yellow('‼'),\n\terror: chalk.red('×')\n};\n\nmodule.exports = isSupported ? main : fallbacks;\n","'use strict';\nconst colorConvert = require('color-convert');\n\nconst wrapAnsi16 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => function () {\n\tconst rgb = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\t\t\tgray: [90, 39],\n\n\t\t\t// Bright color\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Fix humans\n\tstyles.color.grey = styles.color.gray;\n\n\tfor (const groupName of Object.keys(styles)) {\n\t\tconst group = styles[groupName];\n\n\t\tfor (const styleName of Object.keys(group)) {\n\t\t\tconst style = group[styleName];\n\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\n\t\tObject.defineProperty(styles, 'codes', {\n\t\t\tvalue: codes,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tconst ansi2ansi = n => n;\n\tconst rgb2rgb = (r, g, b) => [r, g, b];\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 0)\n\t};\n\n\tstyles.bgColor.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 10)\n\t};\n\n\tfor (let key of Object.keys(colorConvert)) {\n\t\tif (typeof colorConvert[key] !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst suite = colorConvert[key];\n\n\t\tif (key === 'ansi16') {\n\t\t\tkey = 'ansi';\n\t\t}\n\n\t\tif ('ansi16' in suite) {\n\t\t\tstyles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);\n\t\t\tstyles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);\n\t\t}\n\n\t\tif ('ansi256' in suite) {\n\t\t\tstyles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);\n\t\t\tstyles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);\n\t\t}\n\n\t\tif ('rgb' in suite) {\n\t\t\tstyles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);\n\t\t\tstyles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nconst escapeStringRegexp = require('escape-string-regexp');\nconst ansiStyles = require('ansi-styles');\nconst stdoutColor = require('supports-color').stdout;\n\nconst template = require('./templates.js');\n\nconst isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];\n\n// `color-convert` models to exclude from the Chalk API due to conflicts and such\nconst skipModels = new Set(['gray']);\n\nconst styles = Object.create(null);\n\nfunction applyOptions(obj, options) {\n\toptions = options || {};\n\n\t// Detect level if not set manually\n\tconst scLevel = stdoutColor ? stdoutColor.level : 0;\n\tobj.level = options.level === undefined ? scLevel : options.level;\n\tobj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;\n}\n\nfunction Chalk(options) {\n\t// We check for this.template here since calling `chalk.constructor()`\n\t// by itself will have a `this` of a previously constructed chalk object\n\tif (!this || !(this instanceof Chalk) || this.template) {\n\t\tconst chalk = {};\n\t\tapplyOptions(chalk, options);\n\n\t\tchalk.template = function () {\n\t\t\tconst args = [].slice.call(arguments);\n\t\t\treturn chalkTag.apply(null, [chalk.template].concat(args));\n\t\t};\n\n\t\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\t\tObject.setPrototypeOf(chalk.template, chalk);\n\n\t\tchalk.template.constructor = Chalk;\n\n\t\treturn chalk.template;\n\t}\n\n\tapplyOptions(this, options);\n}\n\n// Use bright blue on Windows as the normal blue color is illegible\nif (isSimpleWindowsTerm) {\n\tansiStyles.blue.open = '\\u001B[94m';\n}\n\nfor (const key of Object.keys(ansiStyles)) {\n\tansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n\n\tstyles[key] = {\n\t\tget() {\n\t\t\tconst codes = ansiStyles[key];\n\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\treturn build.call(this, this._styles || [], true, 'visible');\n\t}\n};\n\nansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');\nfor (const model of Object.keys(ansiStyles.color.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.color.close,\n\t\t\t\t\tcloseRe: ansiStyles.color.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');\nfor (const model of Object.keys(ansiStyles.bgColor.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.bgColor.close,\n\t\t\t\t\tcloseRe: ansiStyles.bgColor.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, styles);\n\nfunction build(_styles, _empty, key) {\n\tconst builder = function () {\n\t\treturn applyStyle.apply(builder, arguments);\n\t};\n\n\tbuilder._styles = _styles;\n\tbuilder._empty = _empty;\n\n\tconst self = this;\n\n\tObject.defineProperty(builder, 'level', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.level;\n\t\t},\n\t\tset(level) {\n\t\t\tself.level = level;\n\t\t}\n\t});\n\n\tObject.defineProperty(builder, 'enabled', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.enabled;\n\t\t},\n\t\tset(enabled) {\n\t\t\tself.enabled = enabled;\n\t\t}\n\t});\n\n\t// See below for fix regarding invisible grey/dim combination on Windows\n\tbuilder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';\n\n\t// `__proto__` is used because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tbuilder.__proto__ = proto; // eslint-disable-line no-proto\n\n\treturn builder;\n}\n\nfunction applyStyle() {\n\t// Support varags, but simply cast to string in case there's only one arg\n\tconst args = arguments;\n\tconst argsLen = args.length;\n\tlet str = String(arguments[0]);\n\n\tif (argsLen === 0) {\n\t\treturn '';\n\t}\n\n\tif (argsLen > 1) {\n\t\t// Don't slice `arguments`, it prevents V8 optimizations\n\t\tfor (let a = 1; a < argsLen; a++) {\n\t\t\tstr += ' ' + args[a];\n\t\t}\n\t}\n\n\tif (!this.enabled || this.level <= 0 || !str) {\n\t\treturn this._empty ? '' : str;\n\t}\n\n\t// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,\n\t// see https://github.com/chalk/chalk/issues/58\n\t// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.\n\tconst originalDim = ansiStyles.dim.open;\n\tif (isSimpleWindowsTerm && this.hasGrey) {\n\t\tansiStyles.dim.open = '';\n\t}\n\n\tfor (const code of this._styles.slice().reverse()) {\n\t\t// Replace any instances already present with a re-opening code\n\t\t// otherwise only the part of the string until said closing code\n\t\t// will be colored, and the rest will simply be 'plain'.\n\t\tstr = code.open + str.replace(code.closeRe, code.open) + code.close;\n\n\t\t// Close the styling before a linebreak and reopen\n\t\t// after next line to fix a bleed issue on macOS\n\t\t// https://github.com/chalk/chalk/pull/92\n\t\tstr = str.replace(/\\r?\\n/g, `${code.close}$&${code.open}`);\n\t}\n\n\t// Reset the original `dim` if we changed it to work around the Windows dimmed gray issue\n\tansiStyles.dim.open = originalDim;\n\n\treturn str;\n}\n\nfunction chalkTag(chalk, strings) {\n\tif (!Array.isArray(strings)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn [].slice.call(arguments, 1).join(' ');\n\t}\n\n\tconst args = [].slice.call(arguments, 2);\n\tconst parts = [strings.raw[0]];\n\n\tfor (let i = 1; i < strings.length; i++) {\n\t\tparts.push(String(args[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'));\n\t\tparts.push(String(strings.raw[i]));\n\t}\n\n\treturn template(chalk, parts.join(''));\n}\n\nObject.defineProperties(Chalk.prototype, styles);\n\nmodule.exports = Chalk(); // eslint-disable-line new-cap\nmodule.exports.supportsColor = stdoutColor;\nmodule.exports.default = module.exports; // For TypeScript\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tif ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, args) {\n\tconst results = [];\n\tconst chunks = args.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tif (!isNaN(chunk)) {\n\t\t\tresults.push(Number(chunk));\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const styleName of Object.keys(enabled)) {\n\t\tif (Array.isArray(enabled[styleName])) {\n\t\t\tif (!(styleName in current)) {\n\t\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t\t}\n\n\t\t\tif (enabled[styleName].length > 0) {\n\t\t\t\tcurrent = current[styleName].apply(current, enabled[styleName]);\n\t\t\t} else {\n\t\t\t\tcurrent = current[styleName];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, tmp) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {\n\t\tif (escapeChar) {\n\t\t\tchunk.push(unescape(escapeChar));\n\t\t} else if (style) {\n\t\t\tconst str = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(chr);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMsg);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\nconst os = require('os');\nconst hasFlag = require('has-flag');\n\nconst env = process.env;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false')) {\n\tforceColor = false;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n\tforceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(stream) {\n\tif (forceColor === false) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (stream && !stream.isTTY && forceColor !== true) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor ? 1 : 0;\n\n\tif (process.platform === 'win32') {\n\t\t// Node.js 7.5.0 is the first version of Node.js to include a patch to\n\t\t// libuv that enables 256 color output on Windows. Anything earlier and it\n\t\t// won't work. However, here we target Node.js 8 at minimum as it is an LTS\n\t\t// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows\n\t\t// release that supports 256 colors. Windows 10 build 14931 is the first release\n\t\t// that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(process.versions.node.split('.')[0]) >= 8 &&\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel(process.stdout),\n\tstderr: getSupportLevel(process.stderr)\n};\n","'use strict';\nconst pTimeout = require('p-timeout');\n\nconst symbolAsyncIterator = Symbol.asyncIterator || '@@asyncIterator';\n\nconst normalizeEmitter = emitter => {\n\tconst addListener = emitter.on || emitter.addListener || emitter.addEventListener;\n\tconst removeListener = emitter.off || emitter.removeListener || emitter.removeEventListener;\n\n\tif (!addListener || !removeListener) {\n\t\tthrow new TypeError('Emitter is not compatible');\n\t}\n\n\treturn {\n\t\taddListener: addListener.bind(emitter),\n\t\tremoveListener: removeListener.bind(emitter)\n\t};\n};\n\nconst toArray = value => Array.isArray(value) ? value : [value];\n\nconst multiple = (emitter, event, options) => {\n\tlet cancel;\n\tconst ret = new Promise((resolve, reject) => {\n\t\toptions = {\n\t\t\trejectionEvents: ['error'],\n\t\t\tmultiArgs: false,\n\t\t\tresolveImmediately: false,\n\t\t\t...options\n\t\t};\n\n\t\tif (!(options.count >= 0 && (options.count === Infinity || Number.isInteger(options.count)))) {\n\t\t\tthrow new TypeError('The `count` option should be at least 0 or more');\n\t\t}\n\n\t\t// Allow multiple events\n\t\tconst events = toArray(event);\n\n\t\tconst items = [];\n\t\tconst {addListener, removeListener} = normalizeEmitter(emitter);\n\n\t\tconst onItem = (...args) => {\n\t\t\tconst value = options.multiArgs ? args : args[0];\n\n\t\t\tif (options.filter && !options.filter(value)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\titems.push(value);\n\n\t\t\tif (options.count === items.length) {\n\t\t\t\tcancel();\n\t\t\t\tresolve(items);\n\t\t\t}\n\t\t};\n\n\t\tconst rejectHandler = error => {\n\t\t\tcancel();\n\t\t\treject(error);\n\t\t};\n\n\t\tcancel = () => {\n\t\t\tfor (const event of events) {\n\t\t\t\tremoveListener(event, onItem);\n\t\t\t}\n\n\t\t\tfor (const rejectionEvent of options.rejectionEvents) {\n\t\t\t\tremoveListener(rejectionEvent, rejectHandler);\n\t\t\t}\n\t\t};\n\n\t\tfor (const event of events) {\n\t\t\taddListener(event, onItem);\n\t\t}\n\n\t\tfor (const rejectionEvent of options.rejectionEvents) {\n\t\t\taddListener(rejectionEvent, rejectHandler);\n\t\t}\n\n\t\tif (options.resolveImmediately) {\n\t\t\tresolve(items);\n\t\t}\n\t});\n\n\tret.cancel = cancel;\n\n\tif (typeof options.timeout === 'number') {\n\t\tconst timeout = pTimeout(ret, options.timeout);\n\t\ttimeout.cancel = cancel;\n\t\treturn timeout;\n\t}\n\n\treturn ret;\n};\n\nconst pEvent = (emitter, event, options) => {\n\tif (typeof options === 'function') {\n\t\toptions = {filter: options};\n\t}\n\n\toptions = {\n\t\t...options,\n\t\tcount: 1,\n\t\tresolveImmediately: false\n\t};\n\n\tconst arrayPromise = multiple(emitter, event, options);\n\tconst promise = arrayPromise.then(array => array[0]); // eslint-disable-line promise/prefer-await-to-then\n\tpromise.cancel = arrayPromise.cancel;\n\n\treturn promise;\n};\n\nmodule.exports = pEvent;\n// TODO: Remove this for the next major release\nmodule.exports.default = pEvent;\n\nmodule.exports.multiple = multiple;\n\nmodule.exports.iterator = (emitter, event, options) => {\n\tif (typeof options === 'function') {\n\t\toptions = {filter: options};\n\t}\n\n\t// Allow multiple events\n\tconst events = toArray(event);\n\n\toptions = {\n\t\trejectionEvents: ['error'],\n\t\tresolutionEvents: [],\n\t\tlimit: Infinity,\n\t\tmultiArgs: false,\n\t\t...options\n\t};\n\n\tconst {limit} = options;\n\tconst isValidLimit = limit >= 0 && (limit === Infinity || Number.isInteger(limit));\n\tif (!isValidLimit) {\n\t\tthrow new TypeError('The `limit` option should be a non-negative integer or Infinity');\n\t}\n\n\tif (limit === 0) {\n\t\t// Return an empty async iterator to avoid any further cost\n\t\treturn {\n\t\t\t[Symbol.asyncIterator]() {\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tasync next() {\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: undefined\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t}\n\n\tconst {addListener, removeListener} = normalizeEmitter(emitter);\n\n\tlet isDone = false;\n\tlet error;\n\tlet hasPendingError = false;\n\tconst nextQueue = [];\n\tconst valueQueue = [];\n\tlet eventCount = 0;\n\tlet isLimitReached = false;\n\n\tconst valueHandler = (...args) => {\n\t\teventCount++;\n\t\tisLimitReached = eventCount === limit;\n\n\t\tconst value = options.multiArgs ? args : args[0];\n\n\t\tif (nextQueue.length > 0) {\n\t\t\tconst {resolve} = nextQueue.shift();\n\n\t\t\tresolve({done: false, value});\n\n\t\t\tif (isLimitReached) {\n\t\t\t\tcancel();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueQueue.push(value);\n\n\t\tif (isLimitReached) {\n\t\t\tcancel();\n\t\t}\n\t};\n\n\tconst cancel = () => {\n\t\tisDone = true;\n\t\tfor (const event of events) {\n\t\t\tremoveListener(event, valueHandler);\n\t\t}\n\n\t\tfor (const rejectionEvent of options.rejectionEvents) {\n\t\t\tremoveListener(rejectionEvent, rejectHandler);\n\t\t}\n\n\t\tfor (const resolutionEvent of options.resolutionEvents) {\n\t\t\tremoveListener(resolutionEvent, resolveHandler);\n\t\t}\n\n\t\twhile (nextQueue.length > 0) {\n\t\t\tconst {resolve} = nextQueue.shift();\n\t\t\tresolve({done: true, value: undefined});\n\t\t}\n\t};\n\n\tconst rejectHandler = (...args) => {\n\t\terror = options.multiArgs ? args : args[0];\n\n\t\tif (nextQueue.length > 0) {\n\t\t\tconst {reject} = nextQueue.shift();\n\t\t\treject(error);\n\t\t} else {\n\t\t\thasPendingError = true;\n\t\t}\n\n\t\tcancel();\n\t};\n\n\tconst resolveHandler = (...args) => {\n\t\tconst value = options.multiArgs ? args : args[0];\n\n\t\tif (options.filter && !options.filter(value)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (nextQueue.length > 0) {\n\t\t\tconst {resolve} = nextQueue.shift();\n\t\t\tresolve({done: true, value});\n\t\t} else {\n\t\t\tvalueQueue.push(value);\n\t\t}\n\n\t\tcancel();\n\t};\n\n\tfor (const event of events) {\n\t\taddListener(event, valueHandler);\n\t}\n\n\tfor (const rejectionEvent of options.rejectionEvents) {\n\t\taddListener(rejectionEvent, rejectHandler);\n\t}\n\n\tfor (const resolutionEvent of options.resolutionEvents) {\n\t\taddListener(resolutionEvent, resolveHandler);\n\t}\n\n\treturn {\n\t\t[symbolAsyncIterator]() {\n\t\t\treturn this;\n\t\t},\n\t\tasync next() {\n\t\t\tif (valueQueue.length > 0) {\n\t\t\t\tconst value = valueQueue.shift();\n\t\t\t\treturn {\n\t\t\t\t\tdone: isDone && valueQueue.length === 0 && !isLimitReached,\n\t\t\t\t\tvalue\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (hasPendingError) {\n\t\t\t\thasPendingError = false;\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (isDone) {\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: undefined\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn new Promise((resolve, reject) => nextQueue.push({resolve, reject}));\n\t\t},\n\t\tasync return(value) {\n\t\t\tcancel();\n\t\t\treturn {\n\t\t\t\tdone: isDone,\n\t\t\t\tvalue\n\t\t\t};\n\t\t}\n\t};\n};\n\nmodule.exports.TimeoutError = pTimeout.TimeoutError;\n","'use strict';\nconst pMap = require('p-map');\n\nconst pFilter = async (iterable, filterer, options) => {\n\tconst values = await pMap(\n\t\titerable,\n\t\t(element, index) => Promise.all([filterer(element, index), element]),\n\t\toptions\n\t);\n\treturn values.filter(value => Boolean(value[0])).map(value => value[1]);\n};\n\nmodule.exports = pFilter;\n// TODO: Remove this for the next major release\nmodule.exports.default = pFilter;\n","'use strict';\n\nconst pMap = (iterable, mapper, options) => new Promise((resolve, reject) => {\n\toptions = Object.assign({\n\t\tconcurrency: Infinity\n\t}, options);\n\n\tif (typeof mapper !== 'function') {\n\t\tthrow new TypeError('Mapper function is required');\n\t}\n\n\tconst {concurrency} = options;\n\n\tif (!(typeof concurrency === 'number' && concurrency >= 1)) {\n\t\tthrow new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${concurrency}\\` (${typeof concurrency})`);\n\t}\n\n\tconst ret = [];\n\tconst iterator = iterable[Symbol.iterator]();\n\tlet isRejected = false;\n\tlet isIterableDone = false;\n\tlet resolvingCount = 0;\n\tlet currentIndex = 0;\n\n\tconst next = () => {\n\t\tif (isRejected) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst nextItem = iterator.next();\n\t\tconst i = currentIndex;\n\t\tcurrentIndex++;\n\n\t\tif (nextItem.done) {\n\t\t\tisIterableDone = true;\n\n\t\t\tif (resolvingCount === 0) {\n\t\t\t\tresolve(ret);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tresolvingCount++;\n\n\t\tPromise.resolve(nextItem.value)\n\t\t\t.then(element => mapper(element, i))\n\t\t\t.then(\n\t\t\t\tvalue => {\n\t\t\t\t\tret[i] = value;\n\t\t\t\t\tresolvingCount--;\n\t\t\t\t\tnext();\n\t\t\t\t},\n\t\t\t\terror => {\n\t\t\t\t\tisRejected = true;\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t);\n\t};\n\n\tfor (let i = 0; i < concurrency; i++) {\n\t\tnext();\n\n\t\tif (isIterableDone) {\n\t\t\tbreak;\n\t\t}\n\t}\n});\n\nmodule.exports = pMap;\n// TODO: Remove this for the next major release\nmodule.exports.default = pMap;\n","'use strict';\nmodule.exports = (promise, onFinally) => {\n\tonFinally = onFinally || (() => {});\n\n\treturn promise.then(\n\t\tval => new Promise(resolve => {\n\t\t\tresolve(onFinally());\n\t\t}).then(() => val),\n\t\terr => new Promise(resolve => {\n\t\t\tresolve(onFinally());\n\t\t}).then(() => {\n\t\t\tthrow err;\n\t\t})\n\t);\n};\n","'use strict';\nconst AggregateError = require('aggregate-error');\n\nmodule.exports = async (\n\titerable,\n\tmapper,\n\t{\n\t\tconcurrency = Infinity,\n\t\tstopOnError = true\n\t} = {}\n) => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (typeof mapper !== 'function') {\n\t\t\tthrow new TypeError('Mapper function is required');\n\t\t}\n\n\t\tif (!((Number.isSafeInteger(concurrency) || concurrency === Infinity) && concurrency >= 1)) {\n\t\t\tthrow new TypeError(`Expected \\`concurrency\\` to be an integer from 1 and up or \\`Infinity\\`, got \\`${concurrency}\\` (${typeof concurrency})`);\n\t\t}\n\n\t\tconst result = [];\n\t\tconst errors = [];\n\t\tconst iterator = iterable[Symbol.iterator]();\n\t\tlet isRejected = false;\n\t\tlet isIterableDone = false;\n\t\tlet resolvingCount = 0;\n\t\tlet currentIndex = 0;\n\n\t\tconst next = () => {\n\t\t\tif (isRejected) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst nextItem = iterator.next();\n\t\t\tconst index = currentIndex;\n\t\t\tcurrentIndex++;\n\n\t\t\tif (nextItem.done) {\n\t\t\t\tisIterableDone = true;\n\n\t\t\t\tif (resolvingCount === 0) {\n\t\t\t\t\tif (!stopOnError && errors.length !== 0) {\n\t\t\t\t\t\treject(new AggregateError(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolvingCount++;\n\n\t\t\t(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst element = await nextItem.value;\n\t\t\t\t\tresult[index] = await mapper(element, index);\n\t\t\t\t\tresolvingCount--;\n\t\t\t\t\tnext();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (stopOnError) {\n\t\t\t\t\t\tisRejected = true;\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors.push(error);\n\t\t\t\t\t\tresolvingCount--;\n\t\t\t\t\t\tnext();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})();\n\t\t};\n\n\t\tfor (let i = 0; i < concurrency; i++) {\n\t\t\tnext();\n\n\t\t\tif (isIterableDone) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n};\n","'use strict';\n\nconst pFinally = require('p-finally');\n\nclass TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\nconst pTimeout = (promise, milliseconds, fallback) => new Promise((resolve, reject) => {\n\tif (typeof milliseconds !== 'number' || milliseconds < 0) {\n\t\tthrow new TypeError('Expected `milliseconds` to be a positive number');\n\t}\n\n\tif (milliseconds === Infinity) {\n\t\tresolve(promise);\n\t\treturn;\n\t}\n\n\tconst timer = setTimeout(() => {\n\t\tif (typeof fallback === 'function') {\n\t\t\ttry {\n\t\t\t\tresolve(fallback());\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst message = typeof fallback === 'string' ? fallback : `Promise timed out after ${milliseconds} milliseconds`;\n\t\tconst timeoutError = fallback instanceof Error ? fallback : new TimeoutError(message);\n\n\t\tif (typeof promise.cancel === 'function') {\n\t\t\tpromise.cancel();\n\t\t}\n\n\t\treject(timeoutError);\n\t}, milliseconds);\n\n\t// TODO: Use native `finally` keyword when targeting Node.js 10\n\tpFinally(\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\tpromise.then(resolve, reject),\n\t\t() => {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t);\n});\n\nmodule.exports = pTimeout;\n// TODO: Remove this for the next major release\nmodule.exports.default = pTimeout;\n\nmodule.exports.TimeoutError = TimeoutError;\n","'use strict';\nconst errorEx = require('error-ex');\nconst fallback = require('json-parse-even-better-errors');\nconst {default: LinesAndColumns} = require('lines-and-columns');\nconst {codeFrameColumns} = require('@babel/code-frame');\n\nconst JSONError = errorEx('JSONError', {\n\tfileName: errorEx.append('in %s'),\n\tcodeFrame: errorEx.append('\\n\\n%s\\n')\n});\n\nconst parseJson = (string, reviver, filename) => {\n\tif (typeof reviver === 'string') {\n\t\tfilename = reviver;\n\t\treviver = null;\n\t}\n\n\ttry {\n\t\ttry {\n\t\t\treturn JSON.parse(string, reviver);\n\t\t} catch (error) {\n\t\t\tfallback(string, reviver);\n\t\t\tthrow error;\n\t\t}\n\t} catch (error) {\n\t\terror.message = error.message.replace(/\\n/g, '');\n\t\tconst indexMatch = error.message.match(/in JSON at position (\\d+) while parsing/);\n\n\t\tconst jsonError = new JSONError(error);\n\t\tif (filename) {\n\t\t\tjsonError.fileName = filename;\n\t\t}\n\n\t\tif (indexMatch && indexMatch.length > 0) {\n\t\t\tconst lines = new LinesAndColumns(string);\n\t\t\tconst index = Number(indexMatch[1]);\n\t\t\tconst location = lines.locationForIndex(index);\n\n\t\t\tconst codeFrame = codeFrameColumns(\n\t\t\t\tstring,\n\t\t\t\t{start: {line: location.line + 1, column: location.column + 1}},\n\t\t\t\t{highlightCode: true}\n\t\t\t);\n\n\t\t\tjsonError.codeFrame = codeFrame;\n\t\t}\n\n\t\tthrow jsonError;\n\t}\n};\n\nparseJson.JSONError = JSONError;\n\nmodule.exports = parseJson;\n","\"use strict\";\nexports.__esModule = true;\nexports.LinesAndColumns = void 0;\nvar LF = '\\n';\nvar CR = '\\r';\nvar LinesAndColumns = /** @class */ (function () {\n function LinesAndColumns(string) {\n this.string = string;\n var offsets = [0];\n for (var offset = 0; offset < string.length;) {\n switch (string[offset]) {\n case LF:\n offset += LF.length;\n offsets.push(offset);\n break;\n case CR:\n offset += CR.length;\n if (string[offset] === LF) {\n offset += LF.length;\n }\n offsets.push(offset);\n break;\n default:\n offset++;\n break;\n }\n }\n this.offsets = offsets;\n }\n LinesAndColumns.prototype.locationForIndex = function (index) {\n if (index < 0 || index > this.string.length) {\n return null;\n }\n var line = 0;\n var offsets = this.offsets;\n while (offsets[line + 1] <= index) {\n line++;\n }\n var column = index - offsets[line];\n return { line: line, column: column };\n };\n LinesAndColumns.prototype.indexForLocation = function (location) {\n var line = location.line, column = location.column;\n if (line < 0 || line >= this.offsets.length) {\n return null;\n }\n if (column < 0 || column > this.lengthOfLine(line)) {\n return null;\n }\n return this.offsets[line] + column;\n };\n LinesAndColumns.prototype.lengthOfLine = function (line) {\n var offset = this.offsets[line];\n var nextOffset = line === this.offsets.length - 1\n ? this.string.length\n : this.offsets[line + 1];\n return nextOffset - offset;\n };\n return LinesAndColumns;\n}());\nexports.LinesAndColumns = LinesAndColumns;\nexports[\"default\"] = LinesAndColumns;\n","'use strict';\n\nfunction posix(path) {\n\treturn path.charAt(0) === '/';\n}\n\nfunction win32(path) {\n\t// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56\n\tvar splitDeviceRe = /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\tvar result = splitDeviceRe.exec(path);\n\tvar device = result[1] || '';\n\tvar isUnc = Boolean(device && device.charAt(1) !== ':');\n\n\t// UNC paths are always absolute\n\treturn Boolean(result[2] || isUnc);\n}\n\nmodule.exports = process.platform === 'win32' ? win32 : posix;\nmodule.exports.posix = posix;\nmodule.exports.win32 = win32;\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\nvar isWindows = process.platform === 'win32';\n\n// Regex to split a windows path into into [dir, root, basename, name, ext]\nvar splitWindowsRe =\n /^(((?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?[\\\\\\/]?)(?:[^\\\\\\/]*[\\\\\\/])*)((\\.{1,2}|[^\\\\\\/]+?|)(\\.[^.\\/\\\\]*|))[\\\\\\/]*$/;\n\nvar win32 = {};\n\nfunction win32SplitPath(filename) {\n return splitWindowsRe.exec(filename).slice(1);\n}\n\nwin32.parse = function(pathString) {\n if (typeof pathString !== 'string') {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = win32SplitPath(pathString);\n if (!allParts || allParts.length !== 5) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n return {\n root: allParts[1],\n dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1),\n base: allParts[2],\n ext: allParts[4],\n name: allParts[3]\n };\n};\n\n\n\n// Split a filename into [dir, root, basename, name, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^((\\/?)(?:[^\\/]*\\/)*)((\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))[\\/]*$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n return splitPathRe.exec(filename).slice(1);\n}\n\n\nposix.parse = function(pathString) {\n if (typeof pathString !== 'string') {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = posixSplitPath(pathString);\n if (!allParts || allParts.length !== 5) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n \n return {\n root: allParts[1],\n dir: allParts[0].slice(0, -1),\n base: allParts[2],\n ext: allParts[4],\n name: allParts[3],\n };\n};\n\n\nif (isWindows)\n module.exports = win32.parse;\nelse /* posix */\n module.exports = posix.parse;\n\nmodule.exports.posix = posix.parse;\nmodule.exports.win32 = win32.parse;\n","'use strict';\nconst {promisify} = require('util');\nconst fs = require('fs');\n\nasync function isType(fsStatType, statsMethodName, filePath) {\n\tif (typeof filePath !== 'string') {\n\t\tthrow new TypeError(`Expected a string, got ${typeof filePath}`);\n\t}\n\n\ttry {\n\t\tconst stats = await promisify(fs[fsStatType])(filePath);\n\t\treturn stats[statsMethodName]();\n\t} catch (error) {\n\t\tif (error.code === 'ENOENT') {\n\t\t\treturn false;\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n\nfunction isTypeSync(fsStatType, statsMethodName, filePath) {\n\tif (typeof filePath !== 'string') {\n\t\tthrow new TypeError(`Expected a string, got ${typeof filePath}`);\n\t}\n\n\ttry {\n\t\treturn fs[fsStatType](filePath)[statsMethodName]();\n\t} catch (error) {\n\t\tif (error.code === 'ENOENT') {\n\t\t\treturn false;\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n\nexports.isFile = isType.bind(null, 'stat', 'isFile');\nexports.isDirectory = isType.bind(null, 'stat', 'isDirectory');\nexports.isSymlink = isType.bind(null, 'lstat', 'isSymbolicLink');\nexports.isFileSync = isTypeSync.bind(null, 'statSync', 'isFile');\nexports.isDirectorySync = isTypeSync.bind(null, 'statSync', 'isDirectory');\nexports.isSymlinkSync = isTypeSync.bind(null, 'lstatSync', 'isSymbolicLink');\n","let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","'use strict';\n\nmodule.exports = require('./lib/picomatch');\n","'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\nconst DEFAULT_MAX_EXTGLOB_RECURSION = 0;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n __proto__: null,\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n DEFAULT_MAX_EXTGLOB_RECURSION,\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n __proto__: null,\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n SEP: path.sep,\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\nconst splitTopLevel = input => {\n const parts = [];\n let bracket = 0;\n let paren = 0;\n let quote = 0;\n let value = '';\n let escaped = false;\n\n for (const ch of input) {\n if (escaped === true) {\n value += ch;\n escaped = false;\n continue;\n }\n\n if (ch === '\\\\') {\n value += ch;\n escaped = true;\n continue;\n }\n\n if (ch === '\"') {\n quote = quote === 1 ? 0 : 1;\n value += ch;\n continue;\n }\n\n if (quote === 0) {\n if (ch === '[') {\n bracket++;\n } else if (ch === ']' && bracket > 0) {\n bracket--;\n } else if (bracket === 0) {\n if (ch === '(') {\n paren++;\n } else if (ch === ')' && paren > 0) {\n paren--;\n } else if (ch === '|' && paren === 0) {\n parts.push(value);\n value = '';\n continue;\n }\n }\n }\n\n value += ch;\n }\n\n parts.push(value);\n return parts;\n};\n\nconst isPlainBranch = branch => {\n let escaped = false;\n\n for (const ch of branch) {\n if (escaped === true) {\n escaped = false;\n continue;\n }\n\n if (ch === '\\\\') {\n escaped = true;\n continue;\n }\n\n if (/[?*+@!()[\\]{}]/.test(ch)) {\n return false;\n }\n }\n\n return true;\n};\n\nconst normalizeSimpleBranch = branch => {\n let value = branch.trim();\n let changed = true;\n\n while (changed === true) {\n changed = false;\n\n if (/^@\\([^\\\\()[\\]{}|]+\\)$/.test(value)) {\n value = value.slice(2, -1);\n changed = true;\n }\n }\n\n if (!isPlainBranch(value)) {\n return;\n }\n\n return value.replace(/\\\\(.)/g, '$1');\n};\n\nconst hasRepeatedCharPrefixOverlap = branches => {\n const values = branches.map(normalizeSimpleBranch).filter(Boolean);\n\n for (let i = 0; i < values.length; i++) {\n for (let j = i + 1; j < values.length; j++) {\n const a = values[i];\n const b = values[j];\n const char = a[0];\n\n if (!char || a !== char.repeat(a.length) || b !== char.repeat(b.length)) {\n continue;\n }\n\n if (a === b || a.startsWith(b) || b.startsWith(a)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst parseRepeatedExtglob = (pattern, requireEnd = true) => {\n if ((pattern[0] !== '+' && pattern[0] !== '*') || pattern[1] !== '(') {\n return;\n }\n\n let bracket = 0;\n let paren = 0;\n let quote = 0;\n let escaped = false;\n\n for (let i = 1; i < pattern.length; i++) {\n const ch = pattern[i];\n\n if (escaped === true) {\n escaped = false;\n continue;\n }\n\n if (ch === '\\\\') {\n escaped = true;\n continue;\n }\n\n if (ch === '\"') {\n quote = quote === 1 ? 0 : 1;\n continue;\n }\n\n if (quote === 1) {\n continue;\n }\n\n if (ch === '[') {\n bracket++;\n continue;\n }\n\n if (ch === ']' && bracket > 0) {\n bracket--;\n continue;\n }\n\n if (bracket > 0) {\n continue;\n }\n\n if (ch === '(') {\n paren++;\n continue;\n }\n\n if (ch === ')') {\n paren--;\n\n if (paren === 0) {\n if (requireEnd === true && i !== pattern.length - 1) {\n return;\n }\n\n return {\n type: pattern[0],\n body: pattern.slice(2, i),\n end: i\n };\n }\n }\n }\n};\n\nconst getStarExtglobSequenceOutput = pattern => {\n let index = 0;\n const chars = [];\n\n while (index < pattern.length) {\n const match = parseRepeatedExtglob(pattern.slice(index), false);\n\n if (!match || match.type !== '*') {\n return;\n }\n\n const branches = splitTopLevel(match.body).map(branch => branch.trim());\n if (branches.length !== 1) {\n return;\n }\n\n const branch = normalizeSimpleBranch(branches[0]);\n if (!branch || branch.length !== 1) {\n return;\n }\n\n chars.push(branch);\n index += match.end + 1;\n }\n\n if (chars.length < 1) {\n return;\n }\n\n const source = chars.length === 1\n ? utils.escapeRegex(chars[0])\n : `[${chars.map(ch => utils.escapeRegex(ch)).join('')}]`;\n\n return `${source}*`;\n};\n\nconst repeatedExtglobRecursion = pattern => {\n let depth = 0;\n let value = pattern.trim();\n let match = parseRepeatedExtglob(value);\n\n while (match) {\n depth++;\n value = match.body.trim();\n match = parseRepeatedExtglob(value);\n }\n\n return depth;\n};\n\nconst analyzeRepeatedExtglob = (body, options) => {\n if (options.maxExtglobRecursion === false) {\n return { risky: false };\n }\n\n const max =\n typeof options.maxExtglobRecursion === 'number'\n ? options.maxExtglobRecursion\n : constants.DEFAULT_MAX_EXTGLOB_RECURSION;\n\n const branches = splitTopLevel(body).map(branch => branch.trim());\n\n if (branches.length > 1) {\n if (\n branches.some(branch => branch === '') ||\n branches.some(branch => /^[*?]+$/.test(branch)) ||\n hasRepeatedCharPrefixOverlap(branches)\n ) {\n return { risky: true };\n }\n }\n\n for (const branch of branches) {\n const safeOutput = getStarExtglobSequenceOutput(branch);\n if (safeOutput) {\n return { risky: true, safeOutput };\n }\n\n if (repeatedExtglobRecursion(branch) > max) {\n return { risky: true };\n }\n }\n\n return { risky: false };\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const PLATFORM_CHARS = constants.globChars(win32);\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = opts => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index] || '';\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren') {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.value += tok.value;\n prev.output = (prev.output || '') + tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n token.startIndex = state.index;\n token.tokensIndex = tokens.length;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n const literal = input.slice(token.startIndex, state.index + 1);\n const body = input.slice(token.startIndex + 2, state.index);\n const analysis = analyzeRepeatedExtglob(body, opts);\n\n if ((token.type === 'plus' || token.type === 'star') && analysis.risky) {\n const safeOutput = analysis.safeOutput\n ? (token.output ? '' : ONE_CHAR) + (opts.capture ? `(${analysis.safeOutput})` : analysis.safeOutput)\n : undefined;\n const open = tokens[token.tokensIndex];\n\n open.type = 'text';\n open.value = literal;\n open.output = safeOutput || utils.escapeRegex(literal);\n\n for (let i = token.tokensIndex + 1; i < tokens.length; i++) {\n tokens[i].value = '';\n tokens[i].output = '';\n delete tokens[i].suffix;\n }\n\n state.output = token.output + open.output;\n state.backtrack = true;\n\n push({ type: 'paren', extglob: true, value, output: '' });\n decrement('parens');\n return;\n }\n\n let output = token.close + (opts.capture ? ')' : '');\n let rest;\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n // In this case, we need to parse the string and use it in the output of the original pattern.\n // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n //\n // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n output = token.close = `)${expression})${extglobStar})`;\n }\n\n if (token.prev.type === 'bos') {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance();\n } else {\n value += advance();\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if (next === '<' && !utils.supportsLookbehinds()) {\n throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n }\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars(win32);\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = opts => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = utils.isWindows(options);\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return state.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${state.output})${append}`;\n if (state && state.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = state;\n }\n\n return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n let parsed = { negated: false, fastpaths: true };\n\n if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n parsed.output = parse.fastpaths(input, options);\n }\n\n if (!parsed.output) {\n parsed = parse(input, options);\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let negatedExtglob = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n if (code === CHAR_EXCLAMATION_MARK && index === start) {\n negatedExtglob = true;\n }\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated,\n negatedExtglob\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n","'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.supportsLookbehinds = () => {\n const segs = process.version.slice(1).split('.').map(Number);\n if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n return true;\n }\n return false;\n};\n\nexports.isWindows = options => {\n if (options && typeof options.windows === 'boolean') {\n return options.windows;\n }\n return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n","'use strict';\n\nconst processFn = (fn, options) => function (...args) {\n\tconst P = options.promiseModule;\n\n\treturn new P((resolve, reject) => {\n\t\tif (options.multiArgs) {\n\t\t\targs.push((...result) => {\n\t\t\t\tif (options.errorFirst) {\n\t\t\t\t\tif (result[0]) {\n\t\t\t\t\t\treject(result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.shift();\n\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (options.errorFirst) {\n\t\t\targs.push((error, result) => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\targs.push(resolve);\n\t\t}\n\n\t\tfn.apply(this, args);\n\t});\n};\n\nmodule.exports = (input, options) => {\n\toptions = Object.assign({\n\t\texclude: [/.+(Sync|Stream)$/],\n\t\terrorFirst: true,\n\t\tpromiseModule: Promise\n\t}, options);\n\n\tconst objType = typeof input;\n\tif (!(input !== null && (objType === 'object' || objType === 'function'))) {\n\t\tthrow new TypeError(`Expected \\`input\\` to be a \\`Function\\` or \\`Object\\`, got \\`${input === null ? 'null' : objType}\\``);\n\t}\n\n\tconst filter = key => {\n\t\tconst match = pattern => typeof pattern === 'string' ? key === pattern : pattern.test(key);\n\t\treturn options.include ? options.include.some(match) : !options.exclude.some(match);\n\t};\n\n\tlet ret;\n\tif (objType === 'function') {\n\t\tret = function (...args) {\n\t\t\treturn options.excludeMain ? input(...args) : processFn(input, options).apply(this, args);\n\t\t};\n\t} else {\n\t\tret = Object.create(Object.getPrototypeOf(input));\n\t}\n\n\tfor (const key in input) { // eslint-disable-line guard-for-in\n\t\tconst property = input[key];\n\t\tret[key] = typeof property === 'function' && filter(key) ? processFn(property, options) : property;\n\t}\n\n\treturn ret;\n};\n","var once = require('once')\nvar eos = require('end-of-stream')\nvar fs = require('fs') // we only need fs to get the ReadStream and WriteStream prototypes\n\nvar noop = function () {}\nvar ancient = /^v?\\.0/.test(process.version)\n\nvar isFn = function (fn) {\n return typeof fn === 'function'\n}\n\nvar isFS = function (stream) {\n if (!ancient) return false // newer node version do not need to care about fs is a special way\n if (!fs) return false // browser\n return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close)\n}\n\nvar isRequest = function (stream) {\n return stream.setHeader && isFn(stream.abort)\n}\n\nvar destroyer = function (stream, reading, writing, callback) {\n callback = once(callback)\n\n var closed = false\n stream.on('close', function () {\n closed = true\n })\n\n eos(stream, {readable: reading, writable: writing}, function (err) {\n if (err) return callback(err)\n closed = true\n callback()\n })\n\n var destroyed = false\n return function (err) {\n if (closed) return\n if (destroyed) return\n destroyed = true\n\n if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks\n if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want\n\n if (isFn(stream.destroy)) return stream.destroy()\n\n callback(err || new Error('stream was destroyed'))\n }\n}\n\nvar call = function (fn) {\n fn()\n}\n\nvar pipe = function (from, to) {\n return from.pipe(to)\n}\n\nvar pump = function () {\n var streams = Array.prototype.slice.call(arguments)\n var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop\n\n if (Array.isArray(streams[0])) streams = streams[0]\n if (streams.length < 2) throw new Error('pump requires two streams per minimum')\n\n var error\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1\n var writing = i > 0\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err\n if (err) destroys.forEach(call)\n if (reading) return\n destroys.forEach(call)\n callback(error)\n })\n })\n\n return streams.reduce(pipe)\n}\n\nmodule.exports = pump\n","/*! queue-microtask. MIT License. Feross Aboukhadijeh */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n","'use strict';\nconst {promisify} = require('util');\nconst fs = require('fs');\nconst path = require('path');\nconst parseJson = require('parse-json');\n\nconst readFileAsync = promisify(fs.readFile);\n\nmodule.exports = async options => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tnormalize: true,\n\t\t...options\n\t};\n\n\tconst filePath = path.resolve(options.cwd, 'package.json');\n\tconst json = parseJson(await readFileAsync(filePath, 'utf8'));\n\n\tif (options.normalize) {\n\t\trequire('normalize-package-data')(json);\n\t}\n\n\treturn json;\n};\n\nmodule.exports.sync = options => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tnormalize: true,\n\t\t...options\n\t};\n\n\tconst filePath = path.resolve(options.cwd, 'package.json');\n\tconst json = parseJson(fs.readFileSync(filePath, 'utf8'));\n\n\tif (options.normalize) {\n\t\trequire('normalize-package-data')(json);\n\t}\n\n\treturn json;\n};\n","var async = require('./lib/async');\nasync.core = require('./lib/core');\nasync.isCore = require('./lib/is-core');\nasync.sync = require('./lib/sync');\n\nmodule.exports = async;\n","var fs = require('fs');\nvar getHomedir = require('./homedir');\nvar path = require('path');\nvar caller = require('./caller');\nvar nodeModulesPaths = require('./node-modules-paths');\nvar normalizeOptions = require('./normalize-options');\nvar isCore = require('is-core-module');\n\nvar realpathFS = process.platform !== 'win32' && fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath;\n\nvar relativePathRegex = /^(?:\\.\\.?(?:\\/|$)|\\/|([A-Za-z]:)?[/\\\\])/;\nvar windowsDriveRegex = /^\\w:[/\\\\]*$/;\nvar nodeModulesRegex = /[/\\\\]node_modules[/\\\\]*$/;\n\nvar homedir = getHomedir();\nvar defaultPaths = function () {\n return [\n path.join(homedir, '.node_modules'),\n path.join(homedir, '.node_libraries')\n ];\n};\n\nvar defaultIsFile = function isFile(file, cb) {\n fs.stat(file, function (err, stat) {\n if (!err) {\n return cb(null, stat.isFile() || stat.isFIFO());\n }\n if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);\n return cb(err);\n });\n};\n\nvar defaultIsDir = function isDirectory(dir, cb) {\n fs.stat(dir, function (err, stat) {\n if (!err) {\n return cb(null, stat.isDirectory());\n }\n if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);\n return cb(err);\n });\n};\n\nvar defaultRealpath = function realpath(x, cb) {\n realpathFS(x, function (realpathErr, realPath) {\n if (realpathErr && realpathErr.code !== 'ENOENT') cb(realpathErr);\n else cb(null, realpathErr ? x : realPath);\n });\n};\n\nvar maybeRealpath = function maybeRealpath(realpath, x, opts, cb) {\n if (opts && opts.preserveSymlinks === false) {\n realpath(x, cb);\n } else {\n cb(null, x);\n }\n};\n\nvar defaultReadPackage = function defaultReadPackage(readFile, pkgfile, cb) {\n readFile(pkgfile, function (readFileErr, body) {\n if (readFileErr) cb(readFileErr);\n else {\n try {\n var pkg = JSON.parse(body);\n cb(null, pkg);\n } catch (jsonErr) {\n cb(null);\n }\n }\n });\n};\n\nvar getPackageCandidates = function getPackageCandidates(x, start, opts) {\n var dirs = nodeModulesPaths(start, opts, x);\n for (var i = 0; i < dirs.length; i++) {\n dirs[i] = path.join(dirs[i], x);\n }\n return dirs;\n};\n\nmodule.exports = function resolve(x, options, callback) {\n var cb = callback;\n var opts = options;\n if (typeof options === 'function') {\n cb = opts;\n opts = {};\n }\n if (typeof x !== 'string') {\n var err = new TypeError('Path must be a string.');\n return process.nextTick(function () {\n cb(err);\n });\n }\n\n opts = normalizeOptions(x, opts);\n\n var isFile = opts.isFile || defaultIsFile;\n var isDirectory = opts.isDirectory || defaultIsDir;\n var readFile = opts.readFile || fs.readFile;\n var realpath = opts.realpath || defaultRealpath;\n var readPackage = opts.readPackage || defaultReadPackage;\n if (opts.readFile && opts.readPackage) {\n var conflictErr = new TypeError('`readFile` and `readPackage` are mutually exclusive.');\n return process.nextTick(function () {\n cb(conflictErr);\n });\n }\n var packageIterator = opts.packageIterator;\n\n var extensions = opts.extensions || ['.js'];\n var includeCoreModules = opts.includeCoreModules !== false;\n var basedir = opts.basedir || path.dirname(caller());\n var parent = opts.filename || basedir;\n\n opts.paths = opts.paths || defaultPaths();\n\n // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory\n var absoluteStart = path.resolve(basedir);\n\n maybeRealpath(\n realpath,\n absoluteStart,\n opts,\n function (err, realStart) {\n if (err) cb(err);\n else init(realStart);\n }\n );\n\n var res;\n function init(basedir) {\n if (relativePathRegex.test(x)) {\n res = path.resolve(basedir, x);\n if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/';\n if (x.slice(-1) === '/' && res === basedir) {\n loadAsDirectory(res, opts.package, onfile);\n } else loadAsFile(res, opts.package, onfile);\n } else if (includeCoreModules && isCore(x)) {\n return cb(null, x);\n } else loadNodeModules(x, basedir, function (err, n, pkg) {\n if (err) cb(err);\n else if (n) {\n return maybeRealpath(realpath, n, opts, function (err, realN) {\n if (err) {\n cb(err);\n } else {\n cb(null, realN, pkg);\n }\n });\n } else {\n var moduleError = new Error(\"Cannot find module '\" + x + \"' from '\" + parent + \"'\");\n moduleError.code = 'MODULE_NOT_FOUND';\n cb(moduleError);\n }\n });\n }\n\n function onfile(err, m, pkg) {\n if (err) cb(err);\n else if (m) cb(null, m, pkg);\n else loadAsDirectory(res, function (err, d, pkg) {\n if (err) cb(err);\n else if (d) {\n maybeRealpath(realpath, d, opts, function (err, realD) {\n if (err) {\n cb(err);\n } else {\n cb(null, realD, pkg);\n }\n });\n } else {\n var moduleError = new Error(\"Cannot find module '\" + x + \"' from '\" + parent + \"'\");\n moduleError.code = 'MODULE_NOT_FOUND';\n cb(moduleError);\n }\n });\n }\n\n function loadAsFile(x, thePackage, callback) {\n var loadAsFilePackage = thePackage;\n var cb = callback;\n if (typeof loadAsFilePackage === 'function') {\n cb = loadAsFilePackage;\n loadAsFilePackage = undefined;\n }\n\n var exts = [''].concat(extensions);\n load(exts, x, loadAsFilePackage);\n\n function load(exts, x, loadPackage) {\n if (exts.length === 0) return cb(null, undefined, loadPackage);\n var file = x + exts[0];\n\n var pkg = loadPackage;\n if (pkg) onpkg(null, pkg);\n else loadpkg(path.dirname(file), onpkg);\n\n function onpkg(err, pkg_, dir) {\n pkg = pkg_;\n if (err) return cb(err);\n if (dir && pkg && opts.pathFilter) {\n var rfile = path.relative(dir, file);\n var rel = rfile.slice(0, rfile.length - exts[0].length);\n var r = opts.pathFilter(pkg, x, rel);\n if (r) return load(\n [''].concat(extensions.slice()),\n path.resolve(dir, r),\n pkg\n );\n }\n isFile(file, onex);\n }\n function onex(err, ex) {\n if (err) return cb(err);\n if (ex) return cb(null, file, pkg);\n load(exts.slice(1), x, pkg);\n }\n }\n }\n\n function loadpkg(dir, cb) {\n if (dir === '' || dir === '/') return cb(null);\n if (process.platform === 'win32' && windowsDriveRegex.test(dir)) {\n return cb(null);\n }\n if (nodeModulesRegex.test(dir)) return cb(null);\n\n maybeRealpath(realpath, dir, opts, function (unwrapErr, pkgdir) {\n if (unwrapErr) return loadpkg(path.dirname(dir), cb);\n var pkgfile = path.join(pkgdir, 'package.json');\n isFile(pkgfile, function (err, ex) {\n // on err, ex is false\n if (!ex) return loadpkg(path.dirname(dir), cb);\n\n readPackage(readFile, pkgfile, function (err, pkgParam) {\n if (err) cb(err);\n\n var pkg = pkgParam;\n\n if (pkg && opts.packageFilter) {\n pkg = opts.packageFilter(pkg, pkgfile);\n }\n cb(null, pkg, dir);\n });\n });\n });\n }\n\n function loadAsDirectory(x, loadAsDirectoryPackage, callback) {\n var cb = callback;\n var fpkg = loadAsDirectoryPackage;\n if (typeof fpkg === 'function') {\n cb = fpkg;\n fpkg = opts.package;\n }\n\n maybeRealpath(realpath, x, opts, function (unwrapErr, pkgdir) {\n if (unwrapErr) return cb(unwrapErr);\n var pkgfile = path.join(pkgdir, 'package.json');\n isFile(pkgfile, function (err, ex) {\n if (err) return cb(err);\n if (!ex) return loadAsFile(path.join(x, 'index'), fpkg, cb);\n\n readPackage(readFile, pkgfile, function (err, pkgParam) {\n if (err) return cb(err);\n\n var pkg = pkgParam;\n\n if (pkg && opts.packageFilter) {\n pkg = opts.packageFilter(pkg, pkgfile);\n }\n\n if (pkg && pkg.main) {\n if (typeof pkg.main !== 'string') {\n var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string');\n mainError.code = 'INVALID_PACKAGE_MAIN';\n return cb(mainError);\n }\n if (pkg.main === '.' || pkg.main === './') {\n pkg.main = 'index';\n }\n loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) {\n if (err) return cb(err);\n if (m) return cb(null, m, pkg);\n if (!pkg) return loadAsFile(path.join(x, 'index'), pkg, cb);\n\n var dir = path.resolve(x, pkg.main);\n loadAsDirectory(dir, pkg, function (err, n, pkg) {\n if (err) return cb(err);\n if (n) return cb(null, n, pkg);\n loadAsFile(path.join(x, 'index'), pkg, cb);\n });\n });\n return;\n }\n\n loadAsFile(path.join(x, '/index'), pkg, cb);\n });\n });\n });\n }\n\n function processDirs(cb, dirs) {\n if (dirs.length === 0) return cb(null, undefined);\n var dir = dirs[0];\n\n isDirectory(path.dirname(dir), isdir);\n\n function isdir(err, isdir) {\n if (err) return cb(err);\n if (!isdir) return processDirs(cb, dirs.slice(1));\n loadAsFile(dir, opts.package, onfile);\n }\n\n function onfile(err, m, pkg) {\n if (err) return cb(err);\n if (m) return cb(null, m, pkg);\n loadAsDirectory(dir, opts.package, ondir);\n }\n\n function ondir(err, n, pkg) {\n if (err) return cb(err);\n if (n) return cb(null, n, pkg);\n processDirs(cb, dirs.slice(1));\n }\n }\n function loadNodeModules(x, start, cb) {\n var thunk = function () { return getPackageCandidates(x, start, opts); };\n processDirs(\n cb,\n packageIterator ? packageIterator(x, start, thunk, opts) : thunk()\n );\n }\n};\n","module.exports = function () {\n // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi\n var origPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = function (_, stack) { return stack; };\n var stack = (new Error()).stack;\n Error.prepareStackTrace = origPrepareStackTrace;\n return stack[2].getFileName();\n};\n","'use strict';\n\nvar isCoreModule = require('is-core-module');\nvar data = require('./core.json');\n\nvar core = {};\nfor (var mod in data) { // eslint-disable-line no-restricted-syntax\n if (Object.prototype.hasOwnProperty.call(data, mod)) {\n core[mod] = isCoreModule(mod);\n }\n}\nmodule.exports = core;\n","'use strict';\n\nvar os = require('os');\n\n// adapted from https://github.com/sindresorhus/os-homedir/blob/11e089f4754db38bb535e5a8416320c4446e8cfd/index.js\n\nmodule.exports = os.homedir || function homedir() {\n var home = process.env.HOME;\n var user = process.env.LOGNAME || process.env.USER || process.env.LNAME || process.env.USERNAME;\n\n if (process.platform === 'win32') {\n return process.env.USERPROFILE || process.env.HOMEDRIVE + process.env.HOMEPATH || home || null;\n }\n\n if (process.platform === 'darwin') {\n return home || (user ? '/Users/' + user : null);\n }\n\n if (process.platform === 'linux') {\n return home || (process.getuid() === 0 ? '/root' : (user ? '/home/' + user : null)); // eslint-disable-line no-extra-parens\n }\n\n return home || null;\n};\n","var isCoreModule = require('is-core-module');\n\nmodule.exports = function isCore(x) {\n return isCoreModule(x);\n};\n","var path = require('path');\nvar parse = path.parse || require('path-parse'); // eslint-disable-line global-require\n\nvar driveLetterRegex = /^([A-Za-z]:)/;\nvar uncPathRegex = /^\\\\\\\\/;\n\nvar getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) {\n var prefix = '/';\n if (driveLetterRegex.test(absoluteStart)) {\n prefix = '';\n } else if (uncPathRegex.test(absoluteStart)) {\n prefix = '\\\\\\\\';\n }\n\n var paths = [absoluteStart];\n var parsed = parse(absoluteStart);\n while (parsed.dir !== paths[paths.length - 1]) {\n paths.push(parsed.dir);\n parsed = parse(parsed.dir);\n }\n\n return paths.reduce(function (dirs, aPath) {\n return dirs.concat(modules.map(function (moduleDir) {\n return path.resolve(prefix, aPath, moduleDir);\n }));\n }, []);\n};\n\nmodule.exports = function nodeModulesPaths(start, opts, request) {\n var modules = opts && opts.moduleDirectory\n ? [].concat(opts.moduleDirectory)\n : ['node_modules'];\n\n if (opts && typeof opts.paths === 'function') {\n return opts.paths(\n request,\n start,\n function () { return getNodeModulesDirs(start, modules); },\n opts\n );\n }\n\n var dirs = getNodeModulesDirs(start, modules);\n return opts && opts.paths ? dirs.concat(opts.paths) : dirs;\n};\n","module.exports = function (x, opts) {\n /**\n * This file is purposefully a passthrough. It's expected that third-party\n * environments will override it at runtime in order to inject special logic\n * into `resolve` (by manipulating the options). One such example is the PnP\n * code path in Yarn.\n */\n\n return opts || {};\n};\n","var isCore = require('is-core-module');\nvar fs = require('fs');\nvar path = require('path');\nvar getHomedir = require('./homedir');\nvar caller = require('./caller');\nvar nodeModulesPaths = require('./node-modules-paths');\nvar normalizeOptions = require('./normalize-options');\n\nvar realpathFS = process.platform !== 'win32' && fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync;\n\nvar relativePathRegex = /^(?:\\.\\.?(?:\\/|$)|\\/|([A-Za-z]:)?[/\\\\])/;\nvar windowsDriveRegex = /^\\w:[/\\\\]*$/;\nvar nodeModulesRegex = /[/\\\\]node_modules[/\\\\]*$/;\n\nvar homedir = getHomedir();\nvar defaultPaths = function () {\n return [\n path.join(homedir, '.node_modules'),\n path.join(homedir, '.node_libraries')\n ];\n};\n\nvar defaultIsFile = function isFile(file) {\n try {\n var stat = fs.statSync(file, { throwIfNoEntry: false });\n } catch (e) {\n if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;\n throw e;\n }\n return !!stat && (stat.isFile() || stat.isFIFO());\n};\n\nvar defaultIsDir = function isDirectory(dir) {\n try {\n var stat = fs.statSync(dir, { throwIfNoEntry: false });\n } catch (e) {\n if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;\n throw e;\n }\n return !!stat && stat.isDirectory();\n};\n\nvar defaultRealpathSync = function realpathSync(x) {\n try {\n return realpathFS(x);\n } catch (realpathErr) {\n if (realpathErr.code !== 'ENOENT') {\n throw realpathErr;\n }\n }\n return x;\n};\n\nvar maybeRealpathSync = function maybeRealpathSync(realpathSync, x, opts) {\n if (opts && opts.preserveSymlinks === false) {\n return realpathSync(x);\n }\n return x;\n};\n\nvar defaultReadPackageSync = function defaultReadPackageSync(readFileSync, pkgfile) {\n var body = readFileSync(pkgfile);\n try {\n var pkg = JSON.parse(body);\n return pkg;\n } catch (jsonErr) {}\n};\n\nvar getPackageCandidates = function getPackageCandidates(x, start, opts) {\n var dirs = nodeModulesPaths(start, opts, x);\n for (var i = 0; i < dirs.length; i++) {\n dirs[i] = path.join(dirs[i], x);\n }\n return dirs;\n};\n\nmodule.exports = function resolveSync(x, options) {\n if (typeof x !== 'string') {\n throw new TypeError('Path must be a string.');\n }\n var opts = normalizeOptions(x, options);\n\n var isFile = opts.isFile || defaultIsFile;\n var readFileSync = opts.readFileSync || fs.readFileSync;\n var isDirectory = opts.isDirectory || defaultIsDir;\n var realpathSync = opts.realpathSync || defaultRealpathSync;\n var readPackageSync = opts.readPackageSync || defaultReadPackageSync;\n if (opts.readFileSync && opts.readPackageSync) {\n throw new TypeError('`readFileSync` and `readPackageSync` are mutually exclusive.');\n }\n var packageIterator = opts.packageIterator;\n\n var extensions = opts.extensions || ['.js'];\n var includeCoreModules = opts.includeCoreModules !== false;\n var basedir = opts.basedir || path.dirname(caller());\n var parent = opts.filename || basedir;\n\n opts.paths = opts.paths || defaultPaths();\n\n // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory\n var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts);\n\n if (relativePathRegex.test(x)) {\n var res = path.resolve(absoluteStart, x);\n if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/';\n var m = loadAsFileSync(res) || loadAsDirectorySync(res);\n if (m) return maybeRealpathSync(realpathSync, m, opts);\n } else if (includeCoreModules && isCore(x)) {\n return x;\n } else {\n var n = loadNodeModulesSync(x, absoluteStart);\n if (n) return maybeRealpathSync(realpathSync, n, opts);\n }\n\n var err = new Error(\"Cannot find module '\" + x + \"' from '\" + parent + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n\n function loadAsFileSync(x) {\n var pkg = loadpkg(path.dirname(x));\n\n if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) {\n var rfile = path.relative(pkg.dir, x);\n var r = opts.pathFilter(pkg.pkg, x, rfile);\n if (r) {\n x = path.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign\n }\n }\n\n if (isFile(x)) {\n return x;\n }\n\n for (var i = 0; i < extensions.length; i++) {\n var file = x + extensions[i];\n if (isFile(file)) {\n return file;\n }\n }\n }\n\n function loadpkg(dir) {\n if (dir === '' || dir === '/') return;\n if (process.platform === 'win32' && windowsDriveRegex.test(dir)) {\n return;\n }\n if (nodeModulesRegex.test(dir)) return;\n\n var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), 'package.json');\n\n if (!isFile(pkgfile)) {\n return loadpkg(path.dirname(dir));\n }\n\n var pkg = readPackageSync(readFileSync, pkgfile);\n\n if (pkg && opts.packageFilter) {\n // v2 will pass pkgfile\n pkg = opts.packageFilter(pkg, /*pkgfile,*/ dir); // eslint-disable-line spaced-comment\n }\n\n return { pkg: pkg, dir: dir };\n }\n\n function loadAsDirectorySync(x) {\n var pkgfile = path.join(maybeRealpathSync(realpathSync, x, opts), '/package.json');\n if (isFile(pkgfile)) {\n try {\n var pkg = readPackageSync(readFileSync, pkgfile);\n } catch (e) {}\n\n if (pkg && opts.packageFilter) {\n // v2 will pass pkgfile\n pkg = opts.packageFilter(pkg, /*pkgfile,*/ x); // eslint-disable-line spaced-comment\n }\n\n if (pkg && pkg.main) {\n if (typeof pkg.main !== 'string') {\n var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string');\n mainError.code = 'INVALID_PACKAGE_MAIN';\n throw mainError;\n }\n if (pkg.main === '.' || pkg.main === './') {\n pkg.main = 'index';\n }\n try {\n var m = loadAsFileSync(path.resolve(x, pkg.main));\n if (m) return m;\n var n = loadAsDirectorySync(path.resolve(x, pkg.main));\n if (n) return n;\n } catch (e) {}\n }\n }\n\n return loadAsFileSync(path.join(x, '/index'));\n }\n\n function loadNodeModulesSync(x, start) {\n var thunk = function () { return getPackageCandidates(x, start, opts); };\n var dirs = packageIterator ? packageIterator(x, start, thunk, opts) : thunk();\n\n for (var i = 0; i < dirs.length; i++) {\n var dir = dirs[i];\n if (isDirectory(path.dirname(dir))) {\n var m = loadAsFileSync(dir);\n if (m) return m;\n var n = loadAsDirectorySync(dir);\n if (n) return n;\n }\n }\n }\n};\n","'use strict';\nconst onetime = require('onetime');\nconst signalExit = require('signal-exit');\n\nmodule.exports = onetime(() => {\n\tsignalExit(() => {\n\t\tprocess.stderr.write('\\u001B[?25h');\n\t}, {alwaysLast: true});\n});\n","'use strict'\n\nfunction reusify (Constructor) {\n var head = new Constructor()\n var tail = head\n\n function get () {\n var current = head\n\n if (current.next) {\n head = current.next\n } else {\n head = new Constructor()\n tail = head\n }\n\n current.next = null\n\n return current\n }\n\n function release (obj) {\n tail.next = obj\n tail = obj\n }\n\n return {\n get: get,\n release: release\n }\n}\n\nmodule.exports = reusify\n","/*! run-parallel. MIT License. Feross Aboukhadijeh */\nmodule.exports = runParallel\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallel (tasks, cb) {\n let results, pending, keys\n let isSync = true\n\n if (Array.isArray(tasks)) {\n results = []\n pending = tasks.length\n } else {\n keys = Object.keys(tasks)\n results = {}\n pending = keys.length\n }\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n cb = null\n }\n if (isSync) queueMicrotask(end)\n else end()\n }\n\n function each (i, err, result) {\n results[i] = result\n if (--pending === 0 || err) {\n done(err)\n }\n }\n\n if (!pending) {\n // empty\n done(null)\n } else if (keys) {\n // object\n keys.forEach(function (key) {\n tasks[key](function (err, result) { each(key, err, result) })\n })\n } else {\n // array\n tasks.forEach(function (task, i) {\n task(function (err, result) { each(i, err, result) })\n })\n }\n\n isSync = false\n}\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport { Observable } from './internal/Observable';\nexport { ConnectableObservable } from './internal/observable/ConnectableObservable';\nexport { GroupedObservable } from './internal/operators/groupBy';\nexport { observable } from './internal/symbol/observable';\nexport { Subject } from './internal/Subject';\nexport { BehaviorSubject } from './internal/BehaviorSubject';\nexport { ReplaySubject } from './internal/ReplaySubject';\nexport { AsyncSubject } from './internal/AsyncSubject';\nexport { asap, asapScheduler } from './internal/scheduler/asap';\nexport { async, asyncScheduler } from './internal/scheduler/async';\nexport { queue, queueScheduler } from './internal/scheduler/queue';\nexport { animationFrame, animationFrameScheduler } from './internal/scheduler/animationFrame';\nexport { VirtualTimeScheduler, VirtualAction } from './internal/scheduler/VirtualTimeScheduler';\nexport { Scheduler } from './internal/Scheduler';\nexport { Subscription } from './internal/Subscription';\nexport { Subscriber } from './internal/Subscriber';\nexport { Notification, NotificationKind } from './internal/Notification';\nexport { pipe } from './internal/util/pipe';\nexport { noop } from './internal/util/noop';\nexport { identity } from './internal/util/identity';\nexport { isObservable } from './internal/util/isObservable';\nexport { ArgumentOutOfRangeError } from './internal/util/ArgumentOutOfRangeError';\nexport { EmptyError } from './internal/util/EmptyError';\nexport { ObjectUnsubscribedError } from './internal/util/ObjectUnsubscribedError';\nexport { UnsubscriptionError } from './internal/util/UnsubscriptionError';\nexport { TimeoutError } from './internal/util/TimeoutError';\nexport { bindCallback } from './internal/observable/bindCallback';\nexport { bindNodeCallback } from './internal/observable/bindNodeCallback';\nexport { combineLatest } from './internal/observable/combineLatest';\nexport { concat } from './internal/observable/concat';\nexport { defer } from './internal/observable/defer';\nexport { empty } from './internal/observable/empty';\nexport { forkJoin } from './internal/observable/forkJoin';\nexport { from } from './internal/observable/from';\nexport { fromEvent } from './internal/observable/fromEvent';\nexport { fromEventPattern } from './internal/observable/fromEventPattern';\nexport { generate } from './internal/observable/generate';\nexport { iif } from './internal/observable/iif';\nexport { interval } from './internal/observable/interval';\nexport { merge } from './internal/observable/merge';\nexport { never } from './internal/observable/never';\nexport { of } from './internal/observable/of';\nexport { onErrorResumeNext } from './internal/observable/onErrorResumeNext';\nexport { pairs } from './internal/observable/pairs';\nexport { partition } from './internal/observable/partition';\nexport { race } from './internal/observable/race';\nexport { range } from './internal/observable/range';\nexport { throwError } from './internal/observable/throwError';\nexport { timer } from './internal/observable/timer';\nexport { using } from './internal/observable/using';\nexport { zip } from './internal/observable/zip';\nexport { scheduled } from './internal/scheduled/scheduled';\nexport { EMPTY } from './internal/observable/empty';\nexport { NEVER } from './internal/observable/never';\nexport { config } from './internal/config';\n//# sourceMappingURL=index.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { Subscription } from './Subscription';\nvar AsyncSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncSubject, _super);\n function AsyncSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.value = null;\n _this.hasNext = false;\n _this.hasCompleted = false;\n return _this;\n }\n AsyncSubject.prototype._subscribe = function (subscriber) {\n if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.hasCompleted && this.hasNext) {\n subscriber.next(this.value);\n subscriber.complete();\n return Subscription.EMPTY;\n }\n return _super.prototype._subscribe.call(this, subscriber);\n };\n AsyncSubject.prototype.next = function (value) {\n if (!this.hasCompleted) {\n this.value = value;\n this.hasNext = true;\n }\n };\n AsyncSubject.prototype.error = function (error) {\n if (!this.hasCompleted) {\n _super.prototype.error.call(this, error);\n }\n };\n AsyncSubject.prototype.complete = function () {\n this.hasCompleted = true;\n if (this.hasNext) {\n _super.prototype.next.call(this, this.value);\n }\n _super.prototype.complete.call(this);\n };\n return AsyncSubject;\n}(Subject));\nexport { AsyncSubject };\n//# sourceMappingURL=AsyncSubject.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_util_ObjectUnsubscribedError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nvar BehaviorSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: true,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(this._value);\n }\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n if (this.hasError) {\n throw this.thrownError;\n }\n else if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return this._value;\n }\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, this._value = value);\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar InnerSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(InnerSubscriber, _super);\n function InnerSubscriber(parent, outerValue, outerIndex) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.outerValue = outerValue;\n _this.outerIndex = outerIndex;\n _this.index = 0;\n return _this;\n }\n InnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n };\n InnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n };\n InnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n return InnerSubscriber;\n}(Subscriber));\nexport { InnerSubscriber };\n//# sourceMappingURL=InnerSubscriber.js.map\n","/** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */\nimport { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nexport var NotificationKind;\n/*@__PURE__*/ (function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nvar Notification = /*@__PURE__*/ (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n Notification.prototype.observe = function (observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n };\n Notification.prototype.do = function (next, error, complete) {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n };\n Notification.prototype.toObservable = function () {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n };\n Notification.createNext = function (value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n Notification.undefinedValueNotification = new Notification('N', undefined);\n return Notification;\n}());\nexport { Notification };\n//# sourceMappingURL=Notification.js.map\n","/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nvar Observable = /*@__PURE__*/ (function () {\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var source = this.source;\n return source && source.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n//# sourceMappingURL=Observable.js.map\n","/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport var empty = {\n closed: true,\n next: function (value) { },\n error: function (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar OuterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(OuterSubscriber, _super);\n function OuterSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n this.destination.error(error);\n };\n OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n this.destination.complete();\n };\n return OuterSubscriber;\n}(Subscriber));\nexport { OuterSubscriber };\n//# sourceMappingURL=OuterSubscriber.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_scheduler_queue,_Subscription,_operators_observeOn,_util_ObjectUnsubscribedError,_SubjectSubscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { queue } from './scheduler/queue';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nvar ReplaySubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ReplaySubject, _super);\n function ReplaySubject(bufferSize, windowTime, scheduler) {\n if (bufferSize === void 0) {\n bufferSize = Number.POSITIVE_INFINITY;\n }\n if (windowTime === void 0) {\n windowTime = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this) || this;\n _this.scheduler = scheduler;\n _this._events = [];\n _this._infiniteTimeWindow = false;\n _this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n _this._windowTime = windowTime < 1 ? 1 : windowTime;\n if (windowTime === Number.POSITIVE_INFINITY) {\n _this._infiniteTimeWindow = true;\n _this.next = _this.nextInfiniteTimeWindow;\n }\n else {\n _this.next = _this.nextTimeWindow;\n }\n return _this;\n }\n ReplaySubject.prototype.nextInfiniteTimeWindow = function (value) {\n if (!this.isStopped) {\n var _events = this._events;\n _events.push(value);\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n }\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype.nextTimeWindow = function (value) {\n if (!this.isStopped) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n }\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n var _infiniteTimeWindow = this._infiniteTimeWindow;\n var _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n var scheduler = this.scheduler;\n var len = _events.length;\n var subscription;\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n if (_infiniteTimeWindow) {\n for (var i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n }\n else {\n for (var i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i].value);\n }\n }\n if (this.hasError) {\n subscriber.error(this.thrownError);\n }\n else if (this.isStopped) {\n subscriber.complete();\n }\n return subscription;\n };\n ReplaySubject.prototype._getNow = function () {\n return (this.scheduler || queue).now();\n };\n ReplaySubject.prototype._trimBufferThenGetEvents = function () {\n var now = this._getNow();\n var _bufferSize = this._bufferSize;\n var _windowTime = this._windowTime;\n var _events = this._events;\n var eventsCount = _events.length;\n var spliceCount = 0;\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n return _events;\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\nvar ReplayEvent = /*@__PURE__*/ (function () {\n function ReplayEvent(time, value) {\n this.time = time;\n this.value = value;\n }\n return ReplayEvent;\n}());\n//# sourceMappingURL=ReplaySubject.js.map\n","var Scheduler = /*@__PURE__*/ (function () {\n function Scheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n return new this.SchedulerAction(this, work).schedule(state, delay);\n };\n Scheduler.now = function () { return Date.now(); };\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map\n","/** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nvar SubjectSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubjectSubscriber, _super);\n function SubjectSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n return _this;\n }\n return SubjectSubscriber;\n}(Subscriber));\nexport { SubjectSubscriber };\nvar Subject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.observers = [];\n _this.closed = false;\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype[rxSubscriberSymbol] = function () {\n return new SubjectSubscriber(this);\n };\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype.next = function (value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n };\n Subject.prototype.error = function (err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n };\n Subject.prototype.complete = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n };\n Subject.prototype._trySubscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return _super.prototype._trySubscribe.call(this, subscriber);\n }\n };\n Subject.prototype._subscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var destination = this.destination;\n if (destination && destination.next) {\n destination.next(value);\n }\n };\n AnonymousSubject.prototype.error = function (err) {\n var destination = this.destination;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n };\n AnonymousSubject.prototype.complete = function () {\n var destination = this.destination;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var source = this.source;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription.EMPTY;\n }\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from './Subscription';\nvar SubjectSubscription = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubjectSubscription, _super);\n function SubjectSubscription(subject, subscriber) {\n var _this = _super.call(this) || this;\n _this.subject = subject;\n _this.subscriber = subscriber;\n _this.closed = false;\n return _this;\n }\n SubjectSubscription.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.closed = true;\n var subject = this.subject;\n var observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n var subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n };\n return SubjectSubscription;\n}(Subscription));\nexport { SubjectSubscription };\n//# sourceMappingURL=SubjectSubscription.js.map\n","/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nvar Subscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subscriber, _super);\n function Subscriber(destinationOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this.syncErrorValue = null;\n _this.syncErrorThrown = false;\n _this.syncErrorThrowable = false;\n _this.isStopped = false;\n switch (arguments.length) {\n case 0:\n _this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n _this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n _this.destination = destinationOrNext;\n destinationOrNext.add(_this);\n }\n else {\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext);\n }\n break;\n }\n default:\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);\n break;\n }\n return _this;\n }\n Subscriber.prototype[rxSubscriberSymbol] = function () { return this; };\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _parentOrParents = this._parentOrParents;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar SafeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this._parentSubscriber = _parentSubscriber;\n var next;\n var context = _this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n _this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = _this.unsubscribe.bind(_this);\n }\n }\n _this._context = context;\n _this._next = next;\n _this._error = error;\n _this._complete = complete;\n return _this;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n var useDeprecatedSynchronousErrorHandling = config.useDeprecatedSynchronousErrorHandling;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\n//# sourceMappingURL=Subscriber.js.map\n","/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */\nimport { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nvar Subscription = /*@__PURE__*/ (function () {\n function Subscription(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._ctorUnsubscribe = true;\n this._unsubscribe = unsubscribe;\n }\n }\n Subscription.prototype.unsubscribe = function () {\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parentOrParents = _a._parentOrParents, _ctorUnsubscribe = _a._ctorUnsubscribe, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (var index = 0; index < _parentOrParents.length; ++index) {\n var parent_1 = _parentOrParents[index];\n parent_1.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n if (_ctorUnsubscribe) {\n this._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n var index = -1;\n var len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n };\n Subscription.prototype.add = function (teardown) {\n var subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n var _parentOrParents = subscription._parentOrParents;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n var subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n };\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexport { Subscription };\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport var config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n var error = /*@__PURE__*/ new Error();\n /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n//# sourceMappingURL=config.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Observable,_util_subscribeTo PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nimport { Observable } from './Observable';\nimport { subscribeTo } from './util/subscribeTo';\nvar SimpleInnerSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SimpleInnerSubscriber, _super);\n function SimpleInnerSubscriber(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n SimpleInnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(value);\n };\n SimpleInnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error);\n this.unsubscribe();\n };\n SimpleInnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete();\n this.unsubscribe();\n };\n return SimpleInnerSubscriber;\n}(Subscriber));\nexport { SimpleInnerSubscriber };\nvar ComplexInnerSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ComplexInnerSubscriber, _super);\n function ComplexInnerSubscriber(parent, outerValue, outerIndex) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.outerValue = outerValue;\n _this.outerIndex = outerIndex;\n return _this;\n }\n ComplexInnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this);\n };\n ComplexInnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error);\n this.unsubscribe();\n };\n ComplexInnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n return ComplexInnerSubscriber;\n}(Subscriber));\nexport { ComplexInnerSubscriber };\nvar SimpleOuterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SimpleOuterSubscriber, _super);\n function SimpleOuterSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SimpleOuterSubscriber.prototype.notifyNext = function (innerValue) {\n this.destination.next(innerValue);\n };\n SimpleOuterSubscriber.prototype.notifyError = function (err) {\n this.destination.error(err);\n };\n SimpleOuterSubscriber.prototype.notifyComplete = function () {\n this.destination.complete();\n };\n return SimpleOuterSubscriber;\n}(Subscriber));\nexport { SimpleOuterSubscriber };\nvar ComplexOuterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ComplexOuterSubscriber, _super);\n function ComplexOuterSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComplexOuterSubscriber.prototype.notifyNext = function (_outerValue, innerValue, _outerIndex, _innerSub) {\n this.destination.next(innerValue);\n };\n ComplexOuterSubscriber.prototype.notifyError = function (error) {\n this.destination.error(error);\n };\n ComplexOuterSubscriber.prototype.notifyComplete = function (_innerSub) {\n this.destination.complete();\n };\n return ComplexOuterSubscriber;\n}(Subscriber));\nexport { ComplexOuterSubscriber };\nexport function innerSubscribe(result, innerSubscriber) {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n var subscription;\n try {\n subscription = subscribeTo(result)(innerSubscriber);\n }\n catch (error) {\n innerSubscriber.error(error);\n }\n return subscription;\n}\n//# sourceMappingURL=innerSubscribe.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_Observable,_Subscriber,_Subscription,_operators_refCount PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { SubjectSubscriber } from '../Subject';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nvar ConnectableObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ConnectableObservable, _super);\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._refCount = 0;\n _this._isComplete = false;\n return _this;\n }\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n };\n ConnectableObservable.prototype.connect = function () {\n var connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return higherOrderRefCount()(this);\n };\n return ConnectableObservable;\n}(Observable));\nexport { ConnectableObservable };\nexport var connectableObservableDescriptor = /*@__PURE__*/ (function () {\n var connectableProto = ConnectableObservable.prototype;\n return {\n operator: { value: null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null, writable: true },\n _connection: { value: null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n };\n})();\nvar ConnectableSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ConnectableSubscriber, _super);\n function ConnectableSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n ConnectableSubscriber.prototype._error = function (err) {\n this._unsubscribe();\n _super.prototype._error.call(this, err);\n };\n ConnectableSubscriber.prototype._complete = function () {\n this.connectable._isComplete = true;\n this._unsubscribe();\n _super.prototype._complete.call(this);\n };\n ConnectableSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n var connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n };\n return ConnectableSubscriber;\n}(SubjectSubscriber));\nvar RefCountOperator = /*@__PURE__*/ (function () {\n function RefCountOperator(connectable) {\n this.connectable = connectable;\n }\n RefCountOperator.prototype.call = function (subscriber, source) {\n var connectable = this.connectable;\n connectable._refCount++;\n var refCounter = new RefCountSubscriber(subscriber, connectable);\n var subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n };\n return RefCountOperator;\n}());\nvar RefCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RefCountSubscriber, _super);\n function RefCountSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n RefCountSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n var refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n var connection = this.connection;\n var sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n };\n return RefCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=ConnectableObservable.js.map\n","/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isArray,_util_isScheduler PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isArray } from '../util/isArray';\nimport { isScheduler } from '../util/isScheduler';\nexport function bindCallback(callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n }\n else {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindCallback(callbackFunc, scheduler).apply(void 0, args).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n };\n }\n }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var context = this;\n var subject;\n var params = {\n context: context,\n subject: subject,\n callbackFunc: callbackFunc,\n scheduler: scheduler,\n };\n return new Observable(function (subscriber) {\n if (!scheduler) {\n if (!subject) {\n subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n }\n else {\n var state = {\n args: args, subscriber: subscriber, params: params,\n };\n return scheduler.schedule(dispatch, 0, state);\n }\n });\n };\n}\nfunction dispatch(state) {\n var _this = this;\n var self = this;\n var args = state.args, subscriber = state.subscriber, params = state.params;\n var callbackFunc = params.callbackFunc, context = params.context, scheduler = params.scheduler;\n var subject = params.subject;\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n subject.error(err);\n }\n }\n this.add(subject.subscribe(subscriber));\n}\nfunction dispatchNext(state) {\n var value = state.value, subject = state.subject;\n subject.next(value);\n subject.complete();\n}\nfunction dispatchError(state) {\n var err = state.err, subject = state.subject;\n subject.error(err);\n}\n//# sourceMappingURL=bindCallback.js.map\n","/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isScheduler,_util_isArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nexport function bindNodeCallback(callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n }\n else {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindNodeCallback(callbackFunc, scheduler).apply(void 0, args).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n };\n }\n }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var params = {\n subject: undefined,\n args: args,\n callbackFunc: callbackFunc,\n scheduler: scheduler,\n context: this,\n };\n return new Observable(function (subscriber) {\n var context = params.context;\n var subject = params.subject;\n if (!scheduler) {\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n var err = innerArgs.shift();\n if (err) {\n subject.error(err);\n return;\n }\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n }\n else {\n return scheduler.schedule(dispatch, 0, { params: params, subscriber: subscriber, context: context });\n }\n });\n };\n}\nfunction dispatch(state) {\n var _this = this;\n var params = state.params, subscriber = state.subscriber, context = state.context;\n var callbackFunc = params.callbackFunc, args = params.args, scheduler = params.scheduler;\n var subject = params.subject;\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n var err = innerArgs.shift();\n if (err) {\n _this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));\n }\n else {\n var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));\n }\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));\n }\n }\n this.add(subject.subscribe(subscriber));\n}\nfunction dispatchNext(arg) {\n var value = arg.value, subject = arg.subject;\n subject.next(value);\n subject.complete();\n}\nfunction dispatchError(arg) {\n var err = arg.err, subject = arg.subject;\n subject.error(err);\n}\n//# sourceMappingURL=bindNodeCallback.js.map\n","/** PURE_IMPORTS_START tslib,_util_isScheduler,_util_isArray,_OuterSubscriber,_util_subscribeToResult,_fromArray PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\nvar NONE = {};\nexport function combineLatest() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var resultSelector = undefined;\n var scheduler = undefined;\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop();\n }\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop();\n }\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0];\n }\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\nvar CombineLatestOperator = /*@__PURE__*/ (function () {\n function CombineLatestOperator(resultSelector) {\n this.resultSelector = resultSelector;\n }\n CombineLatestOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n };\n return CombineLatestOperator;\n}());\nexport { CombineLatestOperator };\nvar CombineLatestSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CombineLatestSubscriber, _super);\n function CombineLatestSubscriber(destination, resultSelector) {\n var _this = _super.call(this, destination) || this;\n _this.resultSelector = resultSelector;\n _this.active = 0;\n _this.values = [];\n _this.observables = [];\n return _this;\n }\n CombineLatestSubscriber.prototype._next = function (observable) {\n this.values.push(NONE);\n this.observables.push(observable);\n };\n CombineLatestSubscriber.prototype._complete = function () {\n var observables = this.observables;\n var len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n this.active = len;\n this.toRespond = len;\n for (var i = 0; i < len; i++) {\n var observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n };\n CombineLatestSubscriber.prototype.notifyComplete = function (unused) {\n if ((this.active -= 1) === 0) {\n this.destination.complete();\n }\n };\n CombineLatestSubscriber.prototype.notifyNext = function (_outerValue, innerValue, outerIndex) {\n var values = this.values;\n var oldVal = values[outerIndex];\n var toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n }\n else {\n this.destination.next(values.slice());\n }\n }\n };\n CombineLatestSubscriber.prototype._tryResultSelector = function (values) {\n var result;\n try {\n result = this.resultSelector.apply(this, values);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return CombineLatestSubscriber;\n}(OuterSubscriber));\nexport { CombineLatestSubscriber };\n//# sourceMappingURL=combineLatest.js.map\n","/** PURE_IMPORTS_START _of,_operators_concatAll PURE_IMPORTS_END */\nimport { of } from './of';\nimport { concatAll } from '../operators/concatAll';\nexport function concat() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return concatAll()(of.apply(void 0, observables));\n}\n//# sourceMappingURL=concat.js.map\n","/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { from } from './from';\nimport { empty } from './empty';\nexport function defer(observableFactory) {\n return new Observable(function (subscriber) {\n var input;\n try {\n input = observableFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var source = input ? from(input) : empty();\n return source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=defer.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport var EMPTY = /*@__PURE__*/ new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_operators_map,_util_isObject,_from PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { map } from '../operators/map';\nimport { isObject } from '../util/isObject';\nimport { from } from './from';\nexport function forkJoin() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n if (sources.length === 1) {\n var first_1 = sources[0];\n if (isArray(first_1)) {\n return forkJoinInternal(first_1, null);\n }\n if (isObject(first_1) && Object.getPrototypeOf(first_1) === Object.prototype) {\n var keys = Object.keys(first_1);\n return forkJoinInternal(keys.map(function (key) { return first_1[key]; }), keys);\n }\n }\n if (typeof sources[sources.length - 1] === 'function') {\n var resultSelector_1 = sources.pop();\n sources = (sources.length === 1 && isArray(sources[0])) ? sources[0] : sources;\n return forkJoinInternal(sources, null).pipe(map(function (args) { return resultSelector_1.apply(void 0, args); }));\n }\n return forkJoinInternal(sources, null);\n}\nfunction forkJoinInternal(sources, keys) {\n return new Observable(function (subscriber) {\n var len = sources.length;\n if (len === 0) {\n subscriber.complete();\n return;\n }\n var values = new Array(len);\n var completed = 0;\n var emitted = 0;\n var _loop_1 = function (i) {\n var source = from(sources[i]);\n var hasValue = false;\n subscriber.add(source.subscribe({\n next: function (value) {\n if (!hasValue) {\n hasValue = true;\n emitted++;\n }\n values[i] = value;\n },\n error: function (err) { return subscriber.error(err); },\n complete: function () {\n completed++;\n if (completed === len || !hasValue) {\n if (emitted === len) {\n subscriber.next(keys ?\n keys.reduce(function (result, key, i) { return (result[key] = values[i], result); }, {}) :\n values);\n }\n subscriber.complete();\n }\n }\n }));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n });\n}\n//# sourceMappingURL=forkJoin.js.map\n","/** PURE_IMPORTS_START _Observable,_util_subscribeTo,_scheduled_scheduled PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { scheduled } from '../scheduled/scheduled';\nexport function from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n }\n else {\n return scheduled(input, scheduler);\n }\n}\n//# sourceMappingURL=from.js.map\n","/** PURE_IMPORTS_START _Observable,_util_subscribeToArray,_scheduled_scheduleArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function fromArray(input, scheduler) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n }\n else {\n return scheduleArray(input, scheduler);\n }\n}\n//# sourceMappingURL=fromArray.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nvar toString = /*@__PURE__*/ (function () { return Object.prototype.toString; })();\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n }\n return new Observable(function (subscriber) {\n function handler(e) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n }\n else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options);\n });\n}\nfunction setupSubscription(sourceObj, eventName, handler, subscriber, options) {\n var unsubscribe;\n if (isEventTarget(sourceObj)) {\n var source_1 = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); };\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n var source_2 = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = function () { return source_2.off(eventName, handler); };\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n var source_3 = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = function () { return source_3.removeListener(eventName, handler); };\n }\n else if (sourceObj && sourceObj.length) {\n for (var i = 0, len = sourceObj.length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(unsubscribe);\n}\nfunction isNodeStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isEventTarget(sourceObj) {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n//# sourceMappingURL=fromEvent.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nexport function fromEventPattern(addHandler, removeHandler, resultSelector) {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var e = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n e[_i] = arguments[_i];\n }\n return subscriber.next(e.length === 1 ? e[0] : e);\n };\n var retValue;\n try {\n retValue = addHandler(handler);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!isFunction(removeHandler)) {\n return undefined;\n }\n return function () { return removeHandler(handler, retValue); };\n });\n}\n//# sourceMappingURL=fromEventPattern.js.map\n","/** PURE_IMPORTS_START _Observable,_util_identity,_util_isScheduler PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { identity } from '../util/identity';\nimport { isScheduler } from '../util/isScheduler';\nexport function generate(initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler) {\n var resultSelector;\n var initialState;\n if (arguments.length == 1) {\n var options = initialStateOrOptions;\n initialState = options.initialState;\n condition = options.condition;\n iterate = options.iterate;\n resultSelector = options.resultSelector || identity;\n scheduler = options.scheduler;\n }\n else if (resultSelectorOrObservable === undefined || isScheduler(resultSelectorOrObservable)) {\n initialState = initialStateOrOptions;\n resultSelector = identity;\n scheduler = resultSelectorOrObservable;\n }\n else {\n initialState = initialStateOrOptions;\n resultSelector = resultSelectorOrObservable;\n }\n return new Observable(function (subscriber) {\n var state = initialState;\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n subscriber: subscriber,\n iterate: iterate,\n condition: condition,\n resultSelector: resultSelector,\n state: state\n });\n }\n do {\n if (condition) {\n var conditionResult = void 0;\n try {\n conditionResult = condition(state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n break;\n }\n }\n var value = void 0;\n try {\n value = resultSelector(state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n break;\n }\n try {\n state = iterate(state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n } while (true);\n return undefined;\n });\n}\nfunction dispatch(state) {\n var subscriber = state.subscriber, condition = state.condition;\n if (subscriber.closed) {\n return undefined;\n }\n if (state.needIterate) {\n try {\n state.state = state.iterate(state.state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n }\n else {\n state.needIterate = true;\n }\n if (condition) {\n var conditionResult = void 0;\n try {\n conditionResult = condition(state.state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n }\n var value;\n try {\n value = state.resultSelector(state.state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n return undefined;\n }\n return this.schedule(state);\n}\n//# sourceMappingURL=generate.js.map\n","/** PURE_IMPORTS_START _defer,_empty PURE_IMPORTS_END */\nimport { defer } from './defer';\nimport { EMPTY } from './empty';\nexport function iif(condition, trueResult, falseResult) {\n if (trueResult === void 0) {\n trueResult = EMPTY;\n }\n if (falseResult === void 0) {\n falseResult = EMPTY;\n }\n return defer(function () { return condition() ? trueResult : falseResult; });\n}\n//# sourceMappingURL=iif.js.map\n","/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nexport function interval(period, scheduler) {\n if (period === void 0) {\n period = 0;\n }\n if (scheduler === void 0) {\n scheduler = async;\n }\n if (!isNumeric(period) || period < 0) {\n period = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n scheduler = async;\n }\n return new Observable(function (subscriber) {\n subscriber.add(scheduler.schedule(dispatch, period, { subscriber: subscriber, counter: 0, period: period }));\n return subscriber;\n });\n}\nfunction dispatch(state) {\n var subscriber = state.subscriber, counter = state.counter, period = state.period;\n subscriber.next(counter);\n this.schedule({ subscriber: subscriber, counter: counter + 1, period: period }, period);\n}\n//# sourceMappingURL=interval.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isScheduler,_operators_mergeAll,_fromArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\nexport function merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var concurrent = Number.POSITIVE_INFINITY;\n var scheduler = null;\n var last = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return observables[0];\n }\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n//# sourceMappingURL=merge.js.map\n","/** PURE_IMPORTS_START _Observable,_util_noop PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport var NEVER = /*@__PURE__*/ new Observable(noop);\nexport function never() {\n return NEVER;\n}\n//# sourceMappingURL=never.js.map\n","/** PURE_IMPORTS_START _util_isScheduler,_fromArray,_scheduled_scheduleArray PURE_IMPORTS_END */\nimport { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args[args.length - 1];\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args, scheduler);\n }\n else {\n return fromArray(args);\n }\n}\n//# sourceMappingURL=of.js.map\n","/** PURE_IMPORTS_START _Observable,_from,_util_isArray,_empty PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { from } from './from';\nimport { isArray } from '../util/isArray';\nimport { EMPTY } from './empty';\nexport function onErrorResumeNext() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n if (sources.length === 0) {\n return EMPTY;\n }\n var first = sources[0], remainder = sources.slice(1);\n if (sources.length === 1 && isArray(first)) {\n return onErrorResumeNext.apply(void 0, first);\n }\n return new Observable(function (subscriber) {\n var subNext = function () { return subscriber.add(onErrorResumeNext.apply(void 0, remainder).subscribe(subscriber)); };\n return from(first).subscribe({\n next: function (value) { subscriber.next(value); },\n error: subNext,\n complete: subNext,\n });\n });\n}\n//# sourceMappingURL=onErrorResumeNext.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function pairs(obj, scheduler) {\n if (!scheduler) {\n return new Observable(function (subscriber) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length && !subscriber.closed; i++) {\n var key = keys[i];\n if (obj.hasOwnProperty(key)) {\n subscriber.next([key, obj[key]]);\n }\n }\n subscriber.complete();\n });\n }\n else {\n return new Observable(function (subscriber) {\n var keys = Object.keys(obj);\n var subscription = new Subscription();\n subscription.add(scheduler.schedule(dispatch, 0, { keys: keys, index: 0, subscriber: subscriber, subscription: subscription, obj: obj }));\n return subscription;\n });\n }\n}\nexport function dispatch(state) {\n var keys = state.keys, index = state.index, subscriber = state.subscriber, subscription = state.subscription, obj = state.obj;\n if (!subscriber.closed) {\n if (index < keys.length) {\n var key = keys[index];\n subscriber.next([key, obj[key]]);\n subscription.add(this.schedule({ keys: keys, index: index + 1, subscriber: subscriber, subscription: subscription, obj: obj }));\n }\n else {\n subscriber.complete();\n }\n }\n}\n//# sourceMappingURL=pairs.js.map\n","/** PURE_IMPORTS_START _util_not,_util_subscribeTo,_operators_filter,_Observable PURE_IMPORTS_END */\nimport { not } from '../util/not';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { filter } from '../operators/filter';\nimport { Observable } from '../Observable';\nexport function partition(source, predicate, thisArg) {\n return [\n filter(predicate, thisArg)(new Observable(subscribeTo(source))),\n filter(not(predicate, thisArg))(new Observable(subscribeTo(source)))\n ];\n}\n//# sourceMappingURL=partition.js.map\n","/** PURE_IMPORTS_START tslib,_util_isArray,_fromArray,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isArray } from '../util/isArray';\nimport { fromArray } from './fromArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function race() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n if (observables.length === 1) {\n if (isArray(observables[0])) {\n observables = observables[0];\n }\n else {\n return observables[0];\n }\n }\n return fromArray(observables, undefined).lift(new RaceOperator());\n}\nvar RaceOperator = /*@__PURE__*/ (function () {\n function RaceOperator() {\n }\n RaceOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RaceSubscriber(subscriber));\n };\n return RaceOperator;\n}());\nexport { RaceOperator };\nvar RaceSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RaceSubscriber, _super);\n function RaceSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.hasFirst = false;\n _this.observables = [];\n _this.subscriptions = [];\n return _this;\n }\n RaceSubscriber.prototype._next = function (observable) {\n this.observables.push(observable);\n };\n RaceSubscriber.prototype._complete = function () {\n var observables = this.observables;\n var len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n for (var i = 0; i < len && !this.hasFirst; i++) {\n var observable = observables[i];\n var subscription = subscribeToResult(this, observable, undefined, i);\n if (this.subscriptions) {\n this.subscriptions.push(subscription);\n }\n this.add(subscription);\n }\n this.observables = null;\n }\n };\n RaceSubscriber.prototype.notifyNext = function (_outerValue, innerValue, outerIndex) {\n if (!this.hasFirst) {\n this.hasFirst = true;\n for (var i = 0; i < this.subscriptions.length; i++) {\n if (i !== outerIndex) {\n var subscription = this.subscriptions[i];\n subscription.unsubscribe();\n this.remove(subscription);\n }\n }\n this.subscriptions = null;\n }\n this.destination.next(innerValue);\n };\n return RaceSubscriber;\n}(OuterSubscriber));\nexport { RaceSubscriber };\n//# sourceMappingURL=race.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function range(start, count, scheduler) {\n if (start === void 0) {\n start = 0;\n }\n return new Observable(function (subscriber) {\n if (count === undefined) {\n count = start;\n start = 0;\n }\n var index = 0;\n var current = start;\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n index: index, count: count, start: start, subscriber: subscriber\n });\n }\n else {\n do {\n if (index++ >= count) {\n subscriber.complete();\n break;\n }\n subscriber.next(current++);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n }\n return undefined;\n });\n}\nexport function dispatch(state) {\n var start = state.start, index = state.index, count = state.count, subscriber = state.subscriber;\n if (index >= count) {\n subscriber.complete();\n return;\n }\n subscriber.next(start);\n if (subscriber.closed) {\n return;\n }\n state.index = index + 1;\n state.start = start + 1;\n this.schedule(state);\n}\n//# sourceMappingURL=range.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function throwError(error, scheduler) {\n if (!scheduler) {\n return new Observable(function (subscriber) { return subscriber.error(error); });\n }\n else {\n return new Observable(function (subscriber) { return scheduler.schedule(dispatch, 0, { error: error, subscriber: subscriber }); });\n }\n}\nfunction dispatch(_a) {\n var error = _a.error, subscriber = _a.subscriber;\n subscriber.error(error);\n}\n//# sourceMappingURL=throwError.js.map\n","/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function timer(dueTime, periodOrScheduler, scheduler) {\n if (dueTime === void 0) {\n dueTime = 0;\n }\n var period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n }\n else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler;\n }\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n return new Observable(function (subscriber) {\n var due = isNumeric(dueTime)\n ? dueTime\n : (+dueTime - scheduler.now());\n return scheduler.schedule(dispatch, due, {\n index: 0, period: period, subscriber: subscriber\n });\n });\n}\nfunction dispatch(state) {\n var index = state.index, period = state.period, subscriber = state.subscriber;\n subscriber.next(index);\n if (subscriber.closed) {\n return;\n }\n else if (period === -1) {\n return subscriber.complete();\n }\n state.index = index + 1;\n this.schedule(state, period);\n}\n//# sourceMappingURL=timer.js.map\n","/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { from } from './from';\nimport { EMPTY } from './empty';\nexport function using(resourceFactory, observableFactory) {\n return new Observable(function (subscriber) {\n var resource;\n try {\n resource = resourceFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var result;\n try {\n result = observableFactory(resource);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var source = result ? from(result) : EMPTY;\n var subscription = source.subscribe(subscriber);\n return function () {\n subscription.unsubscribe();\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n//# sourceMappingURL=using.js.map\n","/** PURE_IMPORTS_START tslib,_fromArray,_util_isArray,_Subscriber,_.._internal_symbol_iterator,_innerSubscribe PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { fromArray } from './fromArray';\nimport { isArray } from '../util/isArray';\nimport { Subscriber } from '../Subscriber';\nimport { iterator as Symbol_iterator } from '../../internal/symbol/iterator';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function zip() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var resultSelector = observables[observables.length - 1];\n if (typeof resultSelector === 'function') {\n observables.pop();\n }\n return fromArray(observables, undefined).lift(new ZipOperator(resultSelector));\n}\nvar ZipOperator = /*@__PURE__*/ (function () {\n function ZipOperator(resultSelector) {\n this.resultSelector = resultSelector;\n }\n ZipOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n };\n return ZipOperator;\n}());\nexport { ZipOperator };\nvar ZipSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ZipSubscriber, _super);\n function ZipSubscriber(destination, resultSelector, values) {\n if (values === void 0) {\n values = Object.create(null);\n }\n var _this = _super.call(this, destination) || this;\n _this.resultSelector = resultSelector;\n _this.iterators = [];\n _this.active = 0;\n _this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : undefined;\n return _this;\n }\n ZipSubscriber.prototype._next = function (value) {\n var iterators = this.iterators;\n if (isArray(value)) {\n iterators.push(new StaticArrayIterator(value));\n }\n else if (typeof value[Symbol_iterator] === 'function') {\n iterators.push(new StaticIterator(value[Symbol_iterator]()));\n }\n else {\n iterators.push(new ZipBufferIterator(this.destination, this, value));\n }\n };\n ZipSubscriber.prototype._complete = function () {\n var iterators = this.iterators;\n var len = iterators.length;\n this.unsubscribe();\n if (len === 0) {\n this.destination.complete();\n return;\n }\n this.active = len;\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n if (iterator.stillUnsubscribed) {\n var destination = this.destination;\n destination.add(iterator.subscribe());\n }\n else {\n this.active--;\n }\n }\n };\n ZipSubscriber.prototype.notifyInactive = function () {\n this.active--;\n if (this.active === 0) {\n this.destination.complete();\n }\n };\n ZipSubscriber.prototype.checkIterators = function () {\n var iterators = this.iterators;\n var len = iterators.length;\n var destination = this.destination;\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n return;\n }\n }\n var shouldComplete = false;\n var args = [];\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n var result = iterator.next();\n if (iterator.hasCompleted()) {\n shouldComplete = true;\n }\n if (result.done) {\n destination.complete();\n return;\n }\n args.push(result.value);\n }\n if (this.resultSelector) {\n this._tryresultSelector(args);\n }\n else {\n destination.next(args);\n }\n if (shouldComplete) {\n destination.complete();\n }\n };\n ZipSubscriber.prototype._tryresultSelector = function (args) {\n var result;\n try {\n result = this.resultSelector.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return ZipSubscriber;\n}(Subscriber));\nexport { ZipSubscriber };\nvar StaticIterator = /*@__PURE__*/ (function () {\n function StaticIterator(iterator) {\n this.iterator = iterator;\n this.nextResult = iterator.next();\n }\n StaticIterator.prototype.hasValue = function () {\n return true;\n };\n StaticIterator.prototype.next = function () {\n var result = this.nextResult;\n this.nextResult = this.iterator.next();\n return result;\n };\n StaticIterator.prototype.hasCompleted = function () {\n var nextResult = this.nextResult;\n return Boolean(nextResult && nextResult.done);\n };\n return StaticIterator;\n}());\nvar StaticArrayIterator = /*@__PURE__*/ (function () {\n function StaticArrayIterator(array) {\n this.array = array;\n this.index = 0;\n this.length = 0;\n this.length = array.length;\n }\n StaticArrayIterator.prototype[Symbol_iterator] = function () {\n return this;\n };\n StaticArrayIterator.prototype.next = function (value) {\n var i = this.index++;\n var array = this.array;\n return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n };\n StaticArrayIterator.prototype.hasValue = function () {\n return this.array.length > this.index;\n };\n StaticArrayIterator.prototype.hasCompleted = function () {\n return this.array.length === this.index;\n };\n return StaticArrayIterator;\n}());\nvar ZipBufferIterator = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ZipBufferIterator, _super);\n function ZipBufferIterator(destination, parent, observable) {\n var _this = _super.call(this, destination) || this;\n _this.parent = parent;\n _this.observable = observable;\n _this.stillUnsubscribed = true;\n _this.buffer = [];\n _this.isComplete = false;\n return _this;\n }\n ZipBufferIterator.prototype[Symbol_iterator] = function () {\n return this;\n };\n ZipBufferIterator.prototype.next = function () {\n var buffer = this.buffer;\n if (buffer.length === 0 && this.isComplete) {\n return { value: null, done: true };\n }\n else {\n return { value: buffer.shift(), done: false };\n }\n };\n ZipBufferIterator.prototype.hasValue = function () {\n return this.buffer.length > 0;\n };\n ZipBufferIterator.prototype.hasCompleted = function () {\n return this.buffer.length === 0 && this.isComplete;\n };\n ZipBufferIterator.prototype.notifyComplete = function () {\n if (this.buffer.length > 0) {\n this.isComplete = true;\n this.parent.notifyInactive();\n }\n else {\n this.destination.complete();\n }\n };\n ZipBufferIterator.prototype.notifyNext = function (innerValue) {\n this.buffer.push(innerValue);\n this.parent.checkIterators();\n };\n ZipBufferIterator.prototype.subscribe = function () {\n return innerSubscribe(this.observable, new SimpleInnerSubscriber(this));\n };\n return ZipBufferIterator;\n}(SimpleOuterSubscriber));\n//# sourceMappingURL=zip.js.map\n","/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n var operator = new CatchOperator(selector);\n var caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nvar CatchOperator = /*@__PURE__*/ (function () {\n function CatchOperator(selector) {\n this.selector = selector;\n }\n CatchOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n };\n return CatchOperator;\n}());\nvar CatchSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CatchSubscriber, _super);\n function CatchSubscriber(destination, selector, caught) {\n var _this = _super.call(this, destination) || this;\n _this.selector = selector;\n _this.caught = caught;\n return _this;\n }\n CatchSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var result = void 0;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n _super.prototype.error.call(this, err2);\n return;\n }\n this._unsubscribeAndRecycle();\n var innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n var innerSubscription = innerSubscribe(result, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n }\n }\n };\n return CatchSubscriber;\n}(SimpleOuterSubscriber));\n//# sourceMappingURL=catchError.js.map\n","/** PURE_IMPORTS_START _mergeAll PURE_IMPORTS_END */\nimport { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function defaultIfEmpty(defaultValue) {\n if (defaultValue === void 0) {\n defaultValue = null;\n }\n return function (source) { return source.lift(new DefaultIfEmptyOperator(defaultValue)); };\n}\nvar DefaultIfEmptyOperator = /*@__PURE__*/ (function () {\n function DefaultIfEmptyOperator(defaultValue) {\n this.defaultValue = defaultValue;\n }\n DefaultIfEmptyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));\n };\n return DefaultIfEmptyOperator;\n}());\nvar DefaultIfEmptySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DefaultIfEmptySubscriber, _super);\n function DefaultIfEmptySubscriber(destination, defaultValue) {\n var _this = _super.call(this, destination) || this;\n _this.defaultValue = defaultValue;\n _this.isEmpty = true;\n return _this;\n }\n DefaultIfEmptySubscriber.prototype._next = function (value) {\n this.isEmpty = false;\n this.destination.next(value);\n };\n DefaultIfEmptySubscriber.prototype._complete = function () {\n if (this.isEmpty) {\n this.destination.next(this.defaultValue);\n }\n this.destination.complete();\n };\n return DefaultIfEmptySubscriber;\n}(Subscriber));\n//# sourceMappingURL=defaultIfEmpty.js.map\n","/** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_Subscriber,_Notification PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function delay(delay, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n var absoluteDelay = isDate(delay);\n var delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return function (source) { return source.lift(new DelayOperator(delayFor, scheduler)); };\n}\nvar DelayOperator = /*@__PURE__*/ (function () {\n function DelayOperator(delay, scheduler) {\n this.delay = delay;\n this.scheduler = scheduler;\n }\n DelayOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n };\n return DelayOperator;\n}());\nvar DelaySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DelaySubscriber, _super);\n function DelaySubscriber(destination, delay, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.delay = delay;\n _this.scheduler = scheduler;\n _this.queue = [];\n _this.active = false;\n _this.errored = false;\n return _this;\n }\n DelaySubscriber.dispatch = function (state) {\n var source = state.source;\n var queue = source.queue;\n var scheduler = state.scheduler;\n var destination = state.destination;\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n if (queue.length > 0) {\n var delay_1 = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay_1);\n }\n else {\n this.unsubscribe();\n source.active = false;\n }\n };\n DelaySubscriber.prototype._schedule = function (scheduler) {\n this.active = true;\n var destination = this.destination;\n destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n };\n DelaySubscriber.prototype.scheduleNotification = function (notification) {\n if (this.errored === true) {\n return;\n }\n var scheduler = this.scheduler;\n var message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n if (this.active === false) {\n this._schedule(scheduler);\n }\n };\n DelaySubscriber.prototype._next = function (value) {\n this.scheduleNotification(Notification.createNext(value));\n };\n DelaySubscriber.prototype._error = function (err) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n };\n DelaySubscriber.prototype._complete = function () {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n };\n return DelaySubscriber;\n}(Subscriber));\nvar DelayMessage = /*@__PURE__*/ (function () {\n function DelayMessage(time, notification) {\n this.time = time;\n this.notification = notification;\n }\n return DelayMessage;\n}());\n//# sourceMappingURL=delay.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nvar FilterOperator = /*@__PURE__*/ (function () {\n function FilterOperator(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n FilterOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n };\n return FilterOperator;\n}());\nvar FilterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(FilterSubscriber, _super);\n function FilterSubscriber(destination, predicate, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.thisArg = thisArg;\n _this.count = 0;\n return _this;\n }\n FilterSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n };\n return FilterSubscriber;\n}(Subscriber));\n//# sourceMappingURL=filter.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nexport function finalize(callback) {\n return function (source) { return source.lift(new FinallyOperator(callback)); };\n}\nvar FinallyOperator = /*@__PURE__*/ (function () {\n function FinallyOperator(callback) {\n this.callback = callback;\n }\n FinallyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n };\n return FinallyOperator;\n}());\nvar FinallySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(FinallySubscriber, _super);\n function FinallySubscriber(destination, callback) {\n var _this = _super.call(this, destination) || this;\n _this.add(new Subscription(callback));\n return _this;\n }\n return FinallySubscriber;\n}(Subscriber));\n//# sourceMappingURL=finalize.js.map\n","/** PURE_IMPORTS_START _util_EmptyError,_filter,_take,_defaultIfEmpty,_throwIfEmpty,_util_identity PURE_IMPORTS_END */\nimport { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) { return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); })); };\n}\n//# sourceMappingURL=first.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription,_Observable,_Subject PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nexport function groupBy(keySelector, elementSelector, durationSelector, subjectSelector) {\n return function (source) {\n return source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));\n };\n}\nvar GroupByOperator = /*@__PURE__*/ (function () {\n function GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector) {\n this.keySelector = keySelector;\n this.elementSelector = elementSelector;\n this.durationSelector = durationSelector;\n this.subjectSelector = subjectSelector;\n }\n GroupByOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new GroupBySubscriber(subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector));\n };\n return GroupByOperator;\n}());\nvar GroupBySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(GroupBySubscriber, _super);\n function GroupBySubscriber(destination, keySelector, elementSelector, durationSelector, subjectSelector) {\n var _this = _super.call(this, destination) || this;\n _this.keySelector = keySelector;\n _this.elementSelector = elementSelector;\n _this.durationSelector = durationSelector;\n _this.subjectSelector = subjectSelector;\n _this.groups = null;\n _this.attemptedToUnsubscribe = false;\n _this.count = 0;\n return _this;\n }\n GroupBySubscriber.prototype._next = function (value) {\n var key;\n try {\n key = this.keySelector(value);\n }\n catch (err) {\n this.error(err);\n return;\n }\n this._group(value, key);\n };\n GroupBySubscriber.prototype._group = function (value, key) {\n var groups = this.groups;\n if (!groups) {\n groups = this.groups = new Map();\n }\n var group = groups.get(key);\n var element;\n if (this.elementSelector) {\n try {\n element = this.elementSelector(value);\n }\n catch (err) {\n this.error(err);\n }\n }\n else {\n element = value;\n }\n if (!group) {\n group = (this.subjectSelector ? this.subjectSelector() : new Subject());\n groups.set(key, group);\n var groupedObservable = new GroupedObservable(key, group, this);\n this.destination.next(groupedObservable);\n if (this.durationSelector) {\n var duration = void 0;\n try {\n duration = this.durationSelector(new GroupedObservable(key, group));\n }\n catch (err) {\n this.error(err);\n return;\n }\n this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this)));\n }\n }\n if (!group.closed) {\n group.next(element);\n }\n };\n GroupBySubscriber.prototype._error = function (err) {\n var groups = this.groups;\n if (groups) {\n groups.forEach(function (group, key) {\n group.error(err);\n });\n groups.clear();\n }\n this.destination.error(err);\n };\n GroupBySubscriber.prototype._complete = function () {\n var groups = this.groups;\n if (groups) {\n groups.forEach(function (group, key) {\n group.complete();\n });\n groups.clear();\n }\n this.destination.complete();\n };\n GroupBySubscriber.prototype.removeGroup = function (key) {\n this.groups.delete(key);\n };\n GroupBySubscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.attemptedToUnsubscribe = true;\n if (this.count === 0) {\n _super.prototype.unsubscribe.call(this);\n }\n }\n };\n return GroupBySubscriber;\n}(Subscriber));\nvar GroupDurationSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(GroupDurationSubscriber, _super);\n function GroupDurationSubscriber(key, group, parent) {\n var _this = _super.call(this, group) || this;\n _this.key = key;\n _this.group = group;\n _this.parent = parent;\n return _this;\n }\n GroupDurationSubscriber.prototype._next = function (value) {\n this.complete();\n };\n GroupDurationSubscriber.prototype._unsubscribe = function () {\n var _a = this, parent = _a.parent, key = _a.key;\n this.key = this.parent = null;\n if (parent) {\n parent.removeGroup(key);\n }\n };\n return GroupDurationSubscriber;\n}(Subscriber));\nvar GroupedObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(GroupedObservable, _super);\n function GroupedObservable(key, groupSubject, refCountSubscription) {\n var _this = _super.call(this) || this;\n _this.key = key;\n _this.groupSubject = groupSubject;\n _this.refCountSubscription = refCountSubscription;\n return _this;\n }\n GroupedObservable.prototype._subscribe = function (subscriber) {\n var subscription = new Subscription();\n var _a = this, refCountSubscription = _a.refCountSubscription, groupSubject = _a.groupSubject;\n if (refCountSubscription && !refCountSubscription.closed) {\n subscription.add(new InnerRefCountSubscription(refCountSubscription));\n }\n subscription.add(groupSubject.subscribe(subscriber));\n return subscription;\n };\n return GroupedObservable;\n}(Observable));\nexport { GroupedObservable };\nvar InnerRefCountSubscription = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(InnerRefCountSubscription, _super);\n function InnerRefCountSubscription(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n parent.count++;\n return _this;\n }\n InnerRefCountSubscription.prototype.unsubscribe = function () {\n var parent = this.parent;\n if (!parent.closed && !this.closed) {\n _super.prototype.unsubscribe.call(this);\n parent.count -= 1;\n if (parent.count === 0 && parent.attemptedToUnsubscribe) {\n parent.unsubscribe();\n }\n }\n };\n return InnerRefCountSubscription;\n}(Subscription));\n//# sourceMappingURL=groupBy.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nvar MapOperator = /*@__PURE__*/ (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexport { MapOperator };\nvar MapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.count = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=map.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function mapTo(value) {\n return function (source) { return source.lift(new MapToOperator(value)); };\n}\nvar MapToOperator = /*@__PURE__*/ (function () {\n function MapToOperator(value) {\n this.value = value;\n }\n MapToOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapToSubscriber(subscriber, this.value));\n };\n return MapToOperator;\n}());\nvar MapToSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MapToSubscriber, _super);\n function MapToSubscriber(destination, value) {\n var _this = _super.call(this, destination) || this;\n _this.value = value;\n return _this;\n }\n MapToSubscriber.prototype._next = function (x) {\n this.destination.next(this.value);\n };\n return MapToSubscriber;\n}(Subscriber));\n//# sourceMappingURL=mapTo.js.map\n","/** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */\nimport { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map\n","/** PURE_IMPORTS_START tslib,_map,_observable_from,_innerSubscribe PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(mergeMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); };\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); };\n}\nvar MergeMapOperator = /*@__PURE__*/ (function () {\n function MergeMapOperator(project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n this.project = project;\n this.concurrent = concurrent;\n }\n MergeMapOperator.prototype.call = function (observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n };\n return MergeMapOperator;\n}());\nexport { MergeMapOperator };\nvar MergeMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MergeMapSubscriber, _super);\n function MergeMapSubscriber(destination, project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.concurrent = concurrent;\n _this.hasCompleted = false;\n _this.buffer = [];\n _this.active = 0;\n _this.index = 0;\n return _this;\n }\n MergeMapSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeMapSubscriber.prototype._tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result);\n };\n MergeMapSubscriber.prototype._innerSub = function (ish) {\n var innerSubscriber = new SimpleInnerSubscriber(this);\n var destination = this.destination;\n destination.add(innerSubscriber);\n var innerSubscription = innerSubscribe(ish, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n };\n MergeMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n MergeMapSubscriber.prototype.notifyNext = function (innerValue) {\n this.destination.next(innerValue);\n };\n MergeMapSubscriber.prototype.notifyComplete = function () {\n var buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n };\n return MergeMapSubscriber;\n}(SimpleOuterSubscriber));\nexport { MergeMapSubscriber };\nexport var flatMap = mergeMap;\n//# sourceMappingURL=mergeMap.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nvar ObserveOnOperator = /*@__PURE__*/ (function () {\n function ObserveOnOperator(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n };\n return ObserveOnOperator;\n}());\nexport { ObserveOnOperator };\nvar ObserveOnSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ObserveOnSubscriber, _super);\n function ObserveOnSubscriber(destination, scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n var _this = _super.call(this, destination) || this;\n _this.scheduler = scheduler;\n _this.delay = delay;\n return _this;\n }\n ObserveOnSubscriber.dispatch = function (arg) {\n var notification = arg.notification, destination = arg.destination;\n notification.observe(destination);\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {\n var destination = this.destination;\n destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n };\n ObserveOnSubscriber.prototype._next = function (value) {\n this.scheduleMessage(Notification.createNext(value));\n };\n ObserveOnSubscriber.prototype._error = function (err) {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype._complete = function () {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n };\n return ObserveOnSubscriber;\n}(Subscriber));\nexport { ObserveOnSubscriber };\nvar ObserveOnMessage = /*@__PURE__*/ (function () {\n function ObserveOnMessage(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n return ObserveOnMessage;\n}());\nexport { ObserveOnMessage };\n//# sourceMappingURL=observeOn.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function refCount() {\n return function refCountOperatorFunction(source) {\n return source.lift(new RefCountOperator(source));\n };\n}\nvar RefCountOperator = /*@__PURE__*/ (function () {\n function RefCountOperator(connectable) {\n this.connectable = connectable;\n }\n RefCountOperator.prototype.call = function (subscriber, source) {\n var connectable = this.connectable;\n connectable._refCount++;\n var refCounter = new RefCountSubscriber(subscriber, connectable);\n var subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n };\n return RefCountOperator;\n}());\nvar RefCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RefCountSubscriber, _super);\n function RefCountSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n RefCountSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n var refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n var connection = this.connection;\n var sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n };\n return RefCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=refCount.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function take(count) {\n return function (source) {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\nvar TakeOperator = /*@__PURE__*/ (function () {\n function TakeOperator(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n TakeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n };\n return TakeOperator;\n}());\nvar TakeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeSubscriber, _super);\n function TakeSubscriber(destination, total) {\n var _this = _super.call(this, destination) || this;\n _this.total = total;\n _this.count = 0;\n return _this;\n }\n TakeSubscriber.prototype._next = function (value) {\n var total = this.total;\n var count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n };\n return TakeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=take.js.map\n","/** PURE_IMPORTS_START tslib,_util_EmptyError,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { EmptyError } from '../util/EmptyError';\nimport { Subscriber } from '../Subscriber';\nexport function throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) {\n errorFactory = defaultErrorFactory;\n }\n return function (source) {\n return source.lift(new ThrowIfEmptyOperator(errorFactory));\n };\n}\nvar ThrowIfEmptyOperator = /*@__PURE__*/ (function () {\n function ThrowIfEmptyOperator(errorFactory) {\n this.errorFactory = errorFactory;\n }\n ThrowIfEmptyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));\n };\n return ThrowIfEmptyOperator;\n}());\nvar ThrowIfEmptySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ThrowIfEmptySubscriber, _super);\n function ThrowIfEmptySubscriber(destination, errorFactory) {\n var _this = _super.call(this, destination) || this;\n _this.errorFactory = errorFactory;\n _this.hasValue = false;\n return _this;\n }\n ThrowIfEmptySubscriber.prototype._next = function (value) {\n this.hasValue = true;\n this.destination.next(value);\n };\n ThrowIfEmptySubscriber.prototype._complete = function () {\n if (!this.hasValue) {\n var err = void 0;\n try {\n err = this.errorFactory();\n }\n catch (e) {\n err = e;\n }\n this.destination.error(err);\n }\n else {\n return this.destination.complete();\n }\n };\n return ThrowIfEmptySubscriber;\n}(Subscriber));\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map\n","/** PURE_IMPORTS_START _scheduler_async,_util_TimeoutError,_timeoutWith,_observable_throwError PURE_IMPORTS_END */\nimport { async } from '../scheduler/async';\nimport { TimeoutError } from '../util/TimeoutError';\nimport { timeoutWith } from './timeoutWith';\nimport { throwError } from '../observable/throwError';\nexport function timeout(due, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return timeoutWith(due, throwError(new TimeoutError()), scheduler);\n}\n//# sourceMappingURL=timeout.js.map\n","/** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_innerSubscribe PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\nexport function timeoutWith(due, withObservable, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return function (source) {\n var absoluteTimeout = isDate(due);\n var waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);\n return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));\n };\n}\nvar TimeoutWithOperator = /*@__PURE__*/ (function () {\n function TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler) {\n this.waitFor = waitFor;\n this.absoluteTimeout = absoluteTimeout;\n this.withObservable = withObservable;\n this.scheduler = scheduler;\n }\n TimeoutWithOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TimeoutWithSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler));\n };\n return TimeoutWithOperator;\n}());\nvar TimeoutWithSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TimeoutWithSubscriber, _super);\n function TimeoutWithSubscriber(destination, absoluteTimeout, waitFor, withObservable, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.absoluteTimeout = absoluteTimeout;\n _this.waitFor = waitFor;\n _this.withObservable = withObservable;\n _this.scheduler = scheduler;\n _this.scheduleTimeout();\n return _this;\n }\n TimeoutWithSubscriber.dispatchTimeout = function (subscriber) {\n var withObservable = subscriber.withObservable;\n subscriber._unsubscribeAndRecycle();\n subscriber.add(innerSubscribe(withObservable, new SimpleInnerSubscriber(subscriber)));\n };\n TimeoutWithSubscriber.prototype.scheduleTimeout = function () {\n var action = this.action;\n if (action) {\n this.action = action.schedule(this, this.waitFor);\n }\n else {\n this.add(this.action = this.scheduler.schedule(TimeoutWithSubscriber.dispatchTimeout, this.waitFor, this));\n }\n };\n TimeoutWithSubscriber.prototype._next = function (value) {\n if (!this.absoluteTimeout) {\n this.scheduleTimeout();\n }\n _super.prototype._next.call(this, value);\n };\n TimeoutWithSubscriber.prototype._unsubscribe = function () {\n this.action = undefined;\n this.scheduler = null;\n this.withObservable = null;\n };\n return TimeoutWithSubscriber;\n}(SimpleOuterSubscriber));\n//# sourceMappingURL=timeoutWith.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleArray.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function scheduleIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var iterator;\n sub.add(function () {\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(function () {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n var value;\n var done;\n try {\n var result = iterator.next();\n value = result.value;\n done = result.done;\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); },\n error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); },\n complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); },\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleObservable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function schedulePromise(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n return input.then(function (value) {\n sub.add(scheduler.schedule(function () {\n subscriber.next(value);\n sub.add(scheduler.schedule(function () { return subscriber.complete(); }));\n }));\n }, function (err) {\n sub.add(scheduler.schedule(function () { return subscriber.error(err); }));\n });\n }));\n return sub;\n });\n}\n//# sourceMappingURL=schedulePromise.js.map\n","/** PURE_IMPORTS_START _scheduleObservable,_schedulePromise,_scheduleArray,_scheduleIterable,_util_isInteropObservable,_util_isPromise,_util_isArrayLike,_util_isIterable PURE_IMPORTS_END */\nimport { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n//# sourceMappingURL=scheduled.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar AnimationFrameAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnimationFrameAction, _super);\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(function () { return scheduler.flush(null); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n cancelAnimationFrame(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction));\nexport { AnimationFrameAction };\n//# sourceMappingURL=AnimationFrameAction.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AnimationFrameScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnimationFrameScheduler, _super);\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnimationFrameScheduler.prototype.flush = function (action) {\n this.active = true;\n this.scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n var count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler));\nexport { AnimationFrameScheduler };\n//# sourceMappingURL=AnimationFrameScheduler.js.map\n","/** PURE_IMPORTS_START tslib,_util_Immediate,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Immediate } from '../util/Immediate';\nimport { AsyncAction } from './AsyncAction';\nvar AsapAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsapAction, _super);\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(scheduler.flush.bind(scheduler, null)));\n };\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n Immediate.clearImmediate(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction));\nexport { AsapAction };\n//# sourceMappingURL=AsapAction.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AsapScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsapScheduler, _super);\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AsapScheduler.prototype.flush = function (action) {\n this.active = true;\n this.scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n var count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler));\nexport { AsapScheduler };\n//# sourceMappingURL=AsapScheduler.js.map\n","/** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Action } from './Action';\nvar AsyncAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n clearInterval(id);\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, delay) {\n var errored = false;\n var errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype._unsubscribe = function () {\n var id = this.id;\n var scheduler = this.scheduler;\n var actions = scheduler.actions;\n var index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map\n","/** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n var _this = _super.call(this, SchedulerAction, function () {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) {\n return AsyncScheduler.delegate.now();\n }\n else {\n return now();\n }\n }) || this;\n _this.actions = [];\n _this.active = false;\n _this.scheduled = undefined;\n return _this;\n }\n AsyncScheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n }\n else {\n return _super.prototype.schedule.call(this, work, delay, state);\n }\n };\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this.active) {\n actions.push(action);\n return;\n }\n var error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar QueueAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return (delay > 0 || this.closed) ?\n _super.prototype.execute.call(this, state, delay) :\n this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n return scheduler.flush(this);\n };\n return QueueAction;\n}(AsyncAction));\nexport { QueueAction };\n//# sourceMappingURL=QueueAction.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar QueueScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler));\nexport { QueueScheduler };\n//# sourceMappingURL=QueueScheduler.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncAction,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nvar VirtualTimeScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(VirtualTimeScheduler, _super);\n function VirtualTimeScheduler(SchedulerAction, maxFrames) {\n if (SchedulerAction === void 0) {\n SchedulerAction = VirtualAction;\n }\n if (maxFrames === void 0) {\n maxFrames = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this, SchedulerAction, function () { return _this.frame; }) || this;\n _this.maxFrames = maxFrames;\n _this.frame = 0;\n _this.index = -1;\n return _this;\n }\n VirtualTimeScheduler.prototype.flush = function () {\n var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n var error, action;\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n }\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n VirtualTimeScheduler.frameTimeFactor = 10;\n return VirtualTimeScheduler;\n}(AsyncScheduler));\nexport { VirtualTimeScheduler };\nvar VirtualAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(VirtualAction, _super);\n function VirtualAction(scheduler, work, index) {\n if (index === void 0) {\n index = scheduler.index += 1;\n }\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.index = index;\n _this.active = true;\n _this.index = scheduler.index = index;\n return _this;\n }\n VirtualAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (!this.id) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.active = false;\n var action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n };\n VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n this.delay = scheduler.frame + delay;\n var actions = scheduler.actions;\n actions.push(this);\n actions.sort(VirtualAction.sortActions);\n return true;\n };\n VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return undefined;\n };\n VirtualAction.prototype._execute = function (state, delay) {\n if (this.active === true) {\n return _super.prototype._execute.call(this, state, delay);\n }\n };\n VirtualAction.sortActions = function (a, b) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n }\n else if (a.index > b.index) {\n return 1;\n }\n else {\n return -1;\n }\n }\n else if (a.delay > b.delay) {\n return 1;\n }\n else {\n return -1;\n }\n };\n return VirtualAction;\n}(AsyncAction));\nexport { VirtualAction };\n//# sourceMappingURL=VirtualTimeScheduler.js.map\n","/** PURE_IMPORTS_START _AnimationFrameAction,_AnimationFrameScheduler PURE_IMPORTS_END */\nimport { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport var animationFrameScheduler = /*@__PURE__*/ new AnimationFrameScheduler(AnimationFrameAction);\nexport var animationFrame = animationFrameScheduler;\n//# sourceMappingURL=animationFrame.js.map\n","/** PURE_IMPORTS_START _AsapAction,_AsapScheduler PURE_IMPORTS_END */\nimport { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport var asapScheduler = /*@__PURE__*/ new AsapScheduler(AsapAction);\nexport var asap = asapScheduler;\n//# sourceMappingURL=asap.js.map\n","/** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */\nimport { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = /*@__PURE__*/ new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map\n","/** PURE_IMPORTS_START _QueueAction,_QueueScheduler PURE_IMPORTS_END */\nimport { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport var queueScheduler = /*@__PURE__*/ new QueueScheduler(QueueAction);\nexport var queue = queueScheduler;\n//# sourceMappingURL=queue.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = /*@__PURE__*/ getSymbolIterator();\nexport var $$iterator = iterator;\n//# sourceMappingURL=iterator.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var observable = /*@__PURE__*/ (function () { return typeof Symbol === 'function' && Symbol.observable || '@@observable'; })();\n//# sourceMappingURL=observable.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var rxSubscriber = /*@__PURE__*/ (function () {\n return typeof Symbol === 'function'\n ? /*@__PURE__*/ Symbol('rxSubscriber')\n : '@@rxSubscriber_' + /*@__PURE__*/ Math.random();\n})();\nexport var $$rxSubscriber = rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar ArgumentOutOfRangeErrorImpl = /*@__PURE__*/ (function () {\n function ArgumentOutOfRangeErrorImpl() {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n ArgumentOutOfRangeErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return ArgumentOutOfRangeErrorImpl;\n})();\nexport var ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar EmptyErrorImpl = /*@__PURE__*/ (function () {\n function EmptyErrorImpl() {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n EmptyErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return EmptyErrorImpl;\n})();\nexport var EmptyError = EmptyErrorImpl;\n//# sourceMappingURL=EmptyError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar nextHandle = 1;\nvar RESOLVED = /*@__PURE__*/ (function () { return /*@__PURE__*/ Promise.resolve(); })();\nvar activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexport var Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n activeHandles[handle] = true;\n RESOLVED.then(function () { return findAndClearHandle(handle) && cb(); });\n return handle;\n },\n clearImmediate: function (handle) {\n findAndClearHandle(handle);\n },\n};\nexport var TestTools = {\n pending: function () {\n return Object.keys(activeHandles).length;\n }\n};\n//# sourceMappingURL=Immediate.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar ObjectUnsubscribedErrorImpl = /*@__PURE__*/ (function () {\n function ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n ObjectUnsubscribedErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return ObjectUnsubscribedErrorImpl;\n})();\nexport var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n//# sourceMappingURL=ObjectUnsubscribedError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar TimeoutErrorImpl = /*@__PURE__*/ (function () {\n function TimeoutErrorImpl() {\n Error.call(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n return this;\n }\n TimeoutErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return TimeoutErrorImpl;\n})();\nexport var TimeoutError = TimeoutErrorImpl;\n//# sourceMappingURL=TimeoutError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar UnsubscriptionErrorImpl = /*@__PURE__*/ (function () {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ') : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport var UnsubscriptionError = UnsubscriptionErrorImpl;\n//# sourceMappingURL=UnsubscriptionError.js.map\n","/** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped;\n if (closed_1 || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\n//# sourceMappingURL=canReportError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function hostReportError(err) {\n setTimeout(function () { throw err; }, 0);\n}\n//# sourceMappingURL=hostReportError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArray = /*@__PURE__*/ (function () { return Array.isArray || (function (x) { return x && typeof x.length === 'number'; }); })();\n//# sourceMappingURL=isArray.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\n//# sourceMappingURL=isDate.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n//# sourceMappingURL=isFunction.js.map\n","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function isInteropObservable(input) {\n return input && typeof input[Symbol_observable] === 'function';\n}\n//# sourceMappingURL=isInteropObservable.js.map\n","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function isIterable(input) {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n//# sourceMappingURL=isIterable.js.map\n","/** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */\nimport { isArray } from './isArray';\nexport function isNumeric(val) {\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n//# sourceMappingURL=isNumeric.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n//# sourceMappingURL=isObject.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function'));\n}\n//# sourceMappingURL=isObservable.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n//# sourceMappingURL=isPromise.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\n//# sourceMappingURL=isScheduler.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function noop() { }\n//# sourceMappingURL=noop.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function not(pred, thisArg) {\n function notPred() {\n return !(notPred.pred.apply(notPred.thisArg, arguments));\n }\n notPred.pred = pred;\n notPred.thisArg = thisArg;\n return notPred;\n}\n//# sourceMappingURL=not.js.map\n","/** PURE_IMPORTS_START _identity PURE_IMPORTS_END */\nimport { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map\n","/** PURE_IMPORTS_START _subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */\nimport { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeTo = function (result) {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result);\n }\n else if (isArrayLike(result)) {\n return subscribeToArray(result);\n }\n else if (isPromise(result)) {\n return subscribeToPromise(result);\n }\n else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result);\n }\n else {\n var value = isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n var msg = \"You provided \" + value + \" where a stream was expected.\"\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n//# sourceMappingURL=subscribeTo.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var subscribeToArray = function (array) {\n return function (subscriber) {\n for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n };\n};\n//# sourceMappingURL=subscribeToArray.js.map\n","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport var subscribeToIterable = function (iterable) {\n return function (subscriber) {\n var iterator = iterable[Symbol_iterator]();\n do {\n var item = void 0;\n try {\n item = iterator.next();\n }\n catch (err) {\n subscriber.error(err);\n return subscriber;\n }\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(function () {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToIterable.js.map\n","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeToObservable = function (obj) {\n return function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n };\n};\n//# sourceMappingURL=subscribeToObservable.js.map\n","/** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */\nimport { hostReportError } from './hostReportError';\nexport var subscribeToPromise = function (promise) {\n return function (subscriber) {\n promise.then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, hostReportError);\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToPromise.js.map\n","/** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo,_Observable PURE_IMPORTS_END */\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, innerSubscriber) {\n if (innerSubscriber === void 0) {\n innerSubscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex);\n }\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber);\n}\n//# sourceMappingURL=subscribeToResult.js.map\n","/** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n//# sourceMappingURL=toSubscriber.js.map\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport 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\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport 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\nexport 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\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range\n .trim()\n .split(/\\s+/)\n .join(' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => comps.join(' ').trim())\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const { MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH } = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_SAFE_COMPONENT_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nvar process = global.process\n\nconst processOk = function (process) {\n return process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function'\n}\n\n// some kind of non-node environment, just no-op\n/* istanbul ignore if */\nif (!processOk(process)) {\n module.exports = function () {\n return function () {}\n }\n} else {\n var assert = require('assert')\n var signals = require('./signals.js')\n var isWin = /^win/i.test(process.platform)\n\n var EE = require('events')\n /* istanbul ignore if */\n if (typeof EE !== 'function') {\n EE = EE.EventEmitter\n }\n\n var emitter\n if (process.__signal_exit_emitter__) {\n emitter = process.__signal_exit_emitter__\n } else {\n emitter = process.__signal_exit_emitter__ = new EE()\n emitter.count = 0\n emitter.emitted = {}\n }\n\n // Because this emitter is a global, we have to check to see if a\n // previous version of this library failed to enable infinite listeners.\n // I know what you're about to say. But literally everything about\n // signal-exit is a compromise with evil. Get used to it.\n if (!emitter.infinite) {\n emitter.setMaxListeners(Infinity)\n emitter.infinite = true\n }\n\n module.exports = function (cb, opts) {\n /* istanbul ignore if */\n if (!processOk(global.process)) {\n return function () {}\n }\n assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler')\n\n if (loaded === false) {\n load()\n }\n\n var ev = 'exit'\n if (opts && opts.alwaysLast) {\n ev = 'afterexit'\n }\n\n var remove = function () {\n emitter.removeListener(ev, cb)\n if (emitter.listeners('exit').length === 0 &&\n emitter.listeners('afterexit').length === 0) {\n unload()\n }\n }\n emitter.on(ev, cb)\n\n return remove\n }\n\n var unload = function unload () {\n if (!loaded || !processOk(global.process)) {\n return\n }\n loaded = false\n\n signals.forEach(function (sig) {\n try {\n process.removeListener(sig, sigListeners[sig])\n } catch (er) {}\n })\n process.emit = originalProcessEmit\n process.reallyExit = originalProcessReallyExit\n emitter.count -= 1\n }\n module.exports.unload = unload\n\n var emit = function emit (event, code, signal) {\n /* istanbul ignore if */\n if (emitter.emitted[event]) {\n return\n }\n emitter.emitted[event] = true\n emitter.emit(event, code, signal)\n }\n\n // { : , ... }\n var sigListeners = {}\n signals.forEach(function (sig) {\n sigListeners[sig] = function listener () {\n /* istanbul ignore if */\n if (!processOk(global.process)) {\n return\n }\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n var listeners = process.listeners(sig)\n if (listeners.length === emitter.count) {\n unload()\n emit('exit', null, sig)\n /* istanbul ignore next */\n emit('afterexit', null, sig)\n /* istanbul ignore next */\n if (isWin && sig === 'SIGHUP') {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n sig = 'SIGINT'\n }\n /* istanbul ignore next */\n process.kill(process.pid, sig)\n }\n }\n })\n\n module.exports.signals = function () {\n return signals\n }\n\n var loaded = false\n\n var load = function load () {\n if (loaded || !processOk(global.process)) {\n return\n }\n loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n emitter.count += 1\n\n signals = signals.filter(function (sig) {\n try {\n process.on(sig, sigListeners[sig])\n return true\n } catch (er) {\n return false\n }\n })\n\n process.emit = processEmit\n process.reallyExit = processReallyExit\n }\n module.exports.load = load\n\n var originalProcessReallyExit = process.reallyExit\n var processReallyExit = function processReallyExit (code) {\n /* istanbul ignore if */\n if (!processOk(global.process)) {\n return\n }\n process.exitCode = code || /* istanbul ignore next */ 0\n emit('exit', process.exitCode, null)\n /* istanbul ignore next */\n emit('afterexit', process.exitCode, null)\n /* istanbul ignore next */\n originalProcessReallyExit.call(process, process.exitCode)\n }\n\n var originalProcessEmit = process.emit\n var processEmit = function processEmit (ev, arg) {\n if (ev === 'exit' && processOk(global.process)) {\n /* istanbul ignore else */\n if (arg !== undefined) {\n process.exitCode = arg\n }\n var ret = originalProcessEmit.apply(this, arguments)\n /* istanbul ignore next */\n emit('exit', process.exitCode, null)\n /* istanbul ignore next */\n emit('afterexit', process.exitCode, null)\n /* istanbul ignore next */\n return ret\n } else {\n return originalProcessEmit.apply(this, arguments)\n }\n }\n}\n","// This is not the set of all possible signals.\n//\n// It IS, however, the set of all signals that trigger\n// an exit on either Linux or BSD systems. Linux is a\n// superset of the signal names supported on BSD, and\n// the unknown signals just fail to register, so we can\n// catch that easily enough.\n//\n// Don't bother with SIGKILL. It's uncatchable, which\n// means that we can't fire any callbacks anyway.\n//\n// If a user does happen to register a handler on a non-\n// fatal signal like SIGWINCH or something, and then\n// exit, it'll end up firing `process.emit('exit')`, so\n// the handler will be fired anyway.\n//\n// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n// artificially, inherently leave the process in a\n// state from which it is not safe to try and enter JS\n// listeners.\nmodule.exports = [\n 'SIGABRT',\n 'SIGALRM',\n 'SIGHUP',\n 'SIGINT',\n 'SIGTERM'\n]\n\nif (process.platform !== 'win32') {\n module.exports.push(\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n module.exports.push(\n 'SIGIO',\n 'SIGPOLL',\n 'SIGPWR',\n 'SIGSTKFLT',\n 'SIGUNUSED'\n )\n}\n","'use strict';\nmodule.exports = path => {\n\tconst isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(path);\n\tconst hasNonAscii = /[^\\u0000-\\u0080]+/.test(path); // eslint-disable-line no-control-regex\n\n\tif (isExtendedLengthPath || hasNonAscii) {\n\t\treturn path;\n\t}\n\n\treturn path.replace(/\\\\/g, '/');\n};\n","'use strict';\nconst isPlainObj = require('is-plain-obj');\n\nmodule.exports = (obj, opts) => {\n\tif (!isPlainObj(obj)) {\n\t\tthrow new TypeError('Expected a plain object');\n\t}\n\n\topts = opts || {};\n\n\t// DEPRECATED\n\tif (typeof opts === 'function') {\n\t\tthrow new TypeError('Specify the compare function as an option instead');\n\t}\n\n\tconst deep = opts.deep;\n\tconst seenInput = [];\n\tconst seenOutput = [];\n\n\tconst sortKeys = x => {\n\t\tconst seenIndex = seenInput.indexOf(x);\n\n\t\tif (seenIndex !== -1) {\n\t\t\treturn seenOutput[seenIndex];\n\t\t}\n\n\t\tconst ret = {};\n\t\tconst keys = Object.keys(x).sort(opts.compare);\n\n\t\tseenInput.push(x);\n\t\tseenOutput.push(ret);\n\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key = keys[i];\n\t\t\tconst val = x[key];\n\n\t\t\tif (deep && Array.isArray(val)) {\n\t\t\t\tconst retArr = [];\n\n\t\t\t\tfor (let j = 0; j < val.length; j++) {\n\t\t\t\t\tretArr[j] = isPlainObj(val[j]) ? sortKeys(val[j]) : val[j];\n\t\t\t\t}\n\n\t\t\t\tret[key] = retArr;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tret[key] = deep && isPlainObj(val) ? sortKeys(val) : val;\n\t\t}\n\n\t\treturn ret;\n\t};\n\n\treturn sortKeys(obj);\n};\n","/*\nCopyright spdx-correct.js contributors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar parse = require('spdx-expression-parse')\nvar spdxLicenseIds = require('spdx-license-ids')\n\nfunction valid (string) {\n try {\n parse(string)\n return true\n } catch (error) {\n return false\n }\n}\n\n// Common transpositions of license identifier acronyms\nvar transpositions = [\n ['APGL', 'AGPL'],\n ['Gpl', 'GPL'],\n ['GLP', 'GPL'],\n ['APL', 'Apache'],\n ['ISD', 'ISC'],\n ['GLP', 'GPL'],\n ['IST', 'ISC'],\n ['Claude', 'Clause'],\n [' or later', '+'],\n [' International', ''],\n ['GNU', 'GPL'],\n ['GUN', 'GPL'],\n ['+', ''],\n ['GNU GPL', 'GPL'],\n ['GNU/GPL', 'GPL'],\n ['GNU GLP', 'GPL'],\n ['GNU General Public License', 'GPL'],\n ['Gnu public license', 'GPL'],\n ['GNU Public License', 'GPL'],\n ['GNU GENERAL PUBLIC LICENSE', 'GPL'],\n ['MTI', 'MIT'],\n ['Mozilla Public License', 'MPL'],\n ['Universal Permissive License', 'UPL'],\n ['WTH', 'WTF'],\n ['-License', '']\n]\n\nvar TRANSPOSED = 0\nvar CORRECT = 1\n\n// Simple corrections to nearly valid identifiers.\nvar transforms = [\n // e.g. 'mit'\n function (argument) {\n return argument.toUpperCase()\n },\n // e.g. 'MIT '\n function (argument) {\n return argument.trim()\n },\n // e.g. 'M.I.T.'\n function (argument) {\n return argument.replace(/\\./g, '')\n },\n // e.g. 'Apache- 2.0'\n function (argument) {\n return argument.replace(/\\s+/g, '')\n },\n // e.g. 'CC BY 4.0''\n function (argument) {\n return argument.replace(/\\s+/g, '-')\n },\n // e.g. 'LGPLv2.1'\n function (argument) {\n return argument.replace('v', '-')\n },\n // e.g. 'Apache 2.0'\n function (argument) {\n return argument.replace(/,?\\s*(\\d)/, '-$1')\n },\n // e.g. 'GPL 2'\n function (argument) {\n return argument.replace(/,?\\s*(\\d)/, '-$1.0')\n },\n // e.g. 'Apache Version 2.0'\n function (argument) {\n return argument\n .replace(/,?\\s*(V\\.|v\\.|V|v|Version|version)\\s*(\\d)/, '-$2')\n },\n // e.g. 'Apache Version 2'\n function (argument) {\n return argument\n .replace(/,?\\s*(V\\.|v\\.|V|v|Version|version)\\s*(\\d)/, '-$2.0')\n },\n // e.g. 'ZLIB'\n function (argument) {\n return argument[0].toUpperCase() + argument.slice(1)\n },\n // e.g. 'MPL/2.0'\n function (argument) {\n return argument.replace('/', '-')\n },\n // e.g. 'Apache 2'\n function (argument) {\n return argument\n .replace(/\\s*V\\s*(\\d)/, '-$1')\n .replace(/(\\d)$/, '$1.0')\n },\n // e.g. 'GPL-2.0', 'GPL-3.0'\n function (argument) {\n if (argument.indexOf('3.0') !== -1) {\n return argument + '-or-later'\n } else {\n return argument + '-only'\n }\n },\n // e.g. 'GPL-2.0-'\n function (argument) {\n return argument + 'only'\n },\n // e.g. 'GPL2'\n function (argument) {\n return argument.replace(/(\\d)$/, '-$1.0')\n },\n // e.g. 'BSD 3'\n function (argument) {\n return argument.replace(/(-| )?(\\d)$/, '-$2-Clause')\n },\n // e.g. 'BSD clause 3'\n function (argument) {\n return argument.replace(/(-| )clause(-| )(\\d)/, '-$3-Clause')\n },\n // e.g. 'New BSD license'\n function (argument) {\n return argument.replace(/\\b(Modified|New|Revised)(-| )?BSD((-| )License)?/i, 'BSD-3-Clause')\n },\n // e.g. 'Simplified BSD license'\n function (argument) {\n return argument.replace(/\\bSimplified(-| )?BSD((-| )License)?/i, 'BSD-2-Clause')\n },\n // e.g. 'Free BSD license'\n function (argument) {\n return argument.replace(/\\b(Free|Net)(-| )?BSD((-| )License)?/i, 'BSD-2-Clause-$1BSD')\n },\n // e.g. 'Clear BSD license'\n function (argument) {\n return argument.replace(/\\bClear(-| )?BSD((-| )License)?/i, 'BSD-3-Clause-Clear')\n },\n // e.g. 'Old BSD License'\n function (argument) {\n return argument.replace(/\\b(Old|Original)(-| )?BSD((-| )License)?/i, 'BSD-4-Clause')\n },\n // e.g. 'BY-NC-4.0'\n function (argument) {\n return 'CC-' + argument\n },\n // e.g. 'BY-NC'\n function (argument) {\n return 'CC-' + argument + '-4.0'\n },\n // e.g. 'Attribution-NonCommercial'\n function (argument) {\n return argument\n .replace('Attribution', 'BY')\n .replace('NonCommercial', 'NC')\n .replace('NoDerivatives', 'ND')\n .replace(/ (\\d)/, '-$1')\n .replace(/ ?International/, '')\n },\n // e.g. 'Attribution-NonCommercial'\n function (argument) {\n return 'CC-' +\n argument\n .replace('Attribution', 'BY')\n .replace('NonCommercial', 'NC')\n .replace('NoDerivatives', 'ND')\n .replace(/ (\\d)/, '-$1')\n .replace(/ ?International/, '') +\n '-4.0'\n }\n]\n\nvar licensesWithVersions = spdxLicenseIds\n .map(function (id) {\n var match = /^(.*)-\\d+\\.\\d+$/.exec(id)\n return match\n ? [match[0], match[1]]\n : [id, null]\n })\n .reduce(function (objectMap, item) {\n var key = item[1]\n objectMap[key] = objectMap[key] || []\n objectMap[key].push(item[0])\n return objectMap\n }, {})\n\nvar licensesWithOneVersion = Object.keys(licensesWithVersions)\n .map(function makeEntries (key) {\n return [key, licensesWithVersions[key]]\n })\n .filter(function identifySoleVersions (item) {\n return (\n // Licenses has just one valid version suffix.\n item[1].length === 1 &&\n item[0] !== null &&\n // APL will be considered Apache, rather than APL-1.0\n item[0] !== 'APL'\n )\n })\n .map(function createLastResorts (item) {\n return [item[0], item[1][0]]\n })\n\nlicensesWithVersions = undefined\n\n// If all else fails, guess that strings containing certain substrings\n// meant to identify certain licenses.\nvar lastResorts = [\n ['UNLI', 'Unlicense'],\n ['WTF', 'WTFPL'],\n ['2 CLAUSE', 'BSD-2-Clause'],\n ['2-CLAUSE', 'BSD-2-Clause'],\n ['3 CLAUSE', 'BSD-3-Clause'],\n ['3-CLAUSE', 'BSD-3-Clause'],\n ['AFFERO', 'AGPL-3.0-or-later'],\n ['AGPL', 'AGPL-3.0-or-later'],\n ['APACHE', 'Apache-2.0'],\n ['ARTISTIC', 'Artistic-2.0'],\n ['Affero', 'AGPL-3.0-or-later'],\n ['BEER', 'Beerware'],\n ['BOOST', 'BSL-1.0'],\n ['BSD', 'BSD-2-Clause'],\n ['CDDL', 'CDDL-1.1'],\n ['ECLIPSE', 'EPL-1.0'],\n ['FUCK', 'WTFPL'],\n ['GNU', 'GPL-3.0-or-later'],\n ['LGPL', 'LGPL-3.0-or-later'],\n ['GPLV1', 'GPL-1.0-only'],\n ['GPL-1', 'GPL-1.0-only'],\n ['GPLV2', 'GPL-2.0-only'],\n ['GPL-2', 'GPL-2.0-only'],\n ['GPL', 'GPL-3.0-or-later'],\n ['MIT +NO-FALSE-ATTRIBS', 'MITNFA'],\n ['MIT', 'MIT'],\n ['MPL', 'MPL-2.0'],\n ['X11', 'X11'],\n ['ZLIB', 'Zlib']\n].concat(licensesWithOneVersion)\n\nvar SUBSTRING = 0\nvar IDENTIFIER = 1\n\nvar validTransformation = function (identifier) {\n for (var i = 0; i < transforms.length; i++) {\n var transformed = transforms[i](identifier).trim()\n if (transformed !== identifier && valid(transformed)) {\n return transformed\n }\n }\n return null\n}\n\nvar validLastResort = function (identifier) {\n var upperCased = identifier.toUpperCase()\n for (var i = 0; i < lastResorts.length; i++) {\n var lastResort = lastResorts[i]\n if (upperCased.indexOf(lastResort[SUBSTRING]) > -1) {\n return lastResort[IDENTIFIER]\n }\n }\n return null\n}\n\nvar anyCorrection = function (identifier, check) {\n for (var i = 0; i < transpositions.length; i++) {\n var transposition = transpositions[i]\n var transposed = transposition[TRANSPOSED]\n if (identifier.indexOf(transposed) > -1) {\n var corrected = identifier.replace(\n transposed,\n transposition[CORRECT]\n )\n var checked = check(corrected)\n if (checked !== null) {\n return checked\n }\n }\n }\n return null\n}\n\nmodule.exports = function (identifier, options) {\n options = options || {}\n var upgrade = options.upgrade === undefined ? true : !!options.upgrade\n function postprocess (value) {\n return upgrade ? upgradeGPLs(value) : value\n }\n var validArugment = (\n typeof identifier === 'string' &&\n identifier.trim().length !== 0\n )\n if (!validArugment) {\n throw Error('Invalid argument. Expected non-empty string.')\n }\n identifier = identifier.trim()\n if (valid(identifier)) {\n return postprocess(identifier)\n }\n var noPlus = identifier.replace(/\\+$/, '').trim()\n if (valid(noPlus)) {\n return postprocess(noPlus)\n }\n var transformed = validTransformation(identifier)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = anyCorrection(identifier, function (argument) {\n if (valid(argument)) {\n return argument\n }\n return validTransformation(argument)\n })\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = validLastResort(identifier)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = anyCorrection(identifier, validLastResort)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n return null\n}\n\nfunction upgradeGPLs (value) {\n if ([\n 'GPL-1.0', 'LGPL-1.0', 'AGPL-1.0',\n 'GPL-2.0', 'LGPL-2.0', 'AGPL-2.0',\n 'LGPL-2.1'\n ].indexOf(value) !== -1) {\n return value + '-only'\n } else if ([\n 'GPL-1.0+', 'GPL-2.0+', 'GPL-3.0+',\n 'LGPL-2.0+', 'LGPL-2.1+', 'LGPL-3.0+',\n 'AGPL-1.0+', 'AGPL-3.0+'\n ].indexOf(value) !== -1) {\n return value.replace(/\\+$/, '-or-later')\n } else if (['GPL-3.0', 'LGPL-3.0', 'AGPL-3.0'].indexOf(value) !== -1) {\n return value + '-or-later'\n } else {\n return value\n }\n}\n","'use strict'\n\nvar scan = require('./scan')\nvar parse = require('./parse')\n\nmodule.exports = function (source) {\n return parse(scan(source))\n}\n","'use strict'\n\n// The ABNF grammar in the spec is totally ambiguous.\n//\n// This parser follows the operator precedence defined in the\n// `Order of Precedence and Parentheses` section.\n\nmodule.exports = function (tokens) {\n var index = 0\n\n function hasMore () {\n return index < tokens.length\n }\n\n function token () {\n return hasMore() ? tokens[index] : null\n }\n\n function next () {\n if (!hasMore()) {\n throw new Error()\n }\n index++\n }\n\n function parseOperator (operator) {\n var t = token()\n if (t && t.type === 'OPERATOR' && operator === t.string) {\n next()\n return t.string\n }\n }\n\n function parseWith () {\n if (parseOperator('WITH')) {\n var t = token()\n if (t && t.type === 'EXCEPTION') {\n next()\n return t.string\n }\n throw new Error('Expected exception after `WITH`')\n }\n }\n\n function parseLicenseRef () {\n // TODO: Actually, everything is concatenated into one string\n // for backward-compatibility but it could be better to return\n // a nice structure.\n var begin = index\n var string = ''\n var t = token()\n if (t.type === 'DOCUMENTREF') {\n next()\n string += 'DocumentRef-' + t.string + ':'\n if (!parseOperator(':')) {\n throw new Error('Expected `:` after `DocumentRef-...`')\n }\n }\n t = token()\n if (t.type === 'LICENSEREF') {\n next()\n string += 'LicenseRef-' + t.string\n return { license: string }\n }\n index = begin\n }\n\n function parseLicense () {\n var t = token()\n if (t && t.type === 'LICENSE') {\n next()\n var node = { license: t.string }\n if (parseOperator('+')) {\n node.plus = true\n }\n var exception = parseWith()\n if (exception) {\n node.exception = exception\n }\n return node\n }\n }\n\n function parseParenthesizedExpression () {\n var left = parseOperator('(')\n if (!left) {\n return\n }\n\n var expr = parseExpression()\n\n if (!parseOperator(')')) {\n throw new Error('Expected `)`')\n }\n\n return expr\n }\n\n function parseAtom () {\n return (\n parseParenthesizedExpression() ||\n parseLicenseRef() ||\n parseLicense()\n )\n }\n\n function makeBinaryOpParser (operator, nextParser) {\n return function parseBinaryOp () {\n var left = nextParser()\n if (!left) {\n return\n }\n\n if (!parseOperator(operator)) {\n return left\n }\n\n var right = parseBinaryOp()\n if (!right) {\n throw new Error('Expected expression')\n }\n return {\n left: left,\n conjunction: operator.toLowerCase(),\n right: right\n }\n }\n }\n\n var parseAnd = makeBinaryOpParser('AND', parseAtom)\n var parseExpression = makeBinaryOpParser('OR', parseAnd)\n\n var node = parseExpression()\n if (!node || hasMore()) {\n throw new Error('Syntax error')\n }\n return node\n}\n","'use strict'\n\nvar licenses = []\n .concat(require('spdx-license-ids'))\n .concat(require('spdx-license-ids/deprecated'))\nvar exceptions = require('spdx-exceptions')\n\nmodule.exports = function (source) {\n var index = 0\n\n function hasMore () {\n return index < source.length\n }\n\n // `value` can be a regexp or a string.\n // If it is recognized, the matching source string is returned and\n // the index is incremented. Otherwise `undefined` is returned.\n function read (value) {\n if (value instanceof RegExp) {\n var chars = source.slice(index)\n var match = chars.match(value)\n if (match) {\n index += match[0].length\n return match[0]\n }\n } else {\n if (source.indexOf(value, index) === index) {\n index += value.length\n return value\n }\n }\n }\n\n function skipWhitespace () {\n read(/[ ]*/)\n }\n\n function operator () {\n var string\n var possibilities = ['WITH', 'AND', 'OR', '(', ')', ':', '+']\n for (var i = 0; i < possibilities.length; i++) {\n string = read(possibilities[i])\n if (string) {\n break\n }\n }\n\n if (string === '+' && index > 1 && source[index - 2] === ' ') {\n throw new Error('Space before `+`')\n }\n\n return string && {\n type: 'OPERATOR',\n string: string\n }\n }\n\n function idstring () {\n return read(/[A-Za-z0-9-.]+/)\n }\n\n function expectIdstring () {\n var string = idstring()\n if (!string) {\n throw new Error('Expected idstring at offset ' + index)\n }\n return string\n }\n\n function documentRef () {\n if (read('DocumentRef-')) {\n var string = expectIdstring()\n return { type: 'DOCUMENTREF', string: string }\n }\n }\n\n function licenseRef () {\n if (read('LicenseRef-')) {\n var string = expectIdstring()\n return { type: 'LICENSEREF', string: string }\n }\n }\n\n function identifier () {\n var begin = index\n var string = idstring()\n\n if (licenses.indexOf(string) !== -1) {\n return {\n type: 'LICENSE',\n string: string\n }\n } else if (exceptions.indexOf(string) !== -1) {\n return {\n type: 'EXCEPTION',\n string: string\n }\n }\n\n index = begin\n }\n\n // Tries to read the next token. Returns `undefined` if no token is\n // recognized.\n function parseToken () {\n // Ordering matters\n return (\n operator() ||\n documentRef() ||\n licenseRef() ||\n identifier()\n )\n }\n\n var tokens = []\n while (hasMore()) {\n skipWhitespace()\n if (!hasMore()) {\n break\n }\n\n var token = parseToken()\n if (!token) {\n throw new Error('Unexpected `' + source[index] +\n '` at offset ' + index)\n }\n\n tokens.push(token)\n }\n return tokens\n}\n","'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n","'use strict';\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a string, got ${typeof string}`);\n\t}\n\n\t// Catches EFBBBF (UTF-8 BOM) because the buffer-to-string\n\t// conversion translates it to FEFF (UTF-16 BOM)\n\tif (string.charCodeAt(0) === 0xFEFF) {\n\t\treturn string.slice(1);\n\t}\n\n\treturn string;\n};\n","'use strict';\n\nmodule.exports = input => {\n\tconst LF = typeof input === 'string' ? '\\n' : '\\n'.charCodeAt();\n\tconst CR = typeof input === 'string' ? '\\r' : '\\r'.charCodeAt();\n\n\tif (input[input.length - 1] === LF) {\n\t\tinput = input.slice(0, input.length - 1);\n\t}\n\n\tif (input[input.length - 1] === CR) {\n\t\tinput = input.slice(0, input.length - 1);\n\t}\n\n\treturn input;\n};\n","// Copyright IBM Corp. 2014,2018. All Rights Reserved.\n// Node module: strong-log-transformer\n// This file is licensed under the Apache License 2.0.\n// License text available at https://opensource.org/licenses/Apache-2.0\n\nmodule.exports = require('./lib/logger');\nmodule.exports.cli = require('./lib/cli');\n","// Copyright IBM Corp. 2014,2018. All Rights Reserved.\n// Node module: strong-log-transformer\n// This file is licensed under the Apache License 2.0.\n// License text available at https://opensource.org/licenses/Apache-2.0\n\n'use strict';\n\nvar minimist = require('minimist');\nvar path = require('path');\n\nvar Logger = require('./logger');\nvar pkg = require('../package.json');\n\nmodule.exports = cli;\n\nfunction cli(args) {\n var opts = minimist(args.slice(2));\n var $0 = path.basename(args[1]);\n var p = console.log.bind(console);\n if (opts.v || opts.version) {\n version($0, p);\n } else if (opts.h || opts.help) {\n usage($0, p);\n } else if (args.length < 3) {\n process.stdin.pipe(Logger()).pipe(process.stdout);\n } else {\n process.stdin.pipe(Logger(opts)).pipe(process.stdout);\n }\n}\n\nfunction version($0, p) {\n p('%s v%s', pkg.name, pkg.version);\n}\n\nfunction usage($0, p) {\n var PADDING = ' ';\n var opt, def;\n p('Usage: %s [options]', $0);\n p('');\n p('%s', pkg.description);\n p('');\n p('OPTIONS:');\n for (opt in Logger.DEFAULTS) {\n def = Logger.DEFAULTS[opt];\n if (typeof def === 'boolean')\n boolOpt(opt, Logger.DEFAULTS[opt]);\n else\n stdOpt(opt, Logger.DEFAULTS[opt]);\n }\n p('');\n\n function boolOpt(name, def) {\n name = name + PADDING.slice(0, 20-name.length);\n p(' --%s default: %s', name, def);\n }\n\n function stdOpt(name, def) {\n var value = name.toUpperCase() +\n PADDING.slice(0, 19 - name.length*2);\n p(' --%s %s default: %j', name, value, def);\n }\n}\n","// Copyright IBM Corp. 2014,2018. All Rights Reserved.\n// Node module: strong-log-transformer\n// This file is licensed under the Apache License 2.0.\n// License text available at https://opensource.org/licenses/Apache-2.0\n\n'use strict';\n\nvar stream = require('stream');\nvar util = require('util');\nvar fs = require('fs');\n\nvar through = require('through');\nvar duplexer = require('duplexer');\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nmodule.exports = Logger;\n\nLogger.DEFAULTS = {\n format: 'text',\n tag: '',\n mergeMultiline: false,\n timeStamp: false,\n};\n\nvar formatters = {\n text: textFormatter,\n json: jsonFormatter,\n}\n\nfunction Logger(options) {\n var defaults = JSON.parse(JSON.stringify(Logger.DEFAULTS));\n options = util._extend(defaults, options || {});\n var catcher = deLiner();\n var emitter = catcher;\n var transforms = [\n objectifier(),\n ];\n\n if (options.tag) {\n transforms.push(staticTagger(options.tag));\n }\n\n if (options.mergeMultiline) {\n transforms.push(lineMerger());\n }\n\n // TODO\n // if (options.pidStamp) {\n // transforms.push(pidStamper(options.pid));\n // }\n\n // TODO\n // if (options.workerStamp) {\n // transforms.push(workerStamper(options.worker));\n // }\n\n transforms.push(formatters[options.format](options));\n\n // restore line endings that were removed by line splitting\n transforms.push(reLiner());\n\n for (var t in transforms) {\n emitter = emitter.pipe(transforms[t]);\n }\n\n return duplexer(catcher, emitter);\n}\n\nfunction deLiner() {\n var decoder = new StringDecoder('utf8');\n var last = '';\n\n return new stream.Transform({\n transform(chunk, _enc, callback) {\n last += decoder.write(chunk);\n var list = last.split(/\\r\\n|[\\n\\v\\f\\r\\x85\\u2028\\u2029]/g);\n last = list.pop();\n for (var i = 0; i < list.length; i++) {\n // swallow empty lines\n if (list[i]) {\n this.push(list[i]);\n }\n }\n callback();\n },\n flush(callback) {\n // incomplete UTF8 sequences become UTF8 replacement characters\n last += decoder.end();\n if (last) {\n this.push(last);\n }\n callback();\n },\n });\n}\n\nfunction reLiner() {\n return through(appendNewline);\n\n function appendNewline(line) {\n this.emit('data', line + '\\n');\n }\n}\n\nfunction objectifier() {\n return through(objectify, null, {autoDestroy: false});\n\n function objectify(line) {\n this.emit('data', {\n msg: line,\n time: Date.now(),\n });\n }\n}\n\nfunction staticTagger(tag) {\n return through(tagger);\n\n function tagger(logEvent) {\n logEvent.tag = tag;\n this.emit('data', logEvent);\n }\n}\n\nfunction textFormatter(options) {\n return through(textify);\n\n function textify(logEvent) {\n var line = util.format('%s%s', textifyTags(logEvent.tag),\n logEvent.msg.toString());\n if (options.timeStamp) {\n line = util.format('%s %s', new Date(logEvent.time).toISOString(), line);\n }\n this.emit('data', line.replace(/\\n/g, '\\\\n'));\n }\n\n function textifyTags(tags) {\n var str = '';\n if (typeof tags === 'string') {\n str = tags + ' ';\n } else if (typeof tags === 'object') {\n for (var t in tags) {\n str += t + ':' + tags[t] + ' ';\n }\n }\n return str;\n }\n}\n\nfunction jsonFormatter(options) {\n return through(jsonify);\n\n function jsonify(logEvent) {\n if (options.timeStamp) {\n logEvent.time = new Date(logEvent.time).toISOString();\n } else {\n delete logEvent.time;\n }\n logEvent.msg = logEvent.msg.toString();\n this.emit('data', JSON.stringify(logEvent));\n }\n}\n\nfunction lineMerger(host) {\n var previousLine = null;\n var flushTimer = null;\n var stream = through(lineMergerWrite, lineMergerEnd);\n var flush = _flush.bind(stream);\n\n return stream;\n\n function lineMergerWrite(line) {\n if (/^\\s+/.test(line.msg)) {\n if (previousLine) {\n previousLine.msg += '\\n' + line.msg;\n } else {\n previousLine = line;\n }\n } else {\n flush();\n previousLine = line;\n }\n // rolling timeout\n clearTimeout(flushTimer);\n flushTimer = setTimeout(flush.bind(this), 10);\n }\n\n function _flush() {\n if (previousLine) {\n this.emit('data', previousLine);\n previousLine = null;\n }\n }\n\n function lineMergerEnd() {\n flush.call(this);\n this.emit('end');\n }\n}\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","var Stream = require('stream')\n\n// through\n//\n// a stream that does nothing but re-emit the input.\n// useful for aggregating a series of changing but not ending streams into one stream)\n\nexports = module.exports = through\nthrough.through = through\n\n//create a readable writable stream.\n\nfunction through (write, end, opts) {\n write = write || function (data) { this.queue(data) }\n end = end || function () { this.queue(null) }\n\n var ended = false, destroyed = false, buffer = [], _ended = false\n var stream = new Stream()\n stream.readable = stream.writable = true\n stream.paused = false\n\n// stream.autoPause = !(opts && opts.autoPause === false)\n stream.autoDestroy = !(opts && opts.autoDestroy === false)\n\n stream.write = function (data) {\n write.call(this, data)\n return !stream.paused\n }\n\n function drain() {\n while(buffer.length && !stream.paused) {\n var data = buffer.shift()\n if(null === data)\n return stream.emit('end')\n else\n stream.emit('data', data)\n }\n }\n\n stream.queue = stream.push = function (data) {\n// console.error(ended)\n if(_ended) return stream\n if(data === null) _ended = true\n buffer.push(data)\n drain()\n return stream\n }\n\n //this will be registered as the first 'end' listener\n //must call destroy next tick, to make sure we're after any\n //stream piped from here.\n //this is only a problem if end is not emitted synchronously.\n //a nicer way to do this is to make sure this is the last listener for 'end'\n\n stream.on('end', function () {\n stream.readable = false\n if(!stream.writable && stream.autoDestroy)\n process.nextTick(function () {\n stream.destroy()\n })\n })\n\n function _end () {\n stream.writable = false\n end.call(stream)\n if(!stream.readable && stream.autoDestroy)\n stream.destroy()\n }\n\n stream.end = function (data) {\n if(ended) return\n ended = true\n if(arguments.length) stream.write(data)\n _end() // will emit or queue\n return stream\n }\n\n stream.destroy = function () {\n if(destroyed) return\n destroyed = true\n ended = true\n buffer.length = 0\n stream.writable = stream.readable = false\n stream.emit('close')\n return stream\n }\n\n stream.pause = function () {\n if(stream.paused) return\n stream.paused = true\n return stream\n }\n\n stream.resume = function () {\n if(stream.paused) {\n stream.paused = false\n stream.emit('resume')\n }\n drain()\n //may have become paused again,\n //as drain emits 'data'.\n if(!stream.paused)\n stream.emit('drain')\n return stream\n }\n return stream\n}\n\n","/*!\n * to-regex-range \n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n if (isNumber(min) === false) {\n throw new TypeError('toRegexRange: expected the first argument to be a number');\n }\n\n if (max === void 0 || min === max) {\n return String(min);\n }\n\n if (isNumber(max) === false) {\n throw new TypeError('toRegexRange: expected the second argument to be a number.');\n }\n\n let opts = { relaxZeros: true, ...options };\n if (typeof opts.strictZeros === 'boolean') {\n opts.relaxZeros = opts.strictZeros === false;\n }\n\n let relax = String(opts.relaxZeros);\n let shorthand = String(opts.shorthand);\n let capture = String(opts.capture);\n let wrap = String(opts.wrap);\n let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n return toRegexRange.cache[cacheKey].result;\n }\n\n let a = Math.min(min, max);\n let b = Math.max(min, max);\n\n if (Math.abs(a - b) === 1) {\n let result = min + '|' + max;\n if (opts.capture) {\n return `(${result})`;\n }\n if (opts.wrap === false) {\n return result;\n }\n return `(?:${result})`;\n }\n\n let isPadded = hasPadding(min) || hasPadding(max);\n let state = { min, max, a, b };\n let positives = [];\n let negatives = [];\n\n if (isPadded) {\n state.isPadded = isPadded;\n state.maxLen = String(state.max).length;\n }\n\n if (a < 0) {\n let newMin = b < 0 ? Math.abs(b) : 1;\n negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n a = state.a = 0;\n }\n\n if (b >= 0) {\n positives = splitToPatterns(a, b, state, opts);\n }\n\n state.negatives = negatives;\n state.positives = positives;\n state.result = collatePatterns(negatives, positives, opts);\n\n if (opts.capture === true) {\n state.result = `(${state.result})`;\n } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n state.result = `(?:${state.result})`;\n }\n\n toRegexRange.cache[cacheKey] = state;\n return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n let nines = 1;\n let zeros = 1;\n\n let stop = countNines(min, nines);\n let stops = new Set([max]);\n\n while (min <= stop && stop <= max) {\n stops.add(stop);\n nines += 1;\n stop = countNines(min, nines);\n }\n\n stop = countZeros(max + 1, zeros) - 1;\n\n while (min < stop && stop <= max) {\n stops.add(stop);\n zeros += 1;\n stop = countZeros(max + 1, zeros) - 1;\n }\n\n stops = [...stops];\n stops.sort(compare);\n return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n if (start === stop) {\n return { pattern: start, count: [], digits: 0 };\n }\n\n let zipped = zip(start, stop);\n let digits = zipped.length;\n let pattern = '';\n let count = 0;\n\n for (let i = 0; i < digits; i++) {\n let [startDigit, stopDigit] = zipped[i];\n\n if (startDigit === stopDigit) {\n pattern += startDigit;\n\n } else if (startDigit !== '0' || stopDigit !== '9') {\n pattern += toCharacterClass(startDigit, stopDigit, options);\n\n } else {\n count++;\n }\n }\n\n if (count) {\n pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n }\n\n return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n let ranges = splitToRanges(min, max);\n let tokens = [];\n let start = min;\n let prev;\n\n for (let i = 0; i < ranges.length; i++) {\n let max = ranges[i];\n let obj = rangeToPattern(String(start), String(max), options);\n let zeros = '';\n\n if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n if (prev.count.length > 1) {\n prev.count.pop();\n }\n\n prev.count.push(obj.count[0]);\n prev.string = prev.pattern + toQuantifier(prev.count);\n start = max + 1;\n continue;\n }\n\n if (tok.isPadded) {\n zeros = padZeros(max, tok, options);\n }\n\n obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n tokens.push(obj);\n start = max + 1;\n prev = obj;\n }\n\n return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n let result = [];\n\n for (let ele of arr) {\n let { string } = ele;\n\n // only push if _both_ are negative...\n if (!intersection && !contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n\n // or _both_ are positive\n if (intersection && contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n }\n return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n let arr = [];\n for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n return arr;\n}\n\nfunction compare(a, b) {\n return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n let [start = 0, stop = ''] = digits;\n if (stop || start > 1) {\n return `{${start + (stop ? ',' + stop : '')}}`;\n }\n return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n if (!tok.isPadded) {\n return value;\n }\n\n let diff = Math.abs(tok.maxLen - String(value).length);\n let relax = options.relaxZeros !== false;\n\n switch (diff) {\n case 0:\n return '';\n case 1:\n return relax ? '0?' : '0';\n case 2:\n return relax ? '0{0,2}' : '00';\n default: {\n return relax ? `0{0,${diff}}` : `0{${diff}}`;\n }\n }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n","var parse = require('spdx-expression-parse');\nvar correct = require('spdx-correct');\n\nvar genericWarning = (\n 'license should be ' +\n 'a valid SPDX license expression (without \"LicenseRef\"), ' +\n '\"UNLICENSED\", or ' +\n '\"SEE LICENSE IN \"'\n);\n\nvar fileReferenceRE = /^SEE LICEN[CS]E IN (.+)$/;\n\nfunction startsWith(prefix, string) {\n return string.slice(0, prefix.length) === prefix;\n}\n\nfunction usesLicenseRef(ast) {\n if (ast.hasOwnProperty('license')) {\n var license = ast.license;\n return (\n startsWith('LicenseRef', license) ||\n startsWith('DocumentRef', license)\n );\n } else {\n return (\n usesLicenseRef(ast.left) ||\n usesLicenseRef(ast.right)\n );\n }\n}\n\nmodule.exports = function(argument) {\n var ast;\n\n try {\n ast = parse(argument);\n } catch (e) {\n var match\n if (\n argument === 'UNLICENSED' ||\n argument === 'UNLICENCED'\n ) {\n return {\n validForOldPackages: true,\n validForNewPackages: true,\n unlicensed: true\n };\n } else if (match = fileReferenceRE.exec(argument)) {\n return {\n validForOldPackages: true,\n validForNewPackages: true,\n inFile: match[1]\n };\n } else {\n var result = {\n validForOldPackages: false,\n validForNewPackages: false,\n warnings: [genericWarning]\n };\n if (argument.trim().length !== 0) {\n var corrected = correct(argument);\n if (corrected) {\n result.warnings.push(\n 'license is similar to the valid expression \"' + corrected + '\"'\n );\n }\n }\n return result;\n }\n }\n\n if (usesLicenseRef(ast)) {\n return {\n validForNewPackages: false,\n validForOldPackages: false,\n spdx: true,\n warnings: [genericWarning]\n };\n } else {\n return {\n validForNewPackages: true,\n validForOldPackages: true,\n spdx: true\n };\n }\n};\n","module.exports = [\n [ 0x0300, 0x036F ], [ 0x0483, 0x0486 ], [ 0x0488, 0x0489 ],\n [ 0x0591, 0x05BD ], [ 0x05BF, 0x05BF ], [ 0x05C1, 0x05C2 ],\n [ 0x05C4, 0x05C5 ], [ 0x05C7, 0x05C7 ], [ 0x0600, 0x0603 ],\n [ 0x0610, 0x0615 ], [ 0x064B, 0x065E ], [ 0x0670, 0x0670 ],\n [ 0x06D6, 0x06E4 ], [ 0x06E7, 0x06E8 ], [ 0x06EA, 0x06ED ],\n [ 0x070F, 0x070F ], [ 0x0711, 0x0711 ], [ 0x0730, 0x074A ],\n [ 0x07A6, 0x07B0 ], [ 0x07EB, 0x07F3 ], [ 0x0901, 0x0902 ],\n [ 0x093C, 0x093C ], [ 0x0941, 0x0948 ], [ 0x094D, 0x094D ],\n [ 0x0951, 0x0954 ], [ 0x0962, 0x0963 ], [ 0x0981, 0x0981 ],\n [ 0x09BC, 0x09BC ], [ 0x09C1, 0x09C4 ], [ 0x09CD, 0x09CD ],\n [ 0x09E2, 0x09E3 ], [ 0x0A01, 0x0A02 ], [ 0x0A3C, 0x0A3C ],\n [ 0x0A41, 0x0A42 ], [ 0x0A47, 0x0A48 ], [ 0x0A4B, 0x0A4D ],\n [ 0x0A70, 0x0A71 ], [ 0x0A81, 0x0A82 ], [ 0x0ABC, 0x0ABC ],\n [ 0x0AC1, 0x0AC5 ], [ 0x0AC7, 0x0AC8 ], [ 0x0ACD, 0x0ACD ],\n [ 0x0AE2, 0x0AE3 ], [ 0x0B01, 0x0B01 ], [ 0x0B3C, 0x0B3C ],\n [ 0x0B3F, 0x0B3F ], [ 0x0B41, 0x0B43 ], [ 0x0B4D, 0x0B4D ],\n [ 0x0B56, 0x0B56 ], [ 0x0B82, 0x0B82 ], [ 0x0BC0, 0x0BC0 ],\n [ 0x0BCD, 0x0BCD ], [ 0x0C3E, 0x0C40 ], [ 0x0C46, 0x0C48 ],\n [ 0x0C4A, 0x0C4D ], [ 0x0C55, 0x0C56 ], [ 0x0CBC, 0x0CBC ],\n [ 0x0CBF, 0x0CBF ], [ 0x0CC6, 0x0CC6 ], [ 0x0CCC, 0x0CCD ],\n [ 0x0CE2, 0x0CE3 ], [ 0x0D41, 0x0D43 ], [ 0x0D4D, 0x0D4D ],\n [ 0x0DCA, 0x0DCA ], [ 0x0DD2, 0x0DD4 ], [ 0x0DD6, 0x0DD6 ],\n [ 0x0E31, 0x0E31 ], [ 0x0E34, 0x0E3A ], [ 0x0E47, 0x0E4E ],\n [ 0x0EB1, 0x0EB1 ], [ 0x0EB4, 0x0EB9 ], [ 0x0EBB, 0x0EBC ],\n [ 0x0EC8, 0x0ECD ], [ 0x0F18, 0x0F19 ], [ 0x0F35, 0x0F35 ],\n [ 0x0F37, 0x0F37 ], [ 0x0F39, 0x0F39 ], [ 0x0F71, 0x0F7E ],\n [ 0x0F80, 0x0F84 ], [ 0x0F86, 0x0F87 ], [ 0x0F90, 0x0F97 ],\n [ 0x0F99, 0x0FBC ], [ 0x0FC6, 0x0FC6 ], [ 0x102D, 0x1030 ],\n [ 0x1032, 0x1032 ], [ 0x1036, 0x1037 ], [ 0x1039, 0x1039 ],\n [ 0x1058, 0x1059 ], [ 0x1160, 0x11FF ], [ 0x135F, 0x135F ],\n [ 0x1712, 0x1714 ], [ 0x1732, 0x1734 ], [ 0x1752, 0x1753 ],\n [ 0x1772, 0x1773 ], [ 0x17B4, 0x17B5 ], [ 0x17B7, 0x17BD ],\n [ 0x17C6, 0x17C6 ], [ 0x17C9, 0x17D3 ], [ 0x17DD, 0x17DD ],\n [ 0x180B, 0x180D ], [ 0x18A9, 0x18A9 ], [ 0x1920, 0x1922 ],\n [ 0x1927, 0x1928 ], [ 0x1932, 0x1932 ], [ 0x1939, 0x193B ],\n [ 0x1A17, 0x1A18 ], [ 0x1B00, 0x1B03 ], [ 0x1B34, 0x1B34 ],\n [ 0x1B36, 0x1B3A ], [ 0x1B3C, 0x1B3C ], [ 0x1B42, 0x1B42 ],\n [ 0x1B6B, 0x1B73 ], [ 0x1DC0, 0x1DCA ], [ 0x1DFE, 0x1DFF ],\n [ 0x200B, 0x200F ], [ 0x202A, 0x202E ], [ 0x2060, 0x2063 ],\n [ 0x206A, 0x206F ], [ 0x20D0, 0x20EF ], [ 0x302A, 0x302F ],\n [ 0x3099, 0x309A ], [ 0xA806, 0xA806 ], [ 0xA80B, 0xA80B ],\n [ 0xA825, 0xA826 ], [ 0xFB1E, 0xFB1E ], [ 0xFE00, 0xFE0F ],\n [ 0xFE20, 0xFE23 ], [ 0xFEFF, 0xFEFF ], [ 0xFFF9, 0xFFFB ],\n [ 0x10A01, 0x10A03 ], [ 0x10A05, 0x10A06 ], [ 0x10A0C, 0x10A0F ],\n [ 0x10A38, 0x10A3A ], [ 0x10A3F, 0x10A3F ], [ 0x1D167, 0x1D169 ],\n [ 0x1D173, 0x1D182 ], [ 0x1D185, 0x1D18B ], [ 0x1D1AA, 0x1D1AD ],\n [ 0x1D242, 0x1D244 ], [ 0xE0001, 0xE0001 ], [ 0xE0020, 0xE007F ],\n [ 0xE0100, 0xE01EF ]\n]\n","\"use strict\"\n\nvar defaults = require('defaults')\nvar combining = require('./combining')\n\nvar DEFAULTS = {\n nul: 0,\n control: 0\n}\n\nmodule.exports = function wcwidth(str) {\n return wcswidth(str, DEFAULTS)\n}\n\nmodule.exports.config = function(opts) {\n opts = defaults(opts || {}, DEFAULTS)\n return function wcwidth(str) {\n return wcswidth(str, opts)\n }\n}\n\n/*\n * The following functions define the column width of an ISO 10646\n * character as follows:\n * - The null character (U+0000) has a column width of 0.\n * - Other C0/C1 control characters and DEL will lead to a return value\n * of -1.\n * - Non-spacing and enclosing combining characters (general category\n * code Mn or Me in the\n * Unicode database) have a column width of 0.\n * - SOFT HYPHEN (U+00AD) has a column width of 1.\n * - Other format characters (general category code Cf in the Unicode\n * database) and ZERO WIDTH\n * SPACE (U+200B) have a column width of 0.\n * - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF)\n * have a column width of 0.\n * - Spacing characters in the East Asian Wide (W) or East Asian\n * Full-width (F) category as\n * defined in Unicode Technical Report #11 have a column width of 2.\n * - All remaining characters (including all printable ISO 8859-1 and\n * WGL4 characters, Unicode control characters, etc.) have a column\n * width of 1.\n * This implementation assumes that characters are encoded in ISO 10646.\n*/\n\nfunction wcswidth(str, opts) {\n if (typeof str !== 'string') return wcwidth(str, opts)\n\n var s = 0\n for (var i = 0; i < str.length; i++) {\n var n = wcwidth(str.charCodeAt(i), opts)\n if (n < 0) return -1\n s += n\n }\n\n return s\n}\n\nfunction wcwidth(ucs, opts) {\n // test for 8-bit control characters\n if (ucs === 0) return opts.nul\n if (ucs < 32 || (ucs >= 0x7f && ucs < 0xa0)) return opts.control\n\n // binary search in table of non-spacing characters\n if (bisearch(ucs)) return 0\n\n // if we arrive here, ucs is not a combining or C0/C1 control character\n return 1 +\n (ucs >= 0x1100 &&\n (ucs <= 0x115f || // Hangul Jamo init. consonants\n ucs == 0x2329 || ucs == 0x232a ||\n (ucs >= 0x2e80 && ucs <= 0xa4cf &&\n ucs != 0x303f) || // CJK ... Yi\n (ucs >= 0xac00 && ucs <= 0xd7a3) || // Hangul Syllables\n (ucs >= 0xf900 && ucs <= 0xfaff) || // CJK Compatibility Ideographs\n (ucs >= 0xfe10 && ucs <= 0xfe19) || // Vertical forms\n (ucs >= 0xfe30 && ucs <= 0xfe6f) || // CJK Compatibility Forms\n (ucs >= 0xff00 && ucs <= 0xff60) || // Fullwidth Forms\n (ucs >= 0xffe0 && ucs <= 0xffe6) ||\n (ucs >= 0x20000 && ucs <= 0x2fffd) ||\n (ucs >= 0x30000 && ucs <= 0x3fffd)));\n}\n\nfunction bisearch(ucs) {\n var min = 0\n var max = combining.length - 1\n var mid\n\n if (ucs < combining[0][0] || ucs > combining[max][1]) return false\n\n while (max >= min) {\n mid = Math.floor((min + max) / 2)\n if (ucs > combining[mid][1]) min = mid + 1\n else if (ucs < combining[mid][0]) max = mid - 1\n else return true\n }\n\n return false\n}\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n","'use strict';\nconst path = require('path');\nconst fs = require('graceful-fs');\nconst writeFileAtomic = require('write-file-atomic');\nconst sortKeys = require('sort-keys');\nconst makeDir = require('make-dir');\nconst pify = require('pify');\nconst detectIndent = require('detect-indent');\n\nconst init = (fn, filePath, data, options) => {\n\tif (!filePath) {\n\t\tthrow new TypeError('Expected a filepath');\n\t}\n\n\tif (data === undefined) {\n\t\tthrow new TypeError('Expected data to stringify');\n\t}\n\n\toptions = Object.assign({\n\t\tindent: '\\t',\n\t\tsortKeys: false\n\t}, options);\n\n\tif (options.sortKeys) {\n\t\tdata = sortKeys(data, {\n\t\t\tdeep: true,\n\t\t\tcompare: typeof options.sortKeys === 'function' ? options.sortKeys : undefined\n\t\t});\n\t}\n\n\treturn fn(filePath, data, options);\n};\n\nconst readFile = filePath => pify(fs.readFile)(filePath, 'utf8').catch(() => {});\n\nconst main = (filePath, data, options) => {\n\treturn (options.detectIndent ? readFile(filePath) : Promise.resolve())\n\t\t.then(string => {\n\t\t\tconst indent = string ? detectIndent(string).indent : options.indent;\n\t\t\tconst json = JSON.stringify(data, options.replacer, indent);\n\n\t\t\treturn pify(writeFileAtomic)(filePath, `${json}\\n`, {mode: options.mode});\n\t\t});\n};\n\nconst mainSync = (filePath, data, options) => {\n\tlet {indent} = options;\n\n\tif (options.detectIndent) {\n\t\ttry {\n\t\t\tconst file = fs.readFileSync(filePath, 'utf8');\n\t\t\tindent = detectIndent(file).indent;\n\t\t} catch (error) {\n\t\t\tif (error.code !== 'ENOENT') {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst json = JSON.stringify(data, options.replacer, indent);\n\n\treturn writeFileAtomic.sync(filePath, `${json}\\n`, {mode: options.mode});\n};\n\nconst writeJsonFile = (filePath, data, options) => {\n\treturn makeDir(path.dirname(filePath), {fs})\n\t\t.then(() => init(main, filePath, data, options));\n};\n\nmodule.exports = writeJsonFile;\n// TODO: Remove this for the next major release\nmodule.exports.default = writeJsonFile;\nmodule.exports.sync = (filePath, data, options) => {\n\tmakeDir.sync(path.dirname(filePath), {fs});\n\tinit(mainSync, filePath, data, options);\n};\n","'use strict';\nconst fs = require('fs');\nconst path = require('path');\nconst pify = require('pify');\nconst semver = require('semver');\n\nconst defaults = {\n\tmode: 0o777 & (~process.umask()),\n\tfs\n};\n\nconst useNativeRecursiveOption = semver.satisfies(process.version, '>=10.12.0');\n\n// https://github.com/nodejs/node/issues/8987\n// https://github.com/libuv/libuv/pull/1088\nconst checkPath = pth => {\n\tif (process.platform === 'win32') {\n\t\tconst pathHasInvalidWinCharacters = /[<>:\"|?*]/.test(pth.replace(path.parse(pth).root, ''));\n\n\t\tif (pathHasInvalidWinCharacters) {\n\t\t\tconst error = new Error(`Path contains invalid characters: ${pth}`);\n\t\t\terror.code = 'EINVAL';\n\t\t\tthrow error;\n\t\t}\n\t}\n};\n\nconst permissionError = pth => {\n\t// This replicates the exception of `fs.mkdir` with native the\n\t// `recusive` option when run on an invalid drive under Windows.\n\tconst error = new Error(`operation not permitted, mkdir '${pth}'`);\n\terror.code = 'EPERM';\n\terror.errno = -4048;\n\terror.path = pth;\n\terror.syscall = 'mkdir';\n\treturn error;\n};\n\nconst makeDir = (input, options) => Promise.resolve().then(() => {\n\tcheckPath(input);\n\toptions = Object.assign({}, defaults, options);\n\n\t// TODO: Use util.promisify when targeting Node.js 8\n\tconst mkdir = pify(options.fs.mkdir);\n\tconst stat = pify(options.fs.stat);\n\n\tif (useNativeRecursiveOption && options.fs.mkdir === fs.mkdir) {\n\t\tconst pth = path.resolve(input);\n\n\t\treturn mkdir(pth, {\n\t\t\tmode: options.mode,\n\t\t\trecursive: true\n\t\t}).then(() => pth);\n\t}\n\n\tconst make = pth => {\n\t\treturn mkdir(pth, options.mode)\n\t\t\t.then(() => pth)\n\t\t\t.catch(error => {\n\t\t\t\tif (error.code === 'EPERM') {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\tif (error.code === 'ENOENT') {\n\t\t\t\t\tif (path.dirname(pth) === pth) {\n\t\t\t\t\t\tthrow permissionError(pth);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error.message.includes('null bytes')) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn make(path.dirname(pth)).then(() => make(pth));\n\t\t\t\t}\n\n\t\t\t\treturn stat(pth)\n\t\t\t\t\t.then(stats => stats.isDirectory() ? pth : Promise.reject())\n\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t});\n\t\t\t});\n\t};\n\n\treturn make(path.resolve(input));\n});\n\nmodule.exports = makeDir;\nmodule.exports.default = makeDir;\n\nmodule.exports.sync = (input, options) => {\n\tcheckPath(input);\n\toptions = Object.assign({}, defaults, options);\n\n\tif (useNativeRecursiveOption && options.fs.mkdirSync === fs.mkdirSync) {\n\t\tconst pth = path.resolve(input);\n\n\t\tfs.mkdirSync(pth, {\n\t\t\tmode: options.mode,\n\t\t\trecursive: true\n\t\t});\n\n\t\treturn pth;\n\t}\n\n\tconst make = pth => {\n\t\ttry {\n\t\t\toptions.fs.mkdirSync(pth, options.mode);\n\t\t} catch (error) {\n\t\t\tif (error.code === 'EPERM') {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (error.code === 'ENOENT') {\n\t\t\t\tif (path.dirname(pth) === pth) {\n\t\t\t\t\tthrow permissionError(pth);\n\t\t\t\t}\n\n\t\t\t\tif (error.message.includes('null bytes')) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\tmake(path.dirname(pth));\n\t\t\t\treturn make(pth);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tif (!options.fs.statSync(pth).isDirectory()) {\n\t\t\t\t\tthrow new Error('The path is not a directory');\n\t\t\t\t}\n\t\t\t} catch (_) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\treturn pth;\n\t};\n\n\treturn make(path.resolve(input));\n};\n","'use strict'\nmodule.exports = writeFile\nmodule.exports.sync = writeFileSync\nmodule.exports._getTmpname = getTmpname // for testing\nmodule.exports._cleanupOnExit = cleanupOnExit\n\nvar fs = require('graceful-fs')\nvar MurmurHash3 = require('imurmurhash')\nvar onExit = require('signal-exit')\nvar path = require('path')\nvar activeFiles = {}\n\n// if we run inside of a worker_thread, `process.pid` is not unique\n/* istanbul ignore next */\nvar threadId = (function getId () {\n try {\n var workerThreads = require('worker_threads')\n\n /// if we are in main thread, this is set to `0`\n return workerThreads.threadId\n } catch (e) {\n // worker_threads are not available, fallback to 0\n return 0\n }\n})()\n\nvar invocations = 0\nfunction getTmpname (filename) {\n return filename + '.' +\n MurmurHash3(__filename)\n .hash(String(process.pid))\n .hash(String(threadId))\n .hash(String(++invocations))\n .result()\n}\n\nfunction cleanupOnExit (tmpfile) {\n return function () {\n try {\n fs.unlinkSync(typeof tmpfile === 'function' ? tmpfile() : tmpfile)\n } catch (_) {}\n }\n}\n\nfunction writeFile (filename, data, options, callback) {\n if (options) {\n if (options instanceof Function) {\n callback = options\n options = {}\n } else if (typeof options === 'string') {\n options = { encoding: options }\n }\n } else {\n options = {}\n }\n\n var Promise = options.Promise || global.Promise\n var truename\n var fd\n var tmpfile\n /* istanbul ignore next -- The closure only gets called when onExit triggers */\n var removeOnExitHandler = onExit(cleanupOnExit(() => tmpfile))\n var absoluteName = path.resolve(filename)\n\n new Promise(function serializeSameFile (resolve) {\n // make a queue if it doesn't already exist\n if (!activeFiles[absoluteName]) activeFiles[absoluteName] = []\n\n activeFiles[absoluteName].push(resolve) // add this job to the queue\n if (activeFiles[absoluteName].length === 1) resolve() // kick off the first one\n }).then(function getRealPath () {\n return new Promise(function (resolve) {\n fs.realpath(filename, function (_, realname) {\n truename = realname || filename\n tmpfile = getTmpname(truename)\n resolve()\n })\n })\n }).then(function stat () {\n return new Promise(function stat (resolve) {\n if (options.mode && options.chown) resolve()\n else {\n // Either mode or chown is not explicitly set\n // Default behavior is to copy it from original file\n fs.stat(truename, function (err, stats) {\n if (err || !stats) resolve()\n else {\n options = Object.assign({}, options)\n\n if (options.mode == null) {\n options.mode = stats.mode\n }\n if (options.chown == null && process.getuid) {\n options.chown = { uid: stats.uid, gid: stats.gid }\n }\n resolve()\n }\n })\n }\n })\n }).then(function thenWriteFile () {\n return new Promise(function (resolve, reject) {\n fs.open(tmpfile, 'w', options.mode, function (err, _fd) {\n fd = _fd\n if (err) reject(err)\n else resolve()\n })\n })\n }).then(function write () {\n return new Promise(function (resolve, reject) {\n if (Buffer.isBuffer(data)) {\n fs.write(fd, data, 0, data.length, 0, function (err) {\n if (err) reject(err)\n else resolve()\n })\n } else if (data != null) {\n fs.write(fd, String(data), 0, String(options.encoding || 'utf8'), function (err) {\n if (err) reject(err)\n else resolve()\n })\n } else resolve()\n })\n }).then(function syncAndClose () {\n return new Promise(function (resolve, reject) {\n if (options.fsync !== false) {\n fs.fsync(fd, function (err) {\n if (err) fs.close(fd, () => reject(err))\n else fs.close(fd, resolve)\n })\n } else {\n fs.close(fd, resolve)\n }\n })\n }).then(function chown () {\n fd = null\n if (options.chown) {\n return new Promise(function (resolve, reject) {\n fs.chown(tmpfile, options.chown.uid, options.chown.gid, function (err) {\n if (err) reject(err)\n else resolve()\n })\n })\n }\n }).then(function chmod () {\n if (options.mode) {\n return new Promise(function (resolve, reject) {\n fs.chmod(tmpfile, options.mode, function (err) {\n if (err) reject(err)\n else resolve()\n })\n })\n }\n }).then(function rename () {\n return new Promise(function (resolve, reject) {\n fs.rename(tmpfile, truename, function (err) {\n if (err) reject(err)\n else resolve()\n })\n })\n }).then(function success () {\n removeOnExitHandler()\n callback()\n }, function fail (err) {\n return new Promise(resolve => {\n return fd ? fs.close(fd, resolve) : resolve()\n }).then(() => {\n removeOnExitHandler()\n fs.unlink(tmpfile, function () {\n callback(err)\n })\n })\n }).then(function checkQueue () {\n activeFiles[absoluteName].shift() // remove the element added by serializeSameFile\n if (activeFiles[absoluteName].length > 0) {\n activeFiles[absoluteName][0]() // start next job if one is pending\n } else delete activeFiles[absoluteName]\n })\n}\n\nfunction writeFileSync (filename, data, options) {\n if (typeof options === 'string') options = { encoding: options }\n else if (!options) options = {}\n try {\n filename = fs.realpathSync(filename)\n } catch (ex) {\n // it's ok, it'll happen on a not yet existing file\n }\n var tmpfile = getTmpname(filename)\n\n if (!options.mode || !options.chown) {\n // Either mode or chown is not explicitly set\n // Default behavior is to copy it from original file\n try {\n var stats = fs.statSync(filename)\n options = Object.assign({}, options)\n if (!options.mode) {\n options.mode = stats.mode\n }\n if (!options.chown && process.getuid) {\n options.chown = { uid: stats.uid, gid: stats.gid }\n }\n } catch (ex) {\n // ignore stat errors\n }\n }\n\n var fd\n var cleanup = cleanupOnExit(tmpfile)\n var removeOnExitHandler = onExit(cleanup)\n\n try {\n fd = fs.openSync(tmpfile, 'w', options.mode)\n if (Buffer.isBuffer(data)) {\n fs.writeSync(fd, data, 0, data.length, 0)\n } else if (data != null) {\n fs.writeSync(fd, String(data), 0, String(options.encoding || 'utf8'))\n }\n if (options.fsync !== false) {\n fs.fsyncSync(fd)\n }\n fs.closeSync(fd)\n if (options.chown) fs.chownSync(tmpfile, options.chown.uid, options.chown.gid)\n if (options.mode) fs.chmodSync(tmpfile, options.mode)\n fs.renameSync(tmpfile, filename)\n removeOnExitHandler()\n } catch (err) {\n if (fd) {\n try {\n fs.closeSync(fd)\n } catch (ex) {\n // ignore close errors at this stage, error may have closed fd already.\n }\n }\n removeOnExitHandler()\n cleanup()\n throw err\n }\n}\n","'use strict';\nconst path = require('path');\nconst writeJsonFile = require('write-json-file');\nconst sortKeys = require('sort-keys');\n\nconst dependencyKeys = new Set([\n\t'dependencies',\n\t'devDependencies',\n\t'optionalDependencies',\n\t'peerDependencies'\n]);\n\nfunction normalize(packageJson) {\n\tconst result = {};\n\n\tfor (const key of Object.keys(packageJson)) {\n\t\tif (!dependencyKeys.has(key)) {\n\t\t\tresult[key] = packageJson[key];\n\t\t} else if (Object.keys(packageJson[key]).length !== 0) {\n\t\t\tresult[key] = sortKeys(packageJson[key]);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nmodule.exports = async (filePath, data, options) => {\n\tif (typeof filePath !== 'string') {\n\t\toptions = data;\n\t\tdata = filePath;\n\t\tfilePath = '.';\n\t}\n\n\toptions = {\n\t\tnormalize: true,\n\t\t...options,\n\t\tdetectIndent: true\n\t};\n\n\tfilePath = path.basename(filePath) === 'package.json' ? filePath : path.join(filePath, 'package.json');\n\n\tdata = options.normalize ? normalize(data) : data;\n\n\treturn writeJsonFile(filePath, data, options);\n};\n\nmodule.exports.sync = (filePath, data, options) => {\n\tif (typeof filePath !== 'string') {\n\t\toptions = data;\n\t\tdata = filePath;\n\t\tfilePath = '.';\n\t}\n\n\toptions = {\n\t\tnormalize: true,\n\t\t...options,\n\t\tdetectIndent: true\n\t};\n\n\tfilePath = path.basename(filePath) === 'package.json' ? filePath : path.join(filePath, 'package.json');\n\n\tdata = options.normalize ? normalize(data) : data;\n\n\twriteJsonFile.sync(filePath, data, options);\n};\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","\"use strict\";\n/*\n * Copyright OpenSearch Contributors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./path\"), exports);\ntslib_1.__exportStar(require(\"./process\"), exports);\ntslib_1.__exportStar(require(\"./repo_root\"), exports);\n","\"use strict\";\n/*\n * Copyright OpenSearch Contributors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.realshortpathSync = exports.realShortPathSync = exports.realpathSync = exports.realPathSync = exports.resolveToShortNameSync = exports.resolveToShortPathSync = exports.resolveToFullNameSync = exports.resolveToFullPathSync = exports.shortNameSupportedSync = exports.shortNamesSupportedSync = exports.standardize = exports.NAMESPACE_PREFIX = void 0;\nconst child_process_1 = require(\"child_process\");\nconst path_1 = require(\"path\");\nconst fs_1 = require(\"fs\");\nexports.NAMESPACE_PREFIX = process.platform === 'win32' ? '\\\\\\\\?\\\\' : '';\n/**\n * Get a standardized reference to a path\n * @param {string} path - the path to standardize\n * @param {boolean} [usePosix=true] - produce a posix reference\n * @param {boolean} [escapedBackslashes=true] - on Windows, double-backslash the reference\n * @param {boolean} [returnUNC=false] - produce an extended reference\n */\nconst standardize = (path, usePosix = true, escapedBackslashes = true, returnUNC = false) => {\n // Force os-dependant separators\n const normal = (0, path_1.normalize)(path);\n // Filter out in-browser executions as well as non-windows ones\n if (process?.platform !== 'win32')\n return normal;\n if (usePosix)\n return normal.replace(/\\\\/g, '/');\n else if (escapedBackslashes)\n return normal.replace(/\\\\/g, '\\\\\\\\');\n else if (returnUNC)\n return '\\\\\\\\?\\\\' + normal;\n return normal;\n};\nexports.standardize = standardize;\n/**\n * Windows-only function that uses PowerShell to calculate the full path\n * @param {string} path\n * @private\n */\nconst getFullPathSync = (path) => {\n if (process.platform !== 'win32')\n return path;\n try {\n const fullName = (0, child_process_1.execSync)(`powershell \"(Get-Item -LiteralPath '${path}').FullName\"`, {\n encoding: 'utf8',\n })?.trim?.();\n // Make sure we got something back\n if (fullName?.length > 2)\n return fullName;\n }\n catch (ex) {\n // Do nothing\n }\n return path;\n};\n/**\n * Windows-only function that uses PowerShell and Com Object to calculate the 8.3 path\n * @param {string} path\n * @private\n */\nconst getShortPathSync = (path) => {\n if (process.platform !== 'win32')\n return path;\n try {\n const shortPath = (0, child_process_1.execSync)(`powershell \"$FSO = New-Object -ComObject Scripting.FileSystemObject; $O = (Get-Item -LiteralPath '${path}'); if ($O.PSIsContainer) { $FSO.GetFolder($O.FullName).ShortPath } else { $FSO.GetFile($O.FullName).ShortPath }\"`, {\n encoding: 'utf8',\n })?.trim?.();\n // Make sure we got something back\n if (shortPath?.length > 2)\n return shortPath;\n }\n catch (ex) {\n // Do nothing\n }\n return path;\n};\n/**\n * Checks if Windows 8.3 short names are supported on the volume of the given path\n * @param {string} [path='.'] - the path to examine\n */\nconst shortNamesSupportedSync = (path = '.') => {\n if (process.platform !== 'win32')\n return false;\n const testFileName = '.___osd-cross-platform-test.file';\n const file = (0, path_1.resolve)(path, testFileName);\n // Create a test file if it doesn't exist\n if (!(0, fs_1.existsSync)(file))\n (0, fs_1.closeSync)((0, fs_1.openSync)(file, 'w'));\n // If the returned value's basename is not the same as the requested file name, it must be a short name\n const foundShortName = (0, path_1.basename)(getShortPathSync(file)) !== testFileName;\n // Cleanup\n (0, fs_1.unlinkSync)(file);\n return foundShortName;\n};\nexports.shortNamesSupportedSync = shortNamesSupportedSync;\n/**\n * @borrows shortNamesSupportedSync\n */\nexports.shortNameSupportedSync = exports.shortNamesSupportedSync;\n/**\n * Get the full pathname\n * @param {string} path - the path to resolve\n */\nconst resolveToFullPathSync = (path) => getFullPathSync((0, path_1.resolve)(path));\nexports.resolveToFullPathSync = resolveToFullPathSync;\n/**\n * @borrows resolveToFullPathSync\n */\nexports.resolveToFullNameSync = exports.resolveToFullPathSync;\n/**\n * Get the short pathname\n * @param {string} path - the path to resolve\n */\nconst resolveToShortPathSync = (path) => getShortPathSync((0, path_1.resolve)(path));\nexports.resolveToShortPathSync = resolveToShortPathSync;\n/**\n * @borrows resolveToShortPathSync\n */\nexports.resolveToShortNameSync = exports.resolveToShortPathSync;\n/**\n * Get the canonical pathname\n * @param {string} path - the path to resolve\n */\nconst realPathSync = (path) => getFullPathSync((0, fs_1.realpathSync)(path, 'utf8'));\nexports.realPathSync = realPathSync;\n/**\n * @borrows realPathSync\n */\nexports.realpathSync = exports.realPathSync;\n/**\n * Get the canonical pathname\n * @param {string} path - the path to resolve\n */\nconst realShortPathSync = (path) => getShortPathSync((0, fs_1.realpathSync)(path, 'utf8'));\nexports.realShortPathSync = realShortPathSync;\n/**\n * @borrows realShortPathSync\n */\nexports.realshortpathSync = exports.realShortPathSync;\n","\"use strict\";\n/*\n * Copyright OpenSearch Contributors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PROCESS_POSIX_WORKING_DIR = exports.PROCESS_WORKING_DIR = void 0;\nconst path_1 = require(\"./path\");\n/**\n * The full pathname of the working directory of the process\n * @constant\n * @type {string}\n */\nexports.PROCESS_WORKING_DIR = (0, path_1.resolveToFullPathSync)(process.cwd());\n/**\n * The full pathname of the working directory of the process, in POSIX format\n * @constant\n * @type {string}\n */\nexports.PROCESS_POSIX_WORKING_DIR = (0, path_1.standardize)(exports.PROCESS_WORKING_DIR);\n","\"use strict\";\n/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.relativeToRepoRoot = exports.getRepoRoot = exports.getMatchingRoot = exports.UPSTREAM_BRANCH = exports.REPO_ROOT_8_3 = exports.REPO_ROOT = void 0;\nconst tslib_1 = require(\"tslib\");\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\nconst path_1 = require(\"path\");\nconst load_json_file_1 = tslib_1.__importDefault(require(\"load-json-file\"));\nconst path_2 = require(\"./path\");\nconst readOpenSearchDashboardsPkgJson = (dir) => {\n try {\n const path = (0, path_1.resolve)(dir, 'package.json');\n const json = load_json_file_1.default.sync(path);\n if (json?.name === 'opensearch-dashboards') {\n return json;\n }\n }\n catch (error) {\n if (error?.code === 'ENOENT') {\n return;\n }\n throw error;\n }\n};\nconst findOpenSearchDashboardsPackageJson = () => {\n // search for the opensearch-dashboards directory, since this file is moved around it might\n // not be where we think but should always be a relatively close parent\n // of this directory\n const startDir = (0, path_2.realPathSync)(__dirname);\n const { root: rootDir } = (0, path_1.parse)(startDir);\n let cursor = startDir;\n while (true) {\n const opensearchDashboardsPkgJson = readOpenSearchDashboardsPkgJson(cursor);\n if (opensearchDashboardsPkgJson) {\n return {\n opensearchDashboardsDir: cursor,\n opensearchDashboardsPkgJson: opensearchDashboardsPkgJson,\n };\n }\n const parent = (0, path_1.dirname)(cursor);\n if (parent === rootDir) {\n throw new Error(`unable to find opensearch-dashboards directory from ${startDir}`);\n }\n cursor = parent;\n }\n};\nconst { opensearchDashboardsDir, opensearchDashboardsPkgJson, } = findOpenSearchDashboardsPackageJson();\nexports.REPO_ROOT = (0, path_2.resolveToFullPathSync)(opensearchDashboardsDir);\nexports.REPO_ROOT_8_3 = (0, path_2.resolveToShortPathSync)(opensearchDashboardsDir);\nexports.UPSTREAM_BRANCH = opensearchDashboardsPkgJson.branch;\nconst getMatchingRoot = (path, rootPaths) => {\n const rootPathsArray = Array.isArray(rootPaths) ? rootPaths : [rootPaths];\n // We can only find the appropriate root if an absolute path was given\n if (path && (0, path_1.isAbsolute)(path)) {\n // Return the matching root if one is found or return `undefined`\n return rootPathsArray.find((root) => path.startsWith(root));\n }\n return undefined;\n};\nexports.getMatchingRoot = getMatchingRoot;\nconst getRepoRoot = (path) => (0, exports.getMatchingRoot)(path, [exports.REPO_ROOT, exports.REPO_ROOT_8_3]);\nexports.getRepoRoot = getRepoRoot;\nconst relativeToRepoRoot = (path) => {\n const repoRoot = (0, exports.getRepoRoot)(path);\n return repoRoot ? (0, path_1.relative)(repoRoot, path) : null;\n};\nexports.relativeToRepoRoot = relativeToRepoRoot;\n","\"use strict\";\n/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ToolingLogCollectingWriter = exports.parseLogLevel = exports.pickLevelFromFlags = exports.ToolingLogTextWriter = exports.ToolingLog = void 0;\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\nvar tooling_log_1 = require(\"./tooling_log\");\nObject.defineProperty(exports, \"ToolingLog\", { enumerable: true, get: function () { return tooling_log_1.ToolingLog; } });\nvar tooling_log_text_writer_1 = require(\"./tooling_log_text_writer\");\nObject.defineProperty(exports, \"ToolingLogTextWriter\", { enumerable: true, get: function () { return tooling_log_text_writer_1.ToolingLogTextWriter; } });\nvar log_levels_1 = require(\"./log_levels\");\nObject.defineProperty(exports, \"pickLevelFromFlags\", { enumerable: true, get: function () { return log_levels_1.pickLevelFromFlags; } });\nObject.defineProperty(exports, \"parseLogLevel\", { enumerable: true, get: function () { return log_levels_1.parseLogLevel; } });\nvar tooling_log_collecting_writer_1 = require(\"./tooling_log_collecting_writer\");\nObject.defineProperty(exports, \"ToolingLogCollectingWriter\", { enumerable: true, get: function () { return tooling_log_collecting_writer_1.ToolingLogCollectingWriter; } });\n","\"use strict\";\n/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseLogLevel = exports.pickLevelFromFlags = void 0;\nconst LEVELS = ['silent', 'error', 'warning', 'info', 'debug', 'verbose'];\nfunction pickLevelFromFlags(flags, options = {}) {\n if (flags.verbose)\n return 'verbose';\n if (flags.debug)\n return 'debug';\n if (flags.quiet)\n return 'error';\n if (flags.silent)\n return 'silent';\n return options.default || 'info';\n}\nexports.pickLevelFromFlags = pickLevelFromFlags;\nfunction parseLogLevel(name) {\n const i = LEVELS.indexOf(name);\n if (i === -1) {\n const msg = `Invalid log level \"${name}\" ` + `(expected one of ${LEVELS.join(',')})`;\n throw new Error(msg);\n }\n const flags = {};\n LEVELS.forEach((level, levelI) => {\n flags[level] = levelI <= i;\n });\n return {\n name,\n flags: flags,\n };\n}\nexports.parseLogLevel = parseLogLevel;\n","\"use strict\";\n/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ToolingLog = void 0;\nconst tslib_1 = require(\"tslib\");\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\nconst Rx = tslib_1.__importStar(require(\"rxjs\"));\nconst tooling_log_text_writer_1 = require(\"./tooling_log_text_writer\");\nclass ToolingLog {\n constructor(writerConfig) {\n this.identWidth = 0;\n this.writers = writerConfig ? [new tooling_log_text_writer_1.ToolingLogTextWriter(writerConfig)] : [];\n this.written$ = new Rx.Subject();\n }\n indent(delta = 0) {\n this.identWidth = Math.max(this.identWidth + delta, 0);\n return this.identWidth;\n }\n verbose(...args) {\n this.sendToWriters('verbose', args);\n }\n debug(...args) {\n this.sendToWriters('debug', args);\n }\n info(...args) {\n this.sendToWriters('info', args);\n }\n success(...args) {\n this.sendToWriters('success', args);\n }\n warning(...args) {\n this.sendToWriters('warning', args);\n }\n error(error) {\n this.sendToWriters('error', [error]);\n }\n write(...args) {\n this.sendToWriters('write', args);\n }\n getWriters() {\n return this.writers.slice(0);\n }\n setWriters(writers) {\n this.writers = [...writers];\n }\n getWritten$() {\n return this.written$.asObservable();\n }\n sendToWriters(type, args) {\n const msg = {\n type,\n indent: this.identWidth,\n args,\n };\n let written = false;\n for (const writer of this.writers) {\n if (writer.write(msg)) {\n written = true;\n }\n }\n if (written) {\n this.written$.next(msg);\n }\n }\n}\nexports.ToolingLog = ToolingLog;\n","\"use strict\";\n/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ToolingLogCollectingWriter = void 0;\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\nconst tooling_log_text_writer_1 = require(\"./tooling_log_text_writer\");\nclass ToolingLogCollectingWriter extends tooling_log_text_writer_1.ToolingLogTextWriter {\n constructor(level = 'verbose') {\n super({\n level,\n writeTo: {\n write: (msg) => {\n // trim trailing new line\n this.messages.push(msg.slice(0, -1));\n },\n },\n });\n this.messages = [];\n }\n}\nexports.ToolingLogCollectingWriter = ToolingLogCollectingWriter;\n","\"use strict\";\n/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ToolingLogTextWriter = void 0;\nconst tslib_1 = require(\"tslib\");\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\nconst util_1 = require(\"util\");\nconst chalk_1 = tslib_1.__importDefault(require(\"chalk\"));\nconst log_levels_1 = require(\"./log_levels\");\nconst { magentaBright, yellow, red, blue, green, dim } = chalk_1.default;\nconst PREFIX_INDENT = ' '.repeat(6);\nconst MSG_PREFIXES = {\n verbose: ` ${magentaBright('sill')} `,\n debug: ` ${dim('debg')} `,\n info: ` ${blue('info')} `,\n success: ` ${green('succ')} `,\n warning: ` ${yellow('warn')} `,\n error: `${red('ERROR')} `,\n};\nconst has = (obj, key) => obj.hasOwnProperty(key);\nfunction shouldWriteType(level, type) {\n if (type === 'write') {\n return level.name !== 'silent';\n }\n return Boolean(level.flags[type === 'success' ? 'info' : type]);\n}\nfunction stringifyError(error) {\n if (typeof error !== 'string' && !(error instanceof Error)) {\n error = new Error(`\"${error}\" thrown`);\n }\n if (typeof error === 'string') {\n return error;\n }\n return error.stack || error.message || error;\n}\nclass ToolingLogTextWriter {\n constructor(config) {\n this.level = (0, log_levels_1.parseLogLevel)(config.level);\n this.writeTo = config.writeTo;\n if (!this.writeTo || typeof this.writeTo.write !== 'function') {\n throw new Error('ToolingLogTextWriter requires the `writeTo` option be set to a stream (like process.stdout)');\n }\n }\n write(msg) {\n if (!shouldWriteType(this.level, msg.type)) {\n return false;\n }\n const prefix = has(MSG_PREFIXES, msg.type) ? MSG_PREFIXES[msg.type] : '';\n ToolingLogTextWriter.write(this.writeTo, prefix, msg);\n return true;\n }\n static write(writeTo, prefix, msg) {\n const txt = msg.type === 'error'\n ? stringifyError(msg.args[0])\n : (0, util_1.format)(msg.args[0], ...msg.args.slice(1));\n (prefix + txt).split('\\n').forEach((line, i) => {\n let lineIndent = '';\n if (msg.indent > 0) {\n // if we are indenting write some spaces followed by a symbol\n lineIndent += ' '.repeat(msg.indent - 1);\n lineIndent += line.startsWith('-') ? '└' : '│';\n }\n if (line && prefix && i > 0) {\n // apply additional indentation to lines after\n // the first if this message gets a prefix\n lineIndent += PREFIX_INDENT;\n }\n writeTo.write(`${lineIndent}${line}\\n`);\n });\n }\n}\nexports.ToolingLogTextWriter = ToolingLogTextWriter;\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport dedent from 'dedent';\nimport getopts from 'getopts';\nimport { resolve } from 'path';\nimport { pickLevelFromFlags } from '@osd/dev-utils/tooling_log';\n\nimport { commands } from './commands';\nimport { runCommand } from './run';\nimport { log } from './utils/log';\n\nfunction help() {\n log.info(\n dedent`\n usage: osd []\n\n By default, commands are run for OpenSearch Dashboards itself, all packages in the 'packages/'\n folder and for all plugins in './plugins' and '../opensearch-dashboards-extra'.\n\n Available commands:\n\n ${Object.values(commands)\n .map((command) => `${command.name} - ${command.description}`)\n .join('\\n ')}\n\n Global options:\n\n -e, --exclude Exclude specified project. Can be specified multiple times to exclude multiple projects, e.g. '-e opensearch-dashboards -e @osd/pm'.\n -i, --include Include only specified projects. If left unspecified, it defaults to including all projects.\n --skip-opensearch-dashboards-plugins Filter all plugins in ./plugins and ../opensearch-dashboards-extra when running command.\n --no-cache Disable the bootstrap cache\n --single-version Set single version validation method: 'strict', 'loose', 'ignore', or 'brute-force'\n --verbose Set log level to verbose\n --debug Set log level to debug\n --quiet Set log level to error\n --silent Disable log output\n ` + '\\n'\n );\n}\n\nexport async function run(argv: string[]) {\n log.setLogLevel(\n pickLevelFromFlags(\n getopts(argv, {\n boolean: ['verbose', 'debug', 'quiet', 'silent'],\n })\n )\n );\n\n // We can simplify this setup (and remove this extra handling) once Yarn\n // starts forwarding the `--` directly to this script, see\n // https://github.com/yarnpkg/yarn/blob/b2d3e1a8fe45ef376b716d597cc79b38702a9320/src/cli/index.js#L174-L182\n if (argv.includes('--')) {\n log.error(`Using \"--\" is not allowed, as it doesn't work with 'yarn osd'.`);\n process.exit(1);\n }\n\n const options = getopts(argv, {\n alias: {\n e: 'exclude',\n h: 'help',\n i: 'include',\n },\n default: {\n cache: true,\n },\n boolean: ['prefer-offline', 'frozen-lockfile', 'cache'],\n string: ['single-version'],\n });\n\n const args = options._;\n\n if (options.help || args.length === 0) {\n help();\n return;\n }\n\n // This `rootPath` is relative to `./dist/` as that's the location of the\n // built version of this tool.\n const rootPath = resolve(__dirname, '../../../');\n\n const commandName = args[0];\n const extraArgs = args.slice(1);\n\n const commandOptions = { options, extraArgs, rootPath };\n\n const command = commands[commandName];\n if (command === undefined) {\n log.error(`[${commandName}] is not a valid command, see 'osd --help'`);\n process.exit(1);\n }\n\n await runCommand(command, commandOptions);\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport Fs from 'fs';\nimport { linkProjectExecutables } from '../utils/link_project_executables';\nimport { log } from '../utils/log';\nimport { parallelizeBatches } from '../utils/parallelize';\nimport { topologicallyBatchProjects } from '../utils/projects';\nimport { Project } from '../utils/project';\nimport { ICommand } from './';\nimport { getAllChecksums } from '../utils/project_checksums';\nimport { BootstrapCacheFile } from '../utils/bootstrap_cache_file';\nimport { readYarnLock } from '../utils/yarn_lock';\nimport { validateDependencies, isMutatingSingleVersionMode } from '../utils/validate_dependencies';\nimport {\n computeFingerprint,\n fingerprintsEqual,\n readFingerprint,\n writeFingerprint,\n} from '../utils/bootstrap_fingerprint';\n\nexport const BootstrapCommand: ICommand = {\n description: 'Install dependencies and crosslink projects',\n name: 'bootstrap',\n\n async run(projects, projectGraph, { options, osd }) {\n // -----------------------------------------------------------------------\n // Fast path: if nothing relevant has changed since the last successful\n // bootstrap and every per-project cache is still valid, skip the whole\n // pipeline. Skipped when the user scopes the run (--include/--exclude/\n // --skip-opensearch-dashboards-plugins/--oss), passes --no-cache, or\n // passes --frozen-lockfile (which is a \"verify the lockfile\" request).\n // -----------------------------------------------------------------------\n const fastPathEligible =\n options.cache !== false &&\n !options['frozen-lockfile'] &&\n !options.include &&\n !options.exclude &&\n !options['skip-opensearch-dashboards-plugins'] &&\n !options.oss;\n\n if (fastPathEligible) {\n const previous = readFingerprint(osd);\n const current = computeFingerprint(osd, projects);\n\n const integrityOk = Fs.existsSync(osd.getAbsolute('node_modules/.yarn-integrity'));\n log.verbose(\n `[fingerprint] previous=${previous ? 'present' : 'absent'} match=${\n previous ? fingerprintsEqual(previous, current) : false\n } integrity=${integrityOk}`\n );\n\n if (previous && fingerprintsEqual(previous, current) && integrityOk) {\n const yarnLock = await readYarnLock(osd);\n const checksums = await getAllChecksums(osd, log, yarnLock);\n\n let staleProject: string | undefined;\n for (const project of projects.values()) {\n // The workspace root's per-project cache is content-hashed by\n // `git ls-files -dmto` at the repo root, which catches every\n // transient change (including our own fingerprint file writes).\n // Skip it here — the fingerprint itself already covers the\n // workspace-root manifest/lockfile content.\n if (project.isWorkspaceRoot) continue;\n\n if (project.hasScript('osd:bootstrap') || project.hasBuildTargets()) {\n const cacheFile = new BootstrapCacheFile(osd, project, checksums);\n if (!cacheFile.isValid()) {\n staleProject = project.name;\n break;\n }\n }\n }\n\n if (!staleProject) {\n // linkProjectExecutables is idempotent — re-linking the same bins\n // produces the same symlinks, and self-heals if someone wiped\n // node_modules/.bin out-of-band between runs.\n await linkProjectExecutables(projects, projectGraph);\n\n // validateDependencies is safe to re-run in non-mutating modes\n // (strict/ignore), but loose/force/brute-force can mutate\n // package.json/yarn.lock while reconciling single-version\n // conflicts — doing that silently behind a \"fast path success\"\n // log would be confusing, so defer those to a full bootstrap.\n const singleVersion = options['single-version']?.toLowerCase?.();\n if (!isMutatingSingleVersionMode(singleVersion)) {\n await validateDependencies(osd, yarnLock, singleVersion);\n }\n\n log.success(\n 'bootstrap already up to date (fingerprint matched) — run with `--no-cache` to force a full bootstrap'\n );\n return;\n }\n log.verbose(`[fingerprint] per-project cache stale: ${staleProject}`);\n }\n }\n\n const batchedProjectsByWorkspace = topologicallyBatchProjects(projects, projectGraph, {\n batchByWorkspace: true,\n });\n const batchedProjects = topologicallyBatchProjects(projects, projectGraph);\n\n const extraArgs = [\n ...(options['frozen-lockfile'] === true ? ['--frozen-lockfile'] : []),\n ...(options['prefer-offline'] === true ? ['--prefer-offline'] : []),\n ];\n\n for (const batch of batchedProjectsByWorkspace) {\n for (const project of batch) {\n if (project.isWorkspaceProject) {\n log.verbose(`Skipping workspace project: ${project.name}`);\n continue;\n }\n\n if (project.hasDependencies()) {\n await project.installDependencies({ extraArgs });\n }\n }\n }\n\n const yarnLock = await readYarnLock(osd);\n\n await validateDependencies(osd, yarnLock, options['single-version']?.toLowerCase?.());\n\n await linkProjectExecutables(projects, projectGraph);\n\n const checksums = await getAllChecksums(osd, log, yarnLock);\n const caches = new Map();\n let cachedProjectCount = 0;\n\n for (const project of projects.values()) {\n if (project.hasScript('osd:bootstrap') || project.hasBuildTargets()) {\n const file = new BootstrapCacheFile(osd, project, checksums);\n const valid = options.cache && file.isValid();\n\n if (valid) {\n log.debug(`[${project.name}] cache up to date`);\n cachedProjectCount += 1;\n }\n\n caches.set(project, { file, valid });\n }\n }\n\n if (cachedProjectCount > 0) {\n log.success(`${cachedProjectCount} bootstrap builds are cached`);\n }\n\n await parallelizeBatches(batchedProjects, async (project) => {\n const cache = caches.get(project);\n if (cache && !cache.valid) {\n // Explicitly defined targets override any bootstrap scripts\n if (project.hasBuildTargets()) {\n if (project.hasScript('osd:bootstrap')) {\n log.debug(\n `[${project.name}] ignoring [osd:bootstrap] script since build targets are provided`\n );\n }\n\n log.info(`[${project.name}] running [osd:bootstrap] build targets`);\n\n cache.file.delete();\n await project.buildForTargets({ sourceMaps: true });\n } else {\n log.info(`[${project.name}] running [osd:bootstrap] script`);\n\n cache.file.delete();\n await project.runScriptStreaming('osd:bootstrap');\n }\n\n cache.file.write();\n log.success(`[${project.name}] bootstrap complete`);\n }\n });\n\n // Record the successful run for next time's fast path. Only when eligible\n // so partial/scoped runs don't clobber the fingerprint captured by a full\n // successful bootstrap.\n if (fastPathEligible) {\n writeFingerprint(osd, computeFingerprint(osd, projects));\n }\n },\n};\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport del from 'del';\nimport ora from 'ora';\nimport { join, relative } from 'path';\n\nimport { isDirectory } from '../utils/fs';\nimport { log } from '../utils/log';\nimport { deleteFingerprint } from '../utils/bootstrap_fingerprint';\nimport { ICommand } from './';\n\nexport const CleanCommand: ICommand = {\n description: 'Remove the node_modules and target directories from all projects.',\n name: 'clean',\n\n async run(projects, _projectGraph, { osd }) {\n // Bootstrap's fingerprint relies on node_modules/target existing and\n // matching a prior successful run; wipe it now so the next bootstrap\n // can't falsely short-circuit.\n deleteFingerprint(osd);\n\n const toDelete = [];\n for (const project of projects.values()) {\n if (await isDirectory(project.nodeModulesLocation)) {\n toDelete.push({\n cwd: project.path,\n pattern: relative(project.path, project.nodeModulesLocation),\n });\n }\n\n if (await isDirectory(project.targetLocation)) {\n toDelete.push({\n cwd: project.path,\n pattern: relative(project.path, project.targetLocation),\n });\n }\n\n const { extraPatterns } = project.getCleanConfig();\n if (extraPatterns) {\n toDelete.push({\n cwd: project.path,\n pattern: extraPatterns,\n });\n }\n }\n\n if (toDelete.length === 0) {\n log.success('Nothing to delete');\n } else {\n /**\n * In order to avoid patterns like `/build` in packages from accidentally\n * impacting files outside the package we use `process.chdir()` to change\n * the cwd to the package and execute `del()` without the `force` option\n * so it will check that each file being deleted is within the package.\n *\n * `del()` does support a `cwd` option, but it's only for resolving the\n * patterns and does not impact the cwd check.\n */\n const originalCwd = process.cwd();\n try {\n for (const { pattern, cwd } of toDelete) {\n process.chdir(cwd);\n const promise = del(pattern);\n\n if (log.wouldLogLevel('info')) {\n ora.promise(promise, relative(originalCwd, join(cwd, String(pattern))));\n }\n\n await promise;\n }\n } finally {\n process.chdir(originalCwd);\n }\n }\n },\n};\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { ProjectGraph, ProjectMap } from '../utils/projects';\n\nexport interface ICommandConfig {\n extraArgs: string[];\n options: { [key: string]: any };\n rootPath: string;\n osd: OpenSearchDashboards;\n}\n\nexport interface ICommand {\n name: string;\n description: string;\n\n run: (projects: ProjectMap, projectGraph: ProjectGraph, config: ICommandConfig) => Promise;\n}\n\nimport { BootstrapCommand } from './bootstrap';\nimport { CleanCommand } from './clean';\nimport { RunCommand } from './run';\nimport { WatchCommand } from './watch';\nimport { OpenSearchDashboards } from '../utils/opensearch_dashboards';\n\nexport const commands: { [key: string]: ICommand } = {\n bootstrap: BootstrapCommand,\n clean: CleanCommand,\n run: RunCommand,\n watch: WatchCommand,\n};\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { CliError } from '../utils/errors';\nimport { log } from '../utils/log';\nimport { parallelizeBatches } from '../utils/parallelize';\nimport { topologicallyBatchProjects } from '../utils/projects';\nimport { ICommand } from './';\n\nexport const RunCommand: ICommand = {\n description: 'Run script defined in package.json in each package that contains that script.',\n name: 'run',\n\n async run(projects, projectGraph, { extraArgs }) {\n const batchedProjects = topologicallyBatchProjects(projects, projectGraph);\n\n if (extraArgs.length === 0) {\n throw new CliError('No script specified');\n }\n\n const scriptName = extraArgs[0];\n const scriptArgs = extraArgs.slice(1);\n\n await parallelizeBatches(batchedProjects, async (project) => {\n if (project.hasScript(scriptName)) {\n log.info(`[${project.name}] running \"${scriptName}\" script`);\n await project.runScriptStreaming(scriptName, {\n args: scriptArgs,\n });\n log.success(`[${project.name}] complete`);\n }\n });\n },\n};\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { CliError } from '../utils/errors';\nimport { log } from '../utils/log';\nimport { parallelizeBatches } from '../utils/parallelize';\nimport { ProjectMap, topologicallyBatchProjects } from '../utils/projects';\nimport { waitUntilWatchIsReady } from '../utils/watch';\nimport { ICommand } from './';\n\n/**\n * Name of the script in the package/project package.json file to run during `osd watch`.\n */\nconst watchScriptName = 'osd:watch';\n\n/**\n * Name of the OpenSearch Dashboards project.\n */\nconst opensearchDashboardsProjectName = 'opensearch-dashboards';\n\n/**\n * Command that traverses through list of available projects/packages that have `osd:watch` script in their\n * package.json files, groups them into topology aware batches and then processes theses batches one by one\n * running `osd:watch` scripts in parallel within the same batch.\n *\n * Command internally relies on the fact that most of the build systems that are triggered by `osd:watch`\n * will emit special \"marker\" once build/watch process is ready that we can use as completion condition for\n * the `osd:watch` script and eventually for the entire batch. Currently we support completion \"markers\" for\n * `webpack` and `tsc` only, for the rest we rely on predefined timeouts.\n */\nexport const WatchCommand: ICommand = {\n description: 'Runs `osd:watch` script for every project.',\n name: 'watch',\n\n async run(projects, projectGraph) {\n const projectsToWatch: ProjectMap = new Map();\n for (const project of projects.values()) {\n // We can't watch project that doesn't have `osd:watch` script.\n if (project.hasScript(watchScriptName)) {\n projectsToWatch.set(project.name, project);\n }\n }\n\n if (projectsToWatch.size === 0) {\n throw new CliError(\n `There are no projects to watch found. Make sure that projects define 'osd:watch' script in 'package.json'.`\n );\n }\n\n const projectNames = Array.from(projectsToWatch.keys());\n log.info(`Running ${watchScriptName} scripts for [${projectNames.join(', ')}].`);\n\n // OpenSearch Dashboards should always be run the last, so we don't rely on automatic\n // topological batching and push it to the last one-entry batch manually.\n const shouldWatchOpenSearchDashboardsProject = projectsToWatch.delete(\n opensearchDashboardsProjectName\n );\n\n const batchedProjects = topologicallyBatchProjects(projectsToWatch, projectGraph);\n\n if (shouldWatchOpenSearchDashboardsProject) {\n batchedProjects.push([projects.get(opensearchDashboardsProjectName)!]);\n }\n\n await parallelizeBatches(batchedProjects, async (pkg) => {\n const completionHint = await waitUntilWatchIsReady(\n // @ts-expect-error TS2345 TODO(ts-error): fixme\n pkg.runScriptStreaming(watchScriptName, {\n debug: false,\n }).stdout\n );\n\n log.success(`[${pkg.name}] Initial build completed (${completionHint}).`);\n });\n },\n};\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { resolve } from 'path';\n\ninterface Options {\n rootPath: string;\n skipOpenSearchDashboardsPlugins?: boolean;\n ossOnly?: boolean;\n}\n\n/**\n * Returns all the paths where plugins are located\n */\nexport function getProjectPaths({ rootPath, ossOnly, skipOpenSearchDashboardsPlugins }: Options) {\n const projectPaths = [rootPath, resolve(rootPath, 'packages/*')];\n\n // This is needed in order to install the dependencies for the declared\n // plugin functional used in the selenium functional tests.\n // As we are now using the webpack dll for the client vendors dependencies\n // when we run the plugin functional tests against the distributable\n // dependencies used by such plugins like @eui, react and react-dom can't\n // be loaded from the dll as the context is different from the one declared\n // into the webpack dll reference plugin.\n // In anyway, have a plugin declaring their own dependencies is the\n // correct and the expect behavior.\n projectPaths.push(resolve(rootPath, 'test/plugin_functional/plugins/*'));\n projectPaths.push(resolve(rootPath, 'test/interpreter_functional/plugins/*'));\n projectPaths.push(resolve(rootPath, 'examples/*'));\n\n if (!skipOpenSearchDashboardsPlugins) {\n projectPaths.push(resolve(rootPath, '../opensearch-dashboards-extra/*'));\n projectPaths.push(resolve(rootPath, '../opensearch-dashboards-extra/*/packages/*'));\n projectPaths.push(resolve(rootPath, '../opensearch-dashboards-extra/*/plugins/*'));\n projectPaths.push(resolve(rootPath, 'plugins/*'));\n projectPaths.push(resolve(rootPath, 'plugins/*/packages/*'));\n projectPaths.push(resolve(rootPath, 'plugins/*/plugins/*'));\n }\n\n return projectPaths;\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport copy from 'cpy';\nimport del from 'del';\nimport { join, relative, resolve } from 'path';\n\nimport { getProjectPaths } from '../config';\nimport { isDirectory, isFile } from '../utils/fs';\nimport { log } from '../utils/log';\nimport { readPackageJson, writePackageJson } from '../utils/package_json';\nimport { Project } from '../utils/project';\nimport {\n buildProjectGraph,\n getProjects,\n includeTransitiveProjects,\n topologicallyBatchProjects,\n} from '../utils/projects';\n\nexport async function buildProductionProjects({\n opensearchDashboardsRoot,\n buildRoot,\n}: {\n opensearchDashboardsRoot: string;\n buildRoot: string;\n}) {\n const projects = await getProductionProjects(opensearchDashboardsRoot);\n const projectGraph = buildProjectGraph(projects);\n const batchedProjects = topologicallyBatchProjects(projects, projectGraph);\n\n const projectNames = [...projects.values()].map((project) => project.name);\n log.info(`Preparing production build for [${projectNames.join(', ')}]`);\n\n for (const batch of batchedProjects) {\n for (const project of batch) {\n await deleteTarget(project);\n await buildProject(project);\n await copyToBuild(project, opensearchDashboardsRoot, buildRoot);\n }\n }\n}\n\n/**\n * Returns the subset of projects that should be built into the production\n * bundle. As we copy these into OpenSearch Dashboards 's `node_modules` during the build step,\n * and let OpenSearch Dashboards 's build process be responsible for installing dependencies,\n * we only include OpenSearch Dashboards 's transitive _production_ dependencies. If onlyOSS\n * is supplied, we omit projects with build.oss in their package.json set to false.\n */\nasync function getProductionProjects(rootPath: string) {\n const projectPaths = getProjectPaths({ rootPath });\n const projects = await getProjects(rootPath, projectPaths);\n const projectsSubset = [projects.get('opensearch-dashboards')!];\n\n const productionProjects = includeTransitiveProjects(projectsSubset, projects, {\n onlyProductionDependencies: true,\n });\n\n // We remove OpenSearch Dashboards , as we're already building OpenSearch Dashboards\n productionProjects.delete('opensearch-dashboards');\n\n productionProjects.forEach((project) => {\n if (project.getBuildConfig().oss === false) {\n productionProjects.delete(project.json.name);\n }\n });\n return productionProjects;\n}\n\nasync function deleteTarget(project: Project) {\n const targetDir = project.targetLocation;\n\n if (await isDirectory(targetDir)) {\n await del(targetDir, { force: true });\n }\n}\n\nasync function buildProject(project: Project) {\n // Explicitly defined targets override any bootstrap scripts\n if (project.hasBuildTargets()) {\n await project.buildForTargets();\n } else if (project.hasScript('build')) {\n await project.runScript('build');\n }\n}\n\n/**\n * Copy all the project's files from its \"intermediate build directory\" and\n * into the build. The intermediate directory can either be the root of the\n * project or some other location defined in the project's `package.json`.\n *\n * When copying all the files into the build, we exclude `node_modules` because\n * we want the OpenSearch Dashboards build to be responsible for actually installing all\n * dependencies. The primary reason for allowing the OpenSearch Dashboards build process to\n * manage dependencies is that it will \"dedupe\" them, so we don't include\n * unnecessary copies of dependencies.\n */\nasync function copyToBuild(project: Project, opensearchDashboardsRoot: string, buildRoot: string) {\n // We want the package to have the same relative location within the build\n const relativeProjectPath = relative(opensearchDashboardsRoot, project.path);\n const buildProjectPath = resolve(buildRoot, relativeProjectPath);\n\n await copy(['**/*', '!node_modules/**'], buildProjectPath, {\n cwd: project.getIntermediateBuildDirectory(),\n dot: true,\n parents: true,\n });\n\n // If a project is using an intermediate build directory, we special-case our\n // handling of `package.json`, as the project build process might have copied\n // (a potentially modified) `package.json` into the intermediate build\n // directory already. If so, we want to use that `package.json` as the basis\n // for creating the production-ready `package.json`. If it's not present in\n // the intermediate build, we fall back to using the project's already defined\n // `package.json`.\n const packageJson = (await isFile(join(buildProjectPath, 'package.json')))\n ? await readPackageJson(buildProjectPath)\n : project.json;\n\n await writePackageJson(buildProjectPath, packageJson);\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nexport { buildProductionProjects } from './build_production_projects';\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { ICommand, ICommandConfig } from './commands';\nimport { CliError } from './utils/errors';\nimport { log } from './utils/log';\nimport { buildProjectGraph } from './utils/projects';\nimport { renderProjectsTree } from './utils/projects_tree';\nimport { OpenSearchDashboards } from './utils/opensearch_dashboards';\n\nexport async function runCommand(command: ICommand, config: Omit) {\n try {\n log.debug(`Running [${command.name}] command from [${config.rootPath}]`);\n\n const osd = await OpenSearchDashboards.loadFrom(config.rootPath);\n const projects = osd.getFilteredProjects({\n skipOpenSearchDashboardsPlugins: Boolean(\n config.options['skip-opensearch-dashboards-plugins']\n ),\n ossOnly: Boolean(config.options.oss),\n exclude: toArray(config.options.exclude),\n include: toArray(config.options.include),\n });\n\n if (projects.size === 0) {\n log.error(\n `There are no projects found. Double check project name(s) in '-i/--include' and '-e/--exclude' filters.`\n );\n return process.exit(1);\n }\n\n const projectGraph = buildProjectGraph(projects);\n\n log.debug(`Found ${projects.size.toString()} projects`);\n log.debug(renderProjectsTree(config.rootPath, projects));\n\n await command.run(projects, projectGraph, {\n ...config,\n osd,\n });\n } catch (error) {\n log.error(`[${command.name}] failed:`);\n\n if (error instanceof CliError) {\n log.error(error.message);\n\n const metaOutput = Object.entries(error.meta)\n .map(([key, value]) => `${key}: ${value}`)\n .join('\\n');\n\n if (metaOutput) {\n log.info('Additional debugging info:\\n');\n log.indent(2);\n log.info(metaOutput);\n log.indent(-2);\n }\n } else {\n log.error(error);\n }\n\n process.exit(1);\n }\n}\n\nfunction toArray(value?: T | T[]) {\n if (value == null) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport Fs from 'fs';\nimport Path from 'path';\n\nimport { ChecksumMap } from './project_checksums';\nimport { Project } from '../utils/project';\nimport { OpenSearchDashboards } from '../utils/opensearch_dashboards';\n\nexport class BootstrapCacheFile {\n private readonly path: string;\n private readonly expectedValue: string | undefined;\n\n constructor(osd: OpenSearchDashboards, project: Project, checksums: ChecksumMap | false) {\n this.path = Path.resolve(project.targetLocation, '.bootstrap-cache');\n\n if (!checksums) {\n return;\n }\n\n const projectAndDepCacheKeys = Array.from(osd.getProjectAndDeps(project.name).values())\n // sort deps by name so that the key is stable\n .sort((a, b) => a.name.localeCompare(b.name))\n // get the cacheKey for each project, return undefined if the cache key couldn't be determined\n .map((p) => {\n const cacheKey = checksums.get(p.name);\n if (cacheKey) {\n return `${p.name}:${cacheKey}`;\n }\n });\n\n // if any of the relevant cache keys are undefined then the projectCacheKey must be too\n this.expectedValue = projectAndDepCacheKeys.some((k) => !k)\n ? undefined\n : [\n `# this is only human readable for debugging, please don't try to parse this`,\n ...projectAndDepCacheKeys,\n ].join('\\n');\n }\n\n isValid() {\n if (!this.expectedValue) {\n return false;\n }\n\n try {\n return Fs.readFileSync(this.path, 'utf8') === this.expectedValue;\n } catch (error) {\n if (error.code === 'ENOENT') {\n return false;\n }\n\n throw error;\n }\n }\n\n delete() {\n try {\n Fs.unlinkSync(this.path);\n } catch (error) {\n if (error.code !== 'ENOENT') {\n throw error;\n }\n }\n }\n\n write() {\n if (!this.expectedValue) {\n return;\n }\n\n Fs.mkdirSync(Path.dirname(this.path), { recursive: true });\n Fs.writeFileSync(this.path, this.expectedValue);\n }\n}\n","/*\n * Copyright OpenSearch Contributors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport Crypto from 'crypto';\nimport Fs from 'fs';\nimport Path from 'path';\n\nimport { OpenSearchDashboards } from './opensearch_dashboards';\nimport { ProjectMap } from './projects';\n\nconst FINGERPRINT_VERSION = 1;\nconst FINGERPRINT_FILENAME = '.osd-bootstrap-fingerprint';\n\nexport interface Fingerprint {\n version: number;\n rootLockfile: string;\n rootPackageJson: string;\n projectManifests: string;\n externalPluginLockfiles: string;\n osdPmDist: string;\n nodeVersion: string;\n yarnVersion: string;\n}\n\nconst STRING_FIELDS: Array = [\n 'rootLockfile',\n 'rootPackageJson',\n 'projectManifests',\n 'externalPluginLockfiles',\n 'osdPmDist',\n 'nodeVersion',\n 'yarnVersion',\n];\n\n// yarn 1.x exposes its version via npm_config_user_agent when it invokes a\n// script, e.g. \"yarn/1.22.19 npm/? node/v22.22.0 darwin arm64\". Falls back to\n// empty string when bootstrap is invoked outside a yarn script (e.g. directly\n// via scripts/osd).\nconst getYarnVersion = (): string => {\n const ua = process.env.npm_config_user_agent || '';\n const m = ua.match(/\\byarn\\/([^\\s,]+)/);\n return m ? m[1] : '';\n};\n\nconst sha1 = (buf: Buffer | string) => Crypto.createHash('sha1').update(buf).digest('hex');\n\n// Normalize path separators so fingerprints computed on different platforms\n// (e.g. Windows vs. POSIX) compare equal for the same logical project layout.\nconst normalizeRelativePath = (rel: string) => rel.replace(/\\\\/g, '/');\n\nconst readOrEmpty = (p: string): Buffer => {\n try {\n return Fs.readFileSync(p);\n } catch (e: any) {\n if (e?.code === 'ENOENT') return Buffer.alloc(0);\n throw e;\n }\n};\n\nconst fingerprintPath = (osd: OpenSearchDashboards) =>\n Path.join(osd.getAbsolute(), FINGERPRINT_FILENAME);\n\nexport function computeFingerprint(osd: OpenSearchDashboards, projects: ProjectMap): Fingerprint {\n const root = osd.getAbsolute();\n\n const sortedProjects = Array.from(projects.values()).sort((a, b) => a.path.localeCompare(b.path));\n\n const manifestParts: string[] = [];\n const lockParts: string[] = [];\n for (const project of sortedProjects) {\n const rel = normalizeRelativePath(osd.getRelative(project.path));\n manifestParts.push(`${rel}:${sha1(readOrEmpty(project.packageJsonLocation))}`);\n // External plugins (./plugins/*, ../opensearch-dashboards-extra/*) run\n // their own yarn install against their own yarn.lock, so any change to\n // that lockfile must invalidate the fingerprint. Workspace projects have\n // their yarn.lock symlinked to the root lockfile and are already covered\n // by rootLockfile, so they're skipped here to avoid double-counting.\n // Newly cloned plugins are caught via projectManifests because their\n // package.json is a new entry in the sorted manifest list.\n if (!project.isWorkspaceProject && !project.isWorkspaceRoot) {\n const lockBuf = readOrEmpty(Path.join(project.path, 'yarn.lock'));\n if (lockBuf.length > 0) {\n lockParts.push(`${rel}:${sha1(lockBuf)}`);\n }\n }\n }\n\n return {\n version: FINGERPRINT_VERSION,\n rootLockfile: sha1(readOrEmpty(Path.join(root, 'yarn.lock'))),\n rootPackageJson: sha1(readOrEmpty(Path.join(root, 'package.json'))),\n projectManifests: sha1(manifestParts.join('\\n')),\n externalPluginLockfiles: sha1(lockParts.join('\\n')),\n osdPmDist: sha1(readOrEmpty(Path.join(root, 'packages/osd-pm/dist/index.js'))),\n nodeVersion: process.version,\n yarnVersion: getYarnVersion(),\n };\n}\n\nexport function readFingerprint(osd: OpenSearchDashboards): Fingerprint | null {\n try {\n const raw = Fs.readFileSync(fingerprintPath(osd), 'utf8');\n const parsed = JSON.parse(raw);\n if (\n !parsed ||\n typeof parsed !== 'object' ||\n parsed.version !== FINGERPRINT_VERSION ||\n !STRING_FIELDS.every((k) => typeof parsed[k] === 'string')\n ) {\n return null;\n }\n return parsed as Fingerprint;\n } catch {\n return null;\n }\n}\n\nexport function writeFingerprint(osd: OpenSearchDashboards, fp: Fingerprint): void {\n try {\n // Atomic write: rename is atomic on POSIX, so an interrupted bootstrap\n // can never leave a half-written fingerprint that readFingerprint would\n // happily parse as valid.\n const finalPath = fingerprintPath(osd);\n const tmpPath = `${finalPath}.tmp`;\n Fs.writeFileSync(tmpPath, JSON.stringify(fp, null, 2));\n Fs.renameSync(tmpPath, finalPath);\n } catch {\n // Non-fatal: fast-path just won't trigger next time.\n }\n}\n\nexport function deleteFingerprint(osd: OpenSearchDashboards): void {\n try {\n Fs.unlinkSync(fingerprintPath(osd));\n } catch (e: any) {\n if (e?.code !== 'ENOENT') throw e;\n }\n}\n\nexport function fingerprintsEqual(a: Fingerprint, b: Fingerprint): boolean {\n return (\n a.version === b.version &&\n a.rootLockfile === b.rootLockfile &&\n a.rootPackageJson === b.rootPackageJson &&\n a.projectManifests === b.projectManifests &&\n a.externalPluginLockfiles === b.externalPluginLockfiles &&\n a.osdPmDist === b.osdPmDist &&\n a.nodeVersion === b.nodeVersion &&\n a.yarnVersion === b.yarnVersion\n );\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { Writable } from 'stream';\n\nimport chalk from 'chalk';\nimport execa from 'execa';\nimport logTransformer from 'strong-log-transformer';\n\nimport { log } from './log';\n\nconst colorWheel = [chalk.cyan, chalk.magenta, chalk.blue, chalk.yellow, chalk.green];\nconst getColor = () => {\n const color = colorWheel.shift()!;\n colorWheel.push(color);\n return color;\n};\n\nexport function spawn(command: string, args: string[], opts: execa.Options) {\n return execa(command, args, {\n stdio: 'inherit',\n preferLocal: true,\n ...opts,\n });\n}\n\nfunction streamToLog(debug: boolean = true) {\n return new Writable({\n objectMode: true,\n write(line, _, cb) {\n if (line.endsWith('\\n')) {\n log[debug ? 'debug' : 'write'](line.slice(0, -1));\n } else {\n log[debug ? 'debug' : 'write'](line);\n }\n\n cb();\n },\n });\n}\n\nexport function spawnStreaming(\n command: string,\n args: string[],\n opts: execa.Options,\n { prefix, debug }: { prefix: string; debug?: boolean }\n) {\n const spawned = execa(command, args, {\n stdio: ['ignore', 'pipe', 'pipe'],\n preferLocal: true,\n ...opts,\n });\n\n const color = getColor();\n const prefixedStdout = logTransformer({ tag: color.bold(prefix) });\n const prefixedStderr = logTransformer({ mergeMultiline: true, tag: color.bold(prefix) });\n\n // @ts-expect-error TS2531 TODO(ts-error): fixme\n spawned.stdout.pipe(prefixedStdout).pipe(streamToLog(debug));\n // @ts-expect-error TS2531 TODO(ts-error): fixme\n spawned.stderr.pipe(prefixedStderr).pipe(streamToLog(debug));\n\n return spawned;\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nexport class CliError extends Error {\n constructor(message: string, public readonly meta = {}) {\n super(message);\n }\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport cmdShimCb from 'cmd-shim';\nimport fs from 'fs';\nimport { lstat, symlink, mkdir, unlink } from 'fs/promises';\nimport { ncp } from 'ncp';\nimport { dirname, relative } from 'path';\nimport { promisify } from 'util';\n\nexport { readFile, writeFile, chmod, unlink } from 'fs/promises';\n\nconst cmdShim = promisify(cmdShimCb);\nexport const mkdirp = async (path: string) => await mkdir(path, { recursive: true });\nexport const copyDirectory = promisify(ncp);\n\nasync function statTest(path: string, block: (stats: fs.Stats) => boolean) {\n try {\n return block(await lstat(path));\n } catch (e) {\n if (e.code === 'ENOENT') {\n return false;\n }\n throw e;\n }\n}\n\n/**\n * Test if a path points to a symlink.\n * @param path\n */\nexport async function isSymlink(path: string) {\n return await statTest(path, (stats) => stats.isSymbolicLink());\n}\n\n/**\n * Test if a path points to a directory.\n * @param path\n */\nexport async function isDirectory(path: string) {\n return await statTest(path, (stats) => stats.isDirectory());\n}\n\n/**\n * Test if a path points to a regular file.\n * @param path\n */\nexport async function isFile(path: string) {\n return await statTest(path, (stats) => stats.isFile());\n}\n\n/**\n * Create a symlink at dest that points to src. Adapted from\n * https://github.com/lerna/lerna/blob/2f1b87d9e2295f587e4ac74269f714271d8ed428/src/FileSystemUtilities.js#L103.\n *\n * @param src\n * @param dest\n * @param type 'dir', 'file', 'junction', or 'exec'. 'exec' on\n * windows will use the `cmd-shim` module since symlinks can't be used\n * for executable files on windows.\n */\nexport async function createSymlink(src: string, dest: string, type: string) {\n if (process.platform === 'win32') {\n if (type === 'exec') {\n await cmdShim(src, dest);\n } else {\n await forceCreate(src, dest, type);\n }\n } else {\n const posixType = type === 'exec' ? 'file' : type;\n const relativeSource = relative(dirname(dest), src);\n await forceCreate(relativeSource, dest, posixType);\n }\n}\n\nasync function forceCreate(src: string, dest: string, type: string) {\n try {\n // If something exists at `dest` we need to remove it first.\n await unlink(dest);\n } catch (error) {\n if (error.code !== 'ENOENT') {\n throw error;\n }\n }\n\n await symlink(src, dest, type);\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { dirname, relative, resolve, sep } from 'path';\n\nimport { chmod, createSymlink, isFile, mkdirp } from './fs';\nimport { log } from './log';\nimport { ProjectGraph, ProjectMap } from './projects';\n\n/**\n * Yarn does not link the executables from dependencies that are installed\n * using `link:` https://github.com/yarnpkg/yarn/pull/5046\n *\n * We simulate this functionality by walking through each project's project\n * dependencies, and manually linking their executables if defined. The logic\n * for linking was mostly adapted from lerna: https://github.com/lerna/lerna/blob/1d7eb9eeff65d5a7de64dea73613b1bf6bfa8d57/src/PackageUtilities.js#L348\n */\nexport async function linkProjectExecutables(\n projectsByName: ProjectMap,\n projectGraph: ProjectGraph\n) {\n log.debug(`Linking package executables`);\n for (const [projectName, projectDeps] of projectGraph) {\n const project = projectsByName.get(projectName)!;\n const binsDir = resolve(project.nodeModulesLocation, '.bin');\n\n for (const projectDep of projectDeps) {\n const executables = projectDep.getExecutables();\n for (const name of Object.keys(executables)) {\n const srcPath = executables[name];\n\n // existing logic from lerna -- ensure that the bin we are going to\n // point to exists or ignore it\n if (!(await isFile(srcPath))) {\n continue;\n }\n\n const dest = resolve(binsDir, name);\n\n // Get relative project path with normalized path separators.\n const projectRelativePath = relative(project.path, srcPath).split(sep).join('/');\n\n log.debug(`[${project.name}] ${name} -> ${projectRelativePath}`);\n\n await mkdirp(dirname(dest));\n await createSymlink(srcPath, dest, 'exec');\n await chmod(dest, '755');\n }\n }\n }\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {\n ToolingLog,\n ToolingLogTextWriter,\n LogLevel,\n parseLogLevel,\n ParsedLogLevel,\n} from '@osd/dev-utils/tooling_log';\n\nclass Log extends ToolingLog {\n private logLevel!: ParsedLogLevel;\n\n constructor() {\n super();\n this.setLogLevel('info');\n }\n\n setLogLevel(level: LogLevel) {\n this.logLevel = parseLogLevel(level);\n this.setWriters([\n new ToolingLogTextWriter({\n level: this.logLevel.name,\n writeTo: process.stdout,\n }),\n ]);\n }\n\n wouldLogLevel(level: LogLevel) {\n return this.logLevel.flags[level];\n }\n}\n\nexport const log = new Log();\nexport { LogLevel, Log };\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport Path from 'path';\n\nimport multimatch from 'multimatch';\nimport isPathInside from 'is-path-inside';\n\nimport { resolveDepsForProject, YarnLock } from './yarn_lock';\nimport { Log } from './log';\nimport { ProjectMap, getProjects, includeTransitiveProjects } from './projects';\nimport { Project } from './project';\nimport { getProjectPaths } from '../config';\n\n/**\n * Helper class for dealing with a set of projects as children of\n * the OpenSearch Dashboards project. The osd/pm is currently implemented to be\n * more generic, where everything is an operation of generic projects,\n * but that leads to exceptions where we need the OpenSearch Dashboards project and\n * do things like `project.get('opensearch-dashboards')!`.\n *\n * Using this helper we can restructre the generic list of projects\n * as a OpenSearch Dashboards object which encapulates all the projects in the\n * workspace and knows about the root OpenSearch Dashboards project.\n */\nexport class OpenSearchDashboards {\n static async loadFrom(rootPath: string) {\n return new OpenSearchDashboards(await getProjects(rootPath, getProjectPaths({ rootPath })));\n }\n\n private readonly opensearchDashboardsProject: Project;\n\n constructor(private readonly allWorkspaceProjects: ProjectMap) {\n const opensearchDashboardsProject = allWorkspaceProjects.get('opensearch-dashboards');\n\n if (!opensearchDashboardsProject) {\n throw new TypeError(\n 'Unable to create OpenSearch Dashboards object without all projects, including the OpenSearch Dashboards project.'\n );\n }\n\n this.opensearchDashboardsProject = opensearchDashboardsProject;\n }\n\n /** make an absolute path by resolving subPath relative to the opensearch-dashboards repo */\n getAbsolute(...subPath: string[]) {\n return Path.resolve(this.opensearchDashboardsProject.path, ...subPath);\n }\n\n /** convert an absolute path to a relative path, relative to the opensearch-dashboards repo */\n getRelative(absolute: string) {\n return Path.relative(this.opensearchDashboardsProject.path, absolute);\n }\n\n /** get a copy of the map of all projects in the opensearch-dashboards workspace */\n getAllProjects() {\n return new Map(this.allWorkspaceProjects);\n }\n\n /** determine if a project with the given name exists */\n hasProject(name: string) {\n return this.allWorkspaceProjects.has(name);\n }\n\n /** get a specific project, throws if the name is not known (use hasProject() first) */\n getProject(name: string) {\n const project = this.allWorkspaceProjects.get(name);\n\n if (!project) {\n throw new Error(`No package with name \"${name}\" in the workspace`);\n }\n\n return project;\n }\n\n /** get a project and all of the projects it depends on in a ProjectMap */\n getProjectAndDeps(name: string) {\n const project = this.getProject(name);\n return includeTransitiveProjects([project], this.allWorkspaceProjects);\n }\n\n /** filter the projects to just those matching certain paths/include/exclude tags */\n getFilteredProjects(options: {\n skipOpenSearchDashboardsPlugins: boolean;\n ossOnly: boolean;\n exclude: string[];\n include: string[];\n }) {\n const allProjects = this.getAllProjects();\n const filteredProjects: ProjectMap = new Map();\n\n const pkgJsonPaths = Array.from(allProjects.values()).map((p) => p.packageJsonLocation);\n const filteredPkgJsonGlobs = getProjectPaths({\n ...options,\n rootPath: this.opensearchDashboardsProject.path,\n }).map((g) => Path.resolve(g, 'package.json'));\n const matchingPkgJsonPaths = multimatch(pkgJsonPaths, filteredPkgJsonGlobs);\n\n for (const project of allProjects.values()) {\n const pathMatches = matchingPkgJsonPaths.includes(project.packageJsonLocation);\n const notExcluded = !options.exclude.includes(project.name);\n const isIncluded = !options.include.length || options.include.includes(project.name);\n\n if (pathMatches && notExcluded && isIncluded) {\n filteredProjects.set(project.name, project);\n }\n }\n\n return filteredProjects;\n }\n\n isPartOfRepo(project: Project) {\n return (\n project.path === this.opensearchDashboardsProject.path ||\n isPathInside(project.path, this.opensearchDashboardsProject.path)\n );\n }\n\n isOutsideRepo(project: Project) {\n return !this.isPartOfRepo(project);\n }\n\n resolveAllProductionDependencies(yarnLock: YarnLock, log: Log) {\n const opensearchDashboardsDeps = resolveDepsForProject({\n project: this.opensearchDashboardsProject,\n yarnLock,\n osd: this,\n includeDependentProject: true,\n productionDepsOnly: true,\n log,\n })!;\n\n return new Map([...opensearchDashboardsDeps.entries()]);\n }\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport readPkg from 'read-pkg';\nimport writePkg from 'write-pkg';\n\nexport interface IPackageJson {\n [key: string]: any;\n}\nexport interface IPackageDependencies {\n [key: string]: string;\n}\nexport interface IPackageScripts {\n [key: string]: string;\n}\nexport interface IPackageBuildTargets {\n web?: boolean;\n node?: boolean;\n}\n\nexport function readPackageJson(cwd: string): IPackageJson {\n return readPkg({ cwd, normalize: false });\n}\n\nexport function writePackageJson(path: string, json: IPackageJson) {\n return writePkg(path, json);\n}\n\nexport const isLinkDependency = (depVersion: string) => depVersion.startsWith('link:');\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nexport async function parallelizeBatches(batches: T[][], fn: (item: T) => Promise) {\n for (const batch of batches) {\n // We need to make sure the entire batch has completed before we can move on\n // to the next batch\n await parallelize(batch, fn);\n }\n}\n\nexport async function parallelize(items: T[], fn: (item: T) => Promise, concurrency = 4) {\n if (items.length === 0) {\n return;\n }\n\n return new Promise((resolve, reject) => {\n let activePromises = 0;\n const values = items.slice(0);\n\n async function scheduleItem(item: T) {\n activePromises++;\n\n try {\n await fn(item);\n\n activePromises--;\n\n if (values.length > 0) {\n // We have more work to do, so we schedule the next promise\n scheduleItem(values.shift()!);\n } else if (activePromises === 0) {\n // We have no more values left, and all items have completed, so we've\n // completed all the work.\n resolve();\n }\n } catch (error) {\n reject(error);\n }\n }\n\n values.splice(0, concurrency).map(scheduleItem);\n });\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { existsSync, unlinkSync } from 'fs';\nimport { resolve, relative } from 'path';\nimport { inspect } from 'util';\n\nimport { CliError } from './errors';\nimport { log } from './log';\nimport {\n IPackageDependencies,\n IPackageJson,\n IPackageScripts,\n isLinkDependency,\n readPackageJson,\n} from './package_json';\nimport {\n installInDir,\n patchFile,\n runScriptInPackage,\n runScriptInPackageStreaming,\n yarnWorkspacesInfo,\n} from './scripts';\nimport { buildTargetedPackage, BuildTargets, BuildTargetTypes } from './targeted_build';\n\ninterface BuildConfig {\n skip?: boolean;\n intermediateBuildDirectory?: string;\n oss?: boolean;\n}\n\ninterface CleanConfig {\n extraPatterns?: string[];\n}\n\nexport class Project {\n public static async fromPath(path: string) {\n const pkgJson = await readPackageJson(path);\n return new Project(pkgJson, path);\n }\n\n /** parsed package.json */\n public readonly json: IPackageJson;\n /** absolute path to the package.json file in the project */\n public readonly packageJsonLocation: string;\n /** absolute path to the node_modules in the project (might not actually exist) */\n public readonly nodeModulesLocation: string;\n /** absolute path to the target directory in the project (might not actually exist) */\n public readonly targetLocation: string;\n /** absolute path to the directory containing the project */\n public readonly path: string;\n /** the version of the project */\n public readonly version: string;\n /** merged set of dependencies of the project, [name => version range] */\n public readonly allDependencies: IPackageDependencies;\n /** regular dependencies of the project, [name => version range] */\n public readonly productionDependencies: IPackageDependencies;\n /** development dependencies of the project, [name => version range] */\n public readonly devDependencies: IPackageDependencies;\n /** scripts defined in the package.json file for the project [name => body] */\n public readonly scripts: IPackageScripts;\n /** custom definitions for the project, @osd/pm: { key: value } */\n public readonly customDefinitions: IPackageJson;\n /** build targets from the custom definitions, @osd/pm: { node: true, web: true } */\n public readonly buildTargets: BuildTargetTypes[];\n\n public isWorkspaceRoot = false;\n public isWorkspaceProject = false;\n\n constructor(packageJson: IPackageJson, projectPath: string) {\n this.json = Object.freeze(packageJson);\n this.path = projectPath;\n\n this.packageJsonLocation = resolve(this.path, 'package.json');\n this.nodeModulesLocation = resolve(this.path, 'node_modules');\n this.targetLocation = resolve(this.path, 'target');\n\n this.version = this.json.version;\n this.productionDependencies = this.json.dependencies || {};\n this.devDependencies = this.json.devDependencies || {};\n this.allDependencies = {\n ...this.devDependencies,\n ...this.productionDependencies,\n };\n this.isWorkspaceRoot = this.json.hasOwnProperty('workspaces');\n\n this.scripts = this.json.scripts || {};\n this.customDefinitions = this.json['@osd/pm'] || {};\n\n this.buildTargets = [];\n for (const target of BuildTargets) {\n if (this.customDefinitions[target]) this.buildTargets.push(target);\n }\n }\n\n public get name(): string {\n return this.json.name;\n }\n\n public ensureValidProjectDependency(project: Project, dependentProjectIsInWorkspace: boolean) {\n const versionInPackageJson = this.allDependencies[project.name];\n\n let expectedVersionInPackageJson;\n if (dependentProjectIsInWorkspace) {\n expectedVersionInPackageJson = project.json.version;\n } else {\n const relativePathToProject = normalizePath(relative(this.path, project.path));\n expectedVersionInPackageJson = `link:${relativePathToProject}`;\n }\n\n // No issues!\n if (versionInPackageJson === expectedVersionInPackageJson) {\n return;\n }\n\n let problemMsg;\n if (isLinkDependency(versionInPackageJson) && dependentProjectIsInWorkspace) {\n problemMsg = `but should be using a workspace`;\n } else if (isLinkDependency(versionInPackageJson)) {\n problemMsg = `using 'link:', but the path is wrong`;\n } else {\n problemMsg = `but it's not using the local package`;\n }\n\n throw new CliError(\n `[${this.name}] depends on [${project.name}] ${problemMsg}. Update its package.json to the expected value below.`,\n {\n actual: `\"${project.name}\": \"${versionInPackageJson}\"`,\n expected: `\"${project.name}\": \"${expectedVersionInPackageJson}\"`,\n package: `${this.name} (${this.packageJsonLocation})`,\n }\n );\n }\n\n public getBuildConfig(): BuildConfig {\n return (this.json.opensearchDashboards && this.json.opensearchDashboards.build) || {};\n }\n\n /**\n * Returns the directory that should be copied into the OpenSearch Dashboards build artifact.\n * This config can be specified to only include the project's build artifacts\n * instead of everything located in the project directory.\n */\n public getIntermediateBuildDirectory() {\n return resolve(this.path, this.getBuildConfig().intermediateBuildDirectory || '.');\n }\n\n public getCleanConfig(): CleanConfig {\n return (this.json.opensearchDashboards && this.json.opensearchDashboards.clean) || {};\n }\n\n public isFlaggedAsDevOnly() {\n return !!(this.json.opensearchDashboards && this.json.opensearchDashboards.devOnly);\n }\n\n public hasScript(name: string) {\n return name in this.scripts;\n }\n\n public hasBuildTargets() {\n return this.buildTargets.length > 0;\n }\n\n public getExecutables(): { [key: string]: string } {\n const raw = this.json.bin;\n\n if (!raw) {\n return {};\n }\n\n if (typeof raw === 'string') {\n return {\n [this.name]: resolve(this.path, raw),\n };\n }\n\n if (typeof raw === 'object') {\n const binsConfig: { [k: string]: string } = {};\n for (const binName of Object.keys(raw)) {\n binsConfig[binName] = resolve(this.path, raw[binName]);\n }\n return binsConfig;\n }\n\n throw new CliError(\n `[${this.name}] has an invalid \"bin\" field in its package.json, ` +\n `expected an object or a string`,\n {\n binConfig: inspect(raw),\n package: `${this.name} (${this.packageJsonLocation})`,\n }\n );\n }\n\n public async runScript(scriptName: string, args: string[] = []) {\n log.info(`Running script [${scriptName}] in [${this.name}]:`);\n return runScriptInPackage(scriptName, args, this);\n }\n\n public runScriptStreaming(\n scriptName: string,\n options: { args?: string[]; debug?: boolean } = {}\n ) {\n return runScriptInPackageStreaming({\n script: scriptName,\n args: options.args || [],\n pkg: this,\n debug: options.debug,\n });\n }\n\n public buildForTargets(options: { sourceMaps?: boolean } = {}) {\n if (!this.hasBuildTargets()) {\n log.warning(`There are no build targets defined for [${this.name}]`);\n return false;\n }\n\n return buildTargetedPackage({\n pkg: this,\n sourceMaps: options.sourceMaps,\n });\n }\n\n public hasDependencies() {\n return Object.keys(this.allDependencies).length > 0;\n }\n\n public async installDependencies({ extraArgs }: { extraArgs: string[] }) {\n log.info(`[${this.name}] running yarn`);\n\n log.write('');\n await installInDir(this.path, extraArgs);\n log.write('');\n\n await this.removeExtraneousNodeModules();\n }\n\n /**\n * Install a specific version of a dependency and update the package.json.\n * When a range is not specified, ^ is used. The range is then\n * placed in the package.json with intentionally no validation.\n */\n public async installDependencyVersion(\n depName: string,\n version: string,\n dev: boolean = false,\n range?: string\n ) {\n log.info(`[${this.name}] running yarn to install ${depName}@${version}`);\n\n log.write('');\n\n const rangeToUse = range || `^${version}`;\n\n const extraArgs = [`${depName}@${version}`];\n if (dev) extraArgs.push('--dev');\n\n if (this.isWorkspaceProject) {\n await installInDir(this.path);\n } else {\n await installInDir(this.path, extraArgs, true);\n }\n\n log.info(`[${this.name}] updating manifests with ${depName}@${rangeToUse}`);\n\n await patchFile(\n this.packageJsonLocation,\n `\"${depName}\": \"${version}\"`,\n `\"${depName}\": \"${rangeToUse}\"`\n );\n // The lock-file of workspace packages are symlinked to the root project's and editing the one in the project suffices\n await patchFile(\n resolve(this.path, 'yarn.lock'),\n `${depName}@${version}`,\n `${depName}@${rangeToUse}`\n );\n\n log.write('');\n\n await this.removeExtraneousNodeModules();\n }\n\n /**\n * Yarn workspaces symlinks workspace projects to the root node_modules, even\n * when there is no depenency on the project. This results in unnecicary, and\n * often duplicated code in the build archives.\n */\n public async removeExtraneousNodeModules() {\n // this is only relevant for the root workspace\n if (!this.isWorkspaceRoot) {\n return;\n }\n\n const workspacesInfo = await yarnWorkspacesInfo(this.path);\n const unusedWorkspaces = new Set(Object.keys(workspacesInfo));\n\n // check for any cross-project dependency\n for (const name of Object.keys(workspacesInfo)) {\n const workspace = workspacesInfo[name];\n workspace.workspaceDependencies.forEach((w) => unusedWorkspaces.delete(w));\n }\n\n unusedWorkspaces.forEach((name) => {\n const { dependencies, devDependencies } = this.json;\n const nodeModulesPath = resolve(this.nodeModulesLocation, name);\n const isDependency = dependencies && dependencies.hasOwnProperty(name);\n const isDevDependency = devDependencies && devDependencies.hasOwnProperty(name);\n\n if (!isDependency && !isDevDependency && existsSync(nodeModulesPath)) {\n log.debug(`No dependency on ${name}, removing link in node_modules`);\n unlinkSync(nodeModulesPath);\n }\n });\n }\n}\n\n// We normalize all path separators to `/` in generated files\nfunction normalizePath(path: string) {\n return path.replace(/[\\\\\\/]+/g, '/');\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { stat } from 'fs/promises';\nimport Crypto from 'crypto';\n\nimport execa from 'execa';\n\nimport { YarnLock, resolveDepsForProject } from './yarn_lock';\nimport { ProjectMap } from '../utils/projects';\nimport { Project } from '../utils/project';\nimport { OpenSearchDashboards } from '../utils/opensearch_dashboards';\nimport { Log } from '../utils/log';\n\nexport type ChecksumMap = Map;\n/** map of [repo relative path to changed file, type of change] */\ntype Changes = Map;\n\nconst projectBySpecificitySorter = (a: Project, b: Project) => b.path.length - a.path.length;\n\n/** Get the changed files for a set of projects */\nasync function getChangesForProjects(projects: ProjectMap, osd: OpenSearchDashboards, log: Log) {\n log.verbose('getting changed files');\n\n let stdout: string;\n try {\n ({ stdout } = await execa(\n 'git',\n [\n 'ls-files',\n '-dmto',\n '--exclude-standard',\n '--',\n ...Array.from(projects.values())\n .filter((p) => osd.isPartOfRepo(p))\n .map((p) => p.path),\n ],\n {\n cwd: osd.getAbsolute(),\n }\n ));\n } catch (e: any) {\n // Not a git repository (e.g. build environment extracts from tarball)\n log.verbose('git ls-files failed (not a git repo?), treating all files as unchanged');\n return new Map() as Changes;\n }\n\n const output = stdout.trim();\n const unassignedChanges: Changes = new Map();\n\n if (output) {\n for (const line of output.split('\\n')) {\n const [tag, ...pathParts] = line.trim().split(' ');\n const path = pathParts.join(' ');\n switch (tag) {\n case 'M':\n case 'C':\n // for some reason ls-files returns deleted files as both deleted\n // and modified, so make sure not to overwrite changes already\n // tracked as \"deleted\"\n if (unassignedChanges.get(path) !== 'deleted') {\n unassignedChanges.set(path, 'modified');\n }\n break;\n\n case 'R':\n unassignedChanges.set(path, 'deleted');\n break;\n\n case '?':\n unassignedChanges.set(path, 'untracked');\n break;\n\n case 'H':\n case 'S':\n case 'K':\n default:\n log.warning(`unexpected modification status \"${tag}\" for ${path}, please report this!`);\n unassignedChanges.set(path, 'invalid');\n break;\n }\n }\n }\n\n const sortedRelevantProjects = Array.from(projects.values()).sort(projectBySpecificitySorter);\n const changesByProject = new Map();\n\n for (const project of sortedRelevantProjects) {\n if (osd.isOutsideRepo(project)) {\n changesByProject.set(project, undefined);\n continue;\n }\n\n const ownChanges: Changes = new Map();\n const prefix = osd.getRelative(project.path);\n\n for (const [path, type] of unassignedChanges) {\n if (path.startsWith(prefix)) {\n ownChanges.set(path, type);\n unassignedChanges.delete(path);\n }\n }\n\n log.verbose(`[${project.name}] found ${ownChanges.size} changes`);\n changesByProject.set(project, ownChanges);\n }\n\n if (unassignedChanges.size) {\n throw new Error(\n `unable to assign all change paths to a project: ${JSON.stringify(\n Array.from(unassignedChanges.entries())\n )}`\n );\n }\n\n return changesByProject;\n}\n\n/** Get the latest commit sha for a project */\nasync function getLatestSha(project: Project, osd: OpenSearchDashboards) {\n if (osd.isOutsideRepo(project)) {\n return;\n }\n\n try {\n const { stdout } = await execa(\n 'git',\n ['log', '-n', '1', '--pretty=format:%H', '--', project.path],\n {\n cwd: osd.getAbsolute(),\n }\n );\n\n return stdout.trim() || undefined;\n } catch {\n // Not a git repository — skip SHA-based caching\n return undefined;\n }\n}\n\n/**\n * Get the checksum for a specific project in the workspace\n */\nasync function getChecksum(\n project: Project,\n changes: Changes | undefined,\n yarnLock: YarnLock,\n osd: OpenSearchDashboards,\n log: Log\n) {\n const sha = await getLatestSha(project, osd);\n if (sha) {\n log.verbose(`[${project.name}] local sha:`, sha);\n }\n\n if (!changes || Array.from(changes.values()).includes('invalid')) {\n log.warning(`[${project.name}] unable to determine local changes, caching disabled`);\n return;\n }\n\n const changesSummary = await Promise.all(\n Array.from(changes)\n .sort((a, b) => a[0].localeCompare(b[0]))\n .map(async ([path, type]) => {\n if (type === 'deleted') {\n return `${path}:deleted`;\n }\n\n const stats = await stat(osd.getAbsolute(path));\n log.verbose(`[${project.name}] modified time ${stats.mtimeMs} for ${path}`);\n return `${path}:${stats.mtimeMs}`;\n })\n );\n\n const depMap = resolveDepsForProject({\n project,\n yarnLock,\n osd,\n log,\n includeDependentProject: false,\n productionDepsOnly: false,\n });\n if (!depMap) {\n return;\n }\n\n const deps = Array.from(depMap.values())\n .map(({ name, version }) => `${name}@${version}`)\n .sort((a, b) => a.localeCompare(b));\n\n log.verbose(`[${project.name}] resolved %d deps`, deps.length);\n\n const checksum = JSON.stringify(\n {\n sha,\n changes: changesSummary,\n deps,\n },\n null,\n 2\n );\n\n if (process.env.BOOTSTRAP_CACHE_DEBUG_CHECKSUM) {\n return checksum;\n }\n\n const hash = Crypto.createHash('sha1');\n hash.update(checksum);\n return hash.digest('hex');\n}\n\n/**\n * Calculate checksums for all projects in the workspace based on\n * - last git commit to project directory\n * - un-committed changes\n * - resolved dependencies from yarn.lock referenced by project package.json\n */\nexport async function getAllChecksums(osd: OpenSearchDashboards, log: Log, yarnLock: YarnLock) {\n const projects = osd.getAllProjects();\n const changesByProject = await getChangesForProjects(projects, osd, log);\n\n /** map of [project.name, cacheKey] */\n const cacheKeys: ChecksumMap = new Map();\n\n await Promise.all(\n Array.from(projects.values()).map(async (project) => {\n cacheKeys.set(\n project.name,\n await getChecksum(project, changesByProject.get(project), yarnLock, osd, log)\n );\n })\n );\n\n return cacheKeys;\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport globSync from 'glob';\nimport path from 'path';\nimport { promisify } from 'util';\n\nimport { CliError } from './errors';\nimport { Project } from './project';\nimport { workspacePackagePaths } from './workspaces';\n\nconst glob = promisify(globSync);\n\n/** a Map of project names to Project instances */\nexport type ProjectMap = Map;\nexport type ProjectGraph = Map;\nexport interface IProjectsOptions {\n include?: string[];\n exclude?: string[];\n}\n\nexport async function getProjects(\n rootPath: string,\n projectsPathsPatterns: string[],\n { include = [], exclude = [] }: IProjectsOptions = {}\n) {\n const projects: ProjectMap = new Map();\n\n const workspaceProjectsPaths = await workspacePackagePaths(rootPath);\n\n for (const pattern of projectsPathsPatterns) {\n const pathsToProcess = await packagesFromGlobPattern({ pattern, rootPath });\n\n for (const filePath of pathsToProcess) {\n const projectConfigPath = normalize(filePath);\n const projectDir = path.dirname(projectConfigPath);\n const project = await Project.fromPath(projectDir);\n\n if (workspaceProjectsPaths.indexOf(filePath) >= 0) {\n project.isWorkspaceProject = true;\n }\n\n const excludeProject =\n exclude.includes(project.name) || (include.length > 0 && !include.includes(project.name));\n\n if (excludeProject) {\n continue;\n }\n\n if (projects.has(project.name)) {\n throw new CliError(`There are multiple projects with the same name [${project.name}]`, {\n name: project.name,\n paths: [project.path, projects.get(project.name)!.path],\n });\n }\n\n projects.set(project.name, project);\n }\n }\n\n return projects;\n}\n\nfunction packagesFromGlobPattern({ pattern, rootPath }: { pattern: string; rootPath: string }) {\n const globOptions = {\n cwd: rootPath,\n\n // Should throw in case of unusual errors when reading the file system\n strict: true,\n\n // Always returns absolute paths for matched files\n absolute: true,\n\n // Do not match ** against multiple filenames\n // (This is only specified because we currently don't have a need for it.)\n noglobstar: true,\n };\n\n return glob(path.join(pattern, 'package.json'), globOptions);\n}\n\n// https://github.com/isaacs/node-glob/blob/master/common.js#L104\n// glob always returns \"\\\\\" as \"/\" in windows, so everyone\n// gets normalized because we can't have nice things.\nfunction normalize(dir: string) {\n return path.normalize(dir);\n}\n\nexport function buildProjectGraph(projects: ProjectMap) {\n const projectGraph: ProjectGraph = new Map();\n\n for (const project of projects.values()) {\n const projectDeps = [];\n const dependencies = project.allDependencies;\n\n for (const depName of Object.keys(dependencies)) {\n if (projects.has(depName)) {\n const dep = projects.get(depName)!;\n\n const dependentProjectIsInWorkspace =\n project.isWorkspaceProject || project.json.name === 'opensearch-dashboards';\n project.ensureValidProjectDependency(dep, dependentProjectIsInWorkspace);\n\n projectDeps.push(dep);\n }\n }\n\n projectGraph.set(project.name, projectDeps);\n }\n\n return projectGraph;\n}\n\nexport function topologicallyBatchProjects(\n projectsToBatch: ProjectMap,\n projectGraph: ProjectGraph,\n { batchByWorkspace = false } = {}\n) {\n // We're going to be chopping stuff out of this list, so copy it.\n const projectsLeftToBatch = new Set(projectsToBatch.keys());\n const batches = [];\n\n if (batchByWorkspace) {\n const workspaceRootProject = Array.from(projectsToBatch.values()).find(\n (p) => p.isWorkspaceRoot\n );\n\n if (!workspaceRootProject) {\n throw new CliError(`There was no yarn workspace root found.`);\n }\n\n // Push in the workspace root first.\n batches.push([workspaceRootProject]);\n projectsLeftToBatch.delete(workspaceRootProject.name);\n\n // In the next batch, push in all workspace projects.\n const workspaceBatch = [];\n for (const projectName of projectsLeftToBatch) {\n const project = projectsToBatch.get(projectName)!;\n\n if (project.isWorkspaceProject) {\n workspaceBatch.push(project);\n projectsLeftToBatch.delete(projectName);\n }\n }\n\n batches.push(workspaceBatch);\n }\n\n while (projectsLeftToBatch.size > 0) {\n // Get all projects that have no remaining dependencies within the repo\n // that haven't yet been picked.\n const batch = [];\n for (const projectName of projectsLeftToBatch) {\n const projectDeps = projectGraph.get(projectName)!;\n const needsDependenciesBatched = projectDeps.some((dep) => projectsLeftToBatch.has(dep.name));\n\n if (!needsDependenciesBatched) {\n batch.push(projectsToBatch.get(projectName)!);\n }\n }\n\n // If we weren't able to find a project with no remaining dependencies,\n // then we've encountered a cycle in the dependency graph.\n const hasCycles = batch.length === 0;\n if (hasCycles) {\n const cycleProjectNames = [...projectsLeftToBatch];\n const message =\n 'Encountered a cycle in the dependency graph. Projects in cycle are:\\n' +\n cycleProjectNames.join(', ');\n\n throw new CliError(message);\n }\n\n batches.push(batch);\n\n batch.forEach((project) => projectsLeftToBatch.delete(project.name));\n }\n\n return batches;\n}\n\nexport function includeTransitiveProjects(\n subsetOfProjects: Project[],\n allProjects: ProjectMap,\n { onlyProductionDependencies = false } = {}\n) {\n const projectsWithDependents: ProjectMap = new Map();\n\n // the current list of packages we are expanding using breadth-first-search\n const toProcess = [...subsetOfProjects];\n\n while (toProcess.length > 0) {\n const project = toProcess.shift()!;\n\n const dependencies = onlyProductionDependencies\n ? project.productionDependencies\n : project.allDependencies;\n\n Object.keys(dependencies).forEach((dep) => {\n if (allProjects.has(dep)) {\n toProcess.push(allProjects.get(dep)!);\n }\n });\n\n projectsWithDependents.set(project.name, project);\n }\n\n return projectsWithDependents;\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport chalk from 'chalk';\nimport path from 'path';\n\nimport { standardize } from '@osd/cross-platform';\nimport { Project } from './project';\n\nconst projectKey = Symbol('__project');\n\nexport function renderProjectsTree(rootPath: string, projects: Map) {\n const projectsTree = buildProjectsTree(rootPath, projects);\n return treeToString(createTreeStructure(projectsTree));\n}\n\nexport interface ITree {\n name?: string;\n children?: ITreeChildren;\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface ITreeChildren extends Array {}\n\ntype DirOrProjectName = string | typeof projectKey;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IProjectsTree extends Map {}\n\nexport function treeToString(tree: ITree) {\n return [tree.name].concat(childrenToStrings(tree.children, '')).join('\\n');\n}\n\nfunction childrenToStrings(tree: ITreeChildren | undefined, treePrefix: string) {\n if (tree === undefined) {\n return [];\n }\n\n let strings: string[] = [];\n tree.forEach((node, index) => {\n const isLastNode = tree.length - 1 === index;\n const nodePrefix = isLastNode ? '└── ' : '├── ';\n const childPrefix = isLastNode ? ' ' : '│ ';\n const childrenPrefix = treePrefix + childPrefix;\n\n strings.push(`${treePrefix}${nodePrefix}${node.name}`);\n strings = strings.concat(childrenToStrings(node.children, childrenPrefix));\n });\n return strings;\n}\n\nfunction createTreeStructure(tree: IProjectsTree): ITree {\n let name: string | undefined;\n const children: ITreeChildren = [];\n\n for (const [dir, project] of tree.entries()) {\n // This is a leaf node (aka a project)\n if (typeof project === 'string') {\n name = chalk.green(project);\n continue;\n }\n\n // If there's only one project and the key indicates it's a leaf node, we\n // know that we're at a package folder that contains a package.json, so we\n // \"inline it\" so we don't get unnecessary levels, i.e. we'll just see\n // `foo` instead of `foo -> foo`.\n if (project.size === 1 && project.has(projectKey)) {\n const projectName = project.get(projectKey)! as string;\n children.push({\n children: [],\n name: dirOrProjectName(dir, projectName),\n });\n continue;\n }\n\n const subtree = createTreeStructure(project);\n\n // If the name is specified, we know there's a package at the \"root\" of the\n // subtree itself.\n if (subtree.name !== undefined) {\n const projectName = subtree.name;\n\n children.push({\n children: subtree.children,\n name: dirOrProjectName(dir, projectName),\n });\n continue;\n }\n\n // Special-case whenever we have one child, so we don't get unnecessary\n // folders in the output. E.g. instead of `foo -> bar -> baz` we get\n // `foo/bar/baz` instead.\n if (subtree.children && subtree.children.length === 1) {\n const child = subtree.children[0];\n const newName = chalk.dim(standardize(path.join(dir.toString(), child.name!), true));\n\n children.push({\n children: child.children,\n name: newName,\n });\n continue;\n }\n\n children.push({\n children: subtree.children,\n name: chalk.dim(dir.toString()),\n });\n }\n\n return { name, children };\n}\n\nfunction dirOrProjectName(dir: DirOrProjectName, projectName: string) {\n return dir === projectName\n ? chalk.green(dir)\n : chalk`{dim ${dir.toString()} ({reset.green ${projectName}})}`;\n}\n\nfunction buildProjectsTree(rootPath: string, projects: Map) {\n const tree: IProjectsTree = new Map();\n\n for (const project of projects.values()) {\n if (rootPath === project.path) {\n tree.set(projectKey, project.name);\n } else {\n const relativeProjectPath = path.relative(rootPath, project.path);\n addProjectToTree(tree, relativeProjectPath.split(path.sep), project);\n }\n }\n\n return tree;\n}\n\nfunction addProjectToTree(tree: IProjectsTree, pathParts: string[], project: Project) {\n if (pathParts.length === 0) {\n tree.set(projectKey, project.name);\n } else {\n const [currentDir, ...rest] = pathParts;\n\n if (!tree.has(currentDir)) {\n tree.set(currentDir, new Map());\n }\n\n const subtree = tree.get(currentDir) as IProjectsTree;\n addProjectToTree(subtree, rest, project);\n }\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { createReadStream, createWriteStream, unlinkSync, renameSync } from 'fs';\nimport { createInterface } from 'readline';\nimport { spawn, spawnStreaming } from './child_process';\nimport { Project } from './project';\n\nconst YARN_EXEC = process.env.npm_execpath || 'yarn';\n\ninterface WorkspaceInfo {\n location: string;\n workspaceDependencies: string[];\n}\n\ninterface WorkspacesInfo {\n [s: string]: WorkspaceInfo;\n}\n\n/**\n * Install all dependencies in the given directory\n */\nexport async function installInDir(directory: string, extraArgs: string[] = [], useAdd = false) {\n const options = [useAdd ? 'add' : 'install', '--non-interactive', ...extraArgs];\n\n // We pass the mutex flag to ensure only one instance of yarn runs at any\n // given time (e.g. to avoid conflicts).\n await spawn(YARN_EXEC, options, {\n cwd: directory,\n });\n}\n\n/**\n * Patch a file by replacing a given string\n */\nexport function patchFile(\n filePath: string,\n searchValue: string,\n replacement: string\n): Promise {\n return new Promise(async (resolve, reject) => {\n const patchWriter = createWriteStream(`${filePath}.patched`, {\n flags: 'w',\n });\n const fileReader = createInterface({\n input: createReadStream(filePath),\n crlfDelay: Infinity,\n });\n for await (const line of fileReader) {\n if (line.includes(searchValue)) {\n patchWriter.write(line.replace(searchValue, replacement) + '\\n', 'utf8');\n } else {\n patchWriter.write(line + '\\n', 'utf8');\n }\n }\n\n patchWriter.on('finish', () => resolve());\n patchWriter.on('error', reject);\n\n fileReader.close();\n patchWriter.end();\n unlinkSync(filePath);\n renameSync(`${filePath}.patched`, filePath);\n });\n}\n\n/**\n * Run script in the given directory\n */\nexport async function runScriptInPackage(script: string, args: string[], pkg: Project) {\n const execOpts = {\n cwd: pkg.path,\n };\n\n await spawn(YARN_EXEC, ['run', script, ...args], execOpts);\n}\n\n/**\n * Run script in the given directory\n */\nexport function runScriptInPackageStreaming({\n script,\n args,\n pkg,\n debug,\n}: {\n script: string;\n args: string[];\n pkg: Project;\n debug?: boolean;\n}) {\n const execOpts = {\n cwd: pkg.path,\n };\n\n return spawnStreaming(YARN_EXEC, ['run', script, ...args], execOpts, {\n prefix: pkg.name,\n debug,\n });\n}\n\nexport async function yarnWorkspacesInfo(directory: string): Promise {\n const { stdout } = await spawn(YARN_EXEC, ['--json', 'workspaces', 'info'], {\n cwd: directory,\n stdio: 'pipe',\n });\n\n try {\n return JSON.parse(JSON.parse(stdout).data);\n } catch (error) {\n throw new Error(`'yarn workspaces info --json' produced unexpected output: \\n${stdout}`);\n }\n}\n","/*\n * Copyright OpenSearch Contributors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { rm } from 'fs/promises';\nimport { resolve } from 'path';\nimport { spawn } from './child_process';\nimport { Project } from './project';\nimport { log } from './log';\n\nconst BuildTargetPresets = {\n web: '@osd/babel-preset/webpack_preset',\n node: '@osd/babel-preset/node_preset',\n};\n\nexport type BuildTargetTypes = keyof typeof BuildTargetPresets;\nexport const BuildTargets = Object.keys(BuildTargetPresets) as BuildTargetTypes[];\n\n/**\n * Run script in the given directory\n */\nexport async function buildTargetedPackage({\n pkg,\n sourceMaps,\n}: {\n pkg: Project;\n sourceMaps?: boolean;\n}) {\n log.debug(`[${pkg.name}] deleting old output`);\n await rm(pkg.targetLocation, { force: true, recursive: true });\n\n log.debug(`[${pkg.name}] generating type definitions`);\n\n await spawn('tsc', [...(sourceMaps ? ['--declarationMap', 'true'] : [])], {\n cwd: pkg.path,\n });\n\n // Generate [A], [A and B], or [A, B, and C] labels\n const targetsDisplayLabel = pkg.buildTargets\n .join(', ')\n .replace(/, ([^,]+)$/, pkg.buildTargets.length > 2 ? ', and $1' : ' and $1');\n log.debug(`[${pkg.name}] transpiling for ${targetsDisplayLabel}`);\n\n await Promise.all([\n ...pkg.buildTargets.map((target) =>\n spawn(\n 'babel',\n [\n 'src',\n '--no-babelrc',\n '--presets',\n BuildTargetPresets[target],\n '--out-dir',\n resolve(pkg.targetLocation, target),\n '--extensions',\n '.ts,.js,.tsx',\n '--ignore',\n '**/*.test.ts,**/*.test.tsx',\n '--quiet',\n ...(sourceMaps ? ['--source-maps', 'inline'] : []),\n ],\n {\n env: {\n BABEL_ENV: target,\n },\n cwd: pkg.path,\n }\n )\n ),\n ]);\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n// @ts-expect-error published types are useless\nimport { stringify as stringifyLockfile, parse as parseLockFile } from '@yarnpkg/lockfile';\nimport dedent from 'dedent';\nimport chalk from 'chalk';\nimport path from 'path';\nimport { readFileSync } from 'fs';\nimport { satisfies, rcompare } from 'semver';\n\nimport { writeFile } from './fs';\nimport { OpenSearchDashboards } from '../utils/opensearch_dashboards';\nimport { YarnLock } from './yarn_lock';\nimport { log } from './log';\nimport { Project } from './project';\nimport { ITree, treeToString } from './projects_tree';\n\nenum SingleVersionResolution {\n STRICT = 'strict',\n LOOSE = 'loose',\n FORCE = 'force',\n BRUTE_FORCE = 'brute-force',\n IGNORE = 'ignore',\n}\n\n// Modes that can mutate package.json/yarn.lock while reconciling conflicting\n// single-version ranges. Exported so callers (e.g. the bootstrap fast path)\n// can decide whether running validateDependencies is side-effect-free. Keep\n// this in sync with any new SingleVersionResolution values that write to\n// disk.\nconst MUTATING_SINGLE_VERSION_MODES: ReadonlySet = new Set([\n SingleVersionResolution.LOOSE,\n SingleVersionResolution.FORCE,\n SingleVersionResolution.BRUTE_FORCE,\n]);\n\nexport function isMutatingSingleVersionMode(mode: string | undefined): boolean {\n return !!mode && MUTATING_SINGLE_VERSION_MODES.has(mode);\n}\n\nexport async function validateDependencies(\n osd: OpenSearchDashboards,\n yarnLock: YarnLock,\n /* `singleVersionResolution` controls how violations of single-version-dependencies is applied.\n * STRICT: throw an error and exit\n * LOOSE: identify and install a single version that satisfies all ranges\n * BRUTE_FORCE: identify and install the newest version\n * IGNORE (default): show all errors without exiting\n *\n * `LOOSE`:\n * Reconciles the various versions installed as a result of having multiple ranges for a dependency, by\n * choosing one that satisfies all said ranges. Even though installing the chosen version updates the\n * lock-files, no package.json changes would be needed.\n *\n * `BRUTE_FORCE`:\n * With no care for reconciliation, the newest of the various versions installed is chosen, irrespective of\n * whether it satisfies any of the ranges. Installing the chosen version updates the lock-files and a range\n * in the form of `^` is applied to all `package.json` files that declared the dependency.\n *\n * `FORCE`:\n * For each dependency, first LOOSE resolution is attempted but if that fails, BRUTE_FORCE is applied.\n *\n * `IGNORE`:\n * Behaves just like `strict` by showing errors when different ranges of a package are marked as\n * dependencies, but it does not terminate the script.\n */\n singleVersionResolution: SingleVersionResolution = SingleVersionResolution.IGNORE\n) {\n // look through all the packages in the yarn.lock file to see if\n // we have accidentally installed multiple lodash v4 versions\n const lodash4Versions = new Set();\n const lodash4Reqs = new Set();\n for (const [req, dep] of Object.entries(yarnLock)) {\n if (req.startsWith('lodash@') && dep.version.startsWith('4.')) {\n lodash4Reqs.add(req);\n lodash4Versions.add(dep.version);\n }\n }\n\n // if we find more than one lodash v4 version installed then delete\n // lodash v4 requests from the yarn.lock file and prompt the user to\n // retry bootstrap so that a single v4 version will be installed\n if (lodash4Versions.size > 1) {\n for (const req of lodash4Reqs) {\n delete yarnLock[req];\n }\n\n await writeFile(osd.getAbsolute('yarn.lock'), stringifyLockfile(yarnLock), 'utf8');\n\n log.error(dedent`\n\n Multiple version of lodash v4 were detected, so they have been removed\n from the yarn.lock file. Please rerun yarn osd bootstrap to coalese the\n lodash versions installed.\n\n If you still see this error when you re-bootstrap then you might need\n to force a new dependency to use the latest version of lodash via the\n \"resolutions\" field in package.json.\n\n If you have questions about this please reach out to the operations team.\n\n `);\n\n process.exit(1);\n }\n\n // look through all the dependencies of production packages and production\n // dependencies of those packages to determine if we're shipping any versions\n // of lodash v3 in the distributable\n const prodDependencies = osd.resolveAllProductionDependencies(yarnLock, log);\n const lodash3Versions = new Set();\n for (const dep of prodDependencies.values()) {\n if (dep.name === 'lodash' && dep.version.startsWith('3.')) {\n lodash3Versions.add(dep.version);\n }\n }\n\n // if any lodash v3 packages were found we abort and tell the user to fix things\n if (lodash3Versions.size) {\n log.error(dedent`\n\n Due to changes in the yarn.lock file and/or package.json files a version of\n lodash 3 is now included in the production dependencies. To reduce the size of\n our distributable and especially our front-end bundles we have decided to\n prevent adding any new instances of lodash 3.\n\n Please inspect the changes to yarn.lock or package.json files to identify where\n the lodash 3 version is coming from and remove it.\n\n If you have questions about this please reack out to the operations team.\n\n `);\n\n process.exit(1);\n }\n\n let hasIssues = false;\n\n // look through all the package.json files to find packages which have mismatched version ranges\n const depRanges = new Map>();\n for (const project of osd.getAllProjects().values()) {\n for (const [dep, range] of Object.entries(\n // Don't be bothered with validating dev-deps when validating single-version loosely\n singleVersionResolution === SingleVersionResolution.LOOSE\n ? project.productionDependencies\n : project.allDependencies\n )) {\n const existingDep = depRanges.get(dep);\n if (!existingDep) {\n depRanges.set(dep, [\n {\n range,\n projects: [project],\n },\n ]);\n continue;\n }\n\n const existingRange = existingDep.find((existing) => existing.range === range);\n if (!existingRange) {\n existingDep.push({\n range,\n projects: [project],\n });\n continue;\n }\n\n existingRange.projects.push(project);\n }\n }\n\n const cachedManifests = new Map();\n const violatingSingleVersionDepRanges = new Map<\n string,\n Array<{ range: string; projects: Project[] }>\n >();\n depRangesLoop: for (const [depName, ranges] of depRanges) {\n // No violation if just a single range of a dependency is used\n if (ranges.length === 1) continue;\n\n const installedVersions = new Set();\n const installedDepVersionsCache = new Map();\n const desiredRanges = new Map();\n\n rangesLoop: for (const { range, projects } of ranges) {\n for (const project of projects) {\n if (!cachedManifests.has(project.path))\n cachedManifests.set(\n project.path,\n // If there are errors reading or parsing the lockfiles, don't catch and let them fall through\n parseLockFile(readFileSync(path.join(project.path, 'yarn.lock'), 'utf8'))\n );\n const { object: deps } = cachedManifests.get(project.path);\n if (deps?.[`${depName}@${range}`]?.version) {\n installedVersions.add(deps[`${depName}@${range}`].version);\n installedDepVersionsCache.set(\n `${project.name}#${depName}`,\n deps[`${depName}@${range}`].version\n );\n } else {\n log.warning(`Failed to find the installed version for ${depName}@${range}`);\n // If we cannot read any one of the installed versions of a depName, there is no point in continuing with it\n installedVersions.clear();\n desiredRanges.clear();\n break rangesLoop;\n }\n }\n\n desiredRanges.set(range, projects);\n }\n\n // More than one range is used but couldn't get all the installed versions: call out violation\n if (installedVersions.size === 0) {\n violatingSingleVersionDepRanges.set(depName, ranges);\n continue; // go to the next depRange\n }\n\n if (\n singleVersionResolution === SingleVersionResolution.LOOSE ||\n // validating with force first acts like loose\n singleVersionResolution === SingleVersionResolution.FORCE\n ) {\n if (installedVersions.size === 1) {\n hasIssues = true;\n\n /* When validating single-version loosely, ignore multiple ranges when they result in the installation of\n * a single version.\n */\n log.info(\n `Ignored single version requirement for ${depName} as all installations are using v${\n installedVersions.values().next().value\n }.`\n );\n\n continue; // go to the next depRange\n }\n\n const sortedInstalledVersion = Array.from(installedVersions).sort(rcompare);\n const rangePatterns = Array.from(desiredRanges.keys());\n\n for (const installedVersion of sortedInstalledVersion) {\n if (rangePatterns.every((range) => satisfies(installedVersion, range))) {\n // Install the version on all projects that have this dep; keep the original range.\n for (const { range, projects } of ranges) {\n for (const project of projects) {\n // Don't bother updating anything if the desired version is already installed\n if (installedDepVersionsCache.get(`${project.name}#${depName}`) === installedVersion)\n continue;\n\n await project.installDependencyVersion(\n depName,\n installedVersion,\n depName in project.devDependencies,\n // When validating single-version loosely, when a version change is needed, the range shouldn't change\n range\n );\n }\n }\n\n hasIssues = true;\n\n const conflictingRanges = ranges\n .map(({ range, projects }) => `${range} => ${projects.map((p) => p.name).join(', ')}`)\n .join('\\n ');\n log.warning(dedent`\n\n [single_version_dependencies] Multiple version ranges for package \"${depName}\"\n were found across different package.json files. A suitable version, v${installedVersion}, was\n identified and installed.\n\n The conflicting version ranges are:\n ${conflictingRanges}\n `);\n\n // A usable version was identified so no need to check the lower versions\n continue depRangesLoop; // go to the next depRange\n }\n }\n\n /* Here because a suitable version was not found. When validating single-version loosely and here, give up.\n * However, don't give up when validating with force and act like brute-force!\n */\n if (singleVersionResolution === SingleVersionResolution.LOOSE) {\n violatingSingleVersionDepRanges.set(depName, ranges);\n continue; // go to the next depRange\n }\n }\n\n if (\n singleVersionResolution === SingleVersionResolution.BRUTE_FORCE ||\n // validating with force here means we failed to get results when acting loosely\n singleVersionResolution === SingleVersionResolution.FORCE\n ) {\n const sortedInstalledVersion = Array.from(installedVersions).sort(rcompare);\n\n hasIssues = true;\n\n const suitableVersion = sortedInstalledVersion[0];\n const suitableRange = `^${suitableVersion}`;\n\n // Install the version on all projects that have this dep; use the suitable range.\n for (const { projects } of ranges) {\n for (const project of projects) {\n await project.installDependencyVersion(\n depName,\n suitableVersion,\n depName in project.devDependencies,\n suitableRange\n );\n }\n }\n\n const conflictingRanges = ranges\n .map(({ range, projects }) => `${range} => ${projects.map((p) => p.name).join(', ')}`)\n .join('\\n ');\n log.warning(dedent`\n\n [single_version_dependencies] Multiple version ranges for package \"${depName}\"\n were found across different package.json files. A version, v${suitableVersion}, was identified as the most recent\n already installed replacement. All package.json files have been updated to indicate a dependency on \\`${depName}@${suitableRange}\\`.\n\n The conflicting version ranges are:\n ${conflictingRanges}\n `);\n\n continue; // go to the next depRange\n }\n\n // Here because validation was not loose, forced, or brute-forced; just call out the vilation.\n violatingSingleVersionDepRanges.set(depName, ranges);\n }\n\n if (violatingSingleVersionDepRanges.size > 0) {\n const duplicateRanges = Array.from(violatingSingleVersionDepRanges.entries())\n .reduce(\n (acc: string[], [dep, ranges]) => [\n ...acc,\n dep,\n ...ranges.map(\n ({ range, projects }) => ` ${range} => ${projects.map((p) => p.name).join(', ')}`\n ),\n ],\n []\n )\n .join('\\n ');\n\n log.error(dedent`\n\n [single_version_dependencies] Multiple version ranges for the same dependency\n were found declared across different package.json files. Please consolidate\n those to match across all package.json files. Different versions for the\n same dependency is not supported.\n\n If you have questions about this please reach out to the operations team.\n\n The conflicting dependencies are:\n\n ${duplicateRanges}\n `);\n\n if (singleVersionResolution !== SingleVersionResolution.IGNORE) {\n process.exit(1);\n }\n }\n\n // look for packages that have the `opensearchDashboards.devOnly` flag in their package.json\n // and make sure they aren't included in the production dependencies of OpenSearch Dashboards\n const devOnlyProjectsInProduction = getDevOnlyProductionDepsTree(osd, 'opensearch-dashboards');\n if (devOnlyProjectsInProduction) {\n log.error(dedent`\n Some of the packages in the production dependency chain for OpenSearch Dashboards are\n flagged with \"opensearchDashboards.devOnly\" in their package.json. Please check changes made to\n packages and their dependencies to ensure they don't end up in production.\n\n The devOnly dependencies that are being dependend on in production are:\n\n ${treeToString(devOnlyProjectsInProduction).split('\\n').join('\\n ')}\n `);\n\n process.exit(1);\n }\n\n log.success(\n hasIssues ? 'yarn.lock analysis completed' : 'yarn.lock analysis completed without any issues'\n );\n}\n\nfunction getDevOnlyProductionDepsTree(osd: OpenSearchDashboards, projectName: string) {\n const project = osd.getProject(projectName);\n const childProjectNames = [\n ...Object.keys(project.productionDependencies).filter((name) => osd.hasProject(name)),\n ];\n\n const children = childProjectNames\n .map((n) => getDevOnlyProductionDepsTree(osd, n))\n .filter((t): t is ITree => !!t);\n\n if (!children.length && !project.isFlaggedAsDevOnly()) {\n return;\n }\n\n const tree: ITree = {\n name: project.isFlaggedAsDevOnly() ? chalk.red.bold(projectName) : projectName,\n children,\n };\n\n return tree;\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as Rx from 'rxjs';\nimport { catchError, delay, finalize, first, map, mapTo, mergeMap, timeout } from 'rxjs/operators';\n\n/**\n * Number of milliseconds we wait before we fall back to the default watch handler.\n */\nconst defaultHandlerDelay = 3000;\n\n/**\n * If default watch handler is used, then it's the number of milliseconds we wait for\n * any build output before we consider watch task ready.\n */\nconst defaultHandlerReadinessTimeout = 2000;\n\n/**\n * Describes configurable watch options.\n */\ninterface IWatchOptions {\n /**\n * Number of milliseconds to wait before we fall back to default watch handler.\n */\n handlerDelay?: number;\n\n /**\n * Number of milliseconds that default watch handler waits for any build output before\n * it considers initial build completed. If build process outputs anything in a given\n * time span, the timeout is restarted.\n */\n handlerReadinessTimeout?: number;\n}\n\nfunction getWatchHandlers(\n buildOutput$: Rx.Observable,\n {\n handlerDelay = defaultHandlerDelay,\n handlerReadinessTimeout = defaultHandlerReadinessTimeout,\n }: IWatchOptions\n) {\n const typescriptHandler = buildOutput$.pipe(\n first((data) => data.includes('$ tsc')),\n map(() =>\n buildOutput$.pipe(\n first((data) => data.includes('Compilation complete.')),\n mapTo('tsc')\n )\n )\n );\n\n const webpackHandler = buildOutput$.pipe(\n first((data) => data.includes('$ webpack')),\n map(() =>\n buildOutput$.pipe(\n first((data) => data.includes('Chunk Names')),\n mapTo('webpack')\n )\n )\n );\n\n const defaultHandler = Rx.of(undefined).pipe(\n delay(handlerReadinessTimeout),\n map(() =>\n buildOutput$.pipe(\n timeout(handlerDelay),\n catchError(() => Rx.of('timeout'))\n )\n )\n );\n\n return [typescriptHandler, webpackHandler, defaultHandler];\n}\n\nexport function waitUntilWatchIsReady(stream: NodeJS.EventEmitter, opts: IWatchOptions = {}) {\n const buildOutput$ = new Rx.Subject();\n const onDataListener = (data: Buffer) => buildOutput$.next(data.toString('utf8'));\n const onEndListener = () => buildOutput$.complete();\n const onErrorListener = (e: Error) => buildOutput$.error(e);\n\n stream.once('end', onEndListener);\n stream.once('error', onErrorListener);\n stream.on('data', onDataListener);\n\n return Rx.race(getWatchHandlers(buildOutput$, opts))\n .pipe(\n mergeMap((whenReady) => whenReady),\n finalize(() => {\n stream.removeListener('data', onDataListener);\n stream.removeListener('end', onEndListener);\n stream.removeListener('error', onErrorListener);\n\n buildOutput$.complete();\n })\n )\n .toPromise();\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport globSync from 'glob';\nimport path from 'path';\nimport { promisify } from 'util';\n\nimport { getProjectPaths } from '../config';\nimport { copyDirectory, isSymlink, unlink } from './fs';\nimport { readPackageJson } from './package_json';\nimport { getProjects } from './projects';\n\nconst glob = promisify(globSync);\n\nexport async function workspacePackagePaths(rootPath: string): Promise {\n const rootPkgJson = await readPackageJson(rootPath);\n\n if (!rootPkgJson.workspaces) {\n return [];\n }\n\n const workspacesPathsPatterns: string[] = rootPkgJson.workspaces.packages;\n let workspaceProjectsPaths: string[] = [];\n\n for (const pattern of workspacesPathsPatterns) {\n workspaceProjectsPaths = workspaceProjectsPaths.concat(\n await packagesFromGlobPattern({ pattern, rootPath })\n );\n }\n\n // Filter out exclude glob patterns\n for (const pattern of workspacesPathsPatterns) {\n if (pattern.startsWith('!')) {\n const pathToRemove = path.join(rootPath, pattern.slice(1), 'package.json');\n workspaceProjectsPaths = workspaceProjectsPaths.filter((p) => p !== pathToRemove);\n }\n }\n\n return workspaceProjectsPaths;\n}\n\nexport async function copyWorkspacePackages(rootPath: string): Promise {\n const projectPaths = getProjectPaths({ rootPath });\n const projects = await getProjects(rootPath, projectPaths);\n\n for (const project of projects.values()) {\n const dest = path.resolve(rootPath, 'node_modules', project.name);\n\n if ((await isSymlink(dest)) === false) {\n continue;\n }\n\n // Remove the symlink\n await unlink(dest);\n\n // Copy in the package\n await copyDirectory(project.path, dest);\n }\n}\n\nfunction packagesFromGlobPattern({ pattern, rootPath }: { pattern: string; rootPath: string }) {\n const globOptions = {\n cwd: rootPath,\n\n // Should throw in case of unusual errors when reading the file system\n strict: true,\n\n // Always returns absolute paths for matched files\n absolute: true,\n\n // Do not match ** against multiple filenames\n // (This is only specified because we currently don't have a need for it.)\n noglobstar: true,\n };\n\n return glob(path.join(pattern, 'package.json'), globOptions);\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n// @ts-expect-error published types are worthless\nimport { parse as parseLockfile } from '@yarnpkg/lockfile';\nimport { standardize } from '@osd/cross-platform';\nimport { resolve, isAbsolute } from 'path';\n\nimport { readFile } from '../utils/fs';\nimport { OpenSearchDashboards } from '../utils/opensearch_dashboards';\nimport { Project } from '../utils/project';\nimport { Log } from '../utils/log';\n\nexport interface YarnLock {\n /** a simple map of name@versionrange tags to metadata about a package */\n [key: string]: {\n /** resolved version installed for this pacakge */\n version: string;\n /** resolved url for this pacakge */\n resolved: string;\n /** yarn calculated integrity value for this package */\n integrity: string;\n dependencies?: {\n /** name => versionRange dependencies listed in package's manifest */\n [key: string]: string;\n };\n optionalDependencies?: {\n /** name => versionRange dependencies listed in package's manifest */\n [key: string]: string;\n };\n };\n}\n\nexport async function readYarnLock(osd: OpenSearchDashboards): Promise {\n try {\n const contents = await readFile(osd.getAbsolute('yarn.lock'), 'utf8');\n const yarnLock = parseLockfile(contents);\n\n if (yarnLock.type === 'success') {\n return fixFileLinks(yarnLock.object, osd.getAbsolute());\n }\n\n throw new Error('unable to read yarn.lock file, please run `yarn osd bootstrap`');\n } catch (error) {\n if (error.code !== 'ENOENT') {\n throw error;\n }\n }\n\n return {};\n}\n\n/**\n * Converts relative `file:` paths to absolute paths\n * Yarn parsing method converts all file URIs to relative paths and this\n * breaks the single-version requirement as dependencies to the same path\n * would differ in their URIs across OSD and packages.\n */\nfunction fixFileLinks(yarnLock: YarnLock, projectRoot: string): YarnLock {\n const fileLinkDelimiter = '@file:';\n\n const linkedKeys = Object.keys(yarnLock).filter((key) => key.includes(fileLinkDelimiter));\n\n if (linkedKeys.length === 0) return yarnLock;\n\n const updatedYarnLock = { ...yarnLock };\n for (const key of linkedKeys) {\n const [keyName, keyPath, ...rest] = key.split(fileLinkDelimiter);\n if (!isAbsolute(keyPath)) {\n const updatedKeyName = [keyName, standardize(resolve(projectRoot, keyPath)), ...rest].join(\n fileLinkDelimiter\n );\n updatedYarnLock[updatedKeyName] = updatedYarnLock[key];\n }\n }\n\n return updatedYarnLock;\n}\n\n/**\n * Get a list of the absolute dependencies of this project, as resolved\n * in the yarn.lock file, does not include other projects in the workspace\n * or their dependencies\n */\nexport function resolveDepsForProject({\n project: rootProject,\n yarnLock,\n osd,\n log,\n productionDepsOnly,\n includeDependentProject,\n}: {\n project: Project;\n yarnLock: YarnLock;\n osd: OpenSearchDashboards;\n log: Log;\n productionDepsOnly: boolean;\n includeDependentProject: boolean;\n}) {\n /** map of [name@range, { name, version }] */\n const resolved = new Map();\n\n const seenProjects = new Set();\n const projectQueue: Project[] = [rootProject];\n const depQueue: Array<[string, string]> = [];\n\n while (projectQueue.length) {\n const project = projectQueue.shift()!;\n if (seenProjects.has(project)) {\n continue;\n }\n seenProjects.add(project);\n\n const projectDeps = Object.entries(\n productionDepsOnly ? project.productionDependencies : project.allDependencies\n );\n for (const [name, versionRange] of projectDeps) {\n depQueue.push([name, versionRange]);\n }\n\n while (depQueue.length) {\n const [name, versionRange] = depQueue.shift()!;\n const req = `${name}@${versionRange}`;\n\n if (resolved.has(req)) {\n continue;\n }\n\n if (includeDependentProject && osd.hasProject(name)) {\n projectQueue.push(osd.getProject(name)!);\n }\n\n if (!osd.hasProject(name)) {\n const pkg = yarnLock[req];\n if (!pkg) {\n log.warning(\n 'yarn.lock file is out of date, please run `yarn osd bootstrap` to re-enable caching'\n );\n return;\n }\n\n resolved.set(req, { name, version: pkg.version });\n\n const allDepsEntries = [\n ...Object.entries(pkg.dependencies || {}),\n ...Object.entries(pkg.optionalDependencies || {}),\n ];\n\n for (const [childName, childVersionRange] of allDepsEntries) {\n depQueue.push([childName, childVersionRange]);\n }\n }\n }\n }\n\n return resolved;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar picocolors = require('picocolors');\nvar jsTokens = require('js-tokens');\nvar helperValidatorIdentifier = require('@babel/helper-validator-identifier');\n\nfunction isColorSupported() {\n return (typeof process === \"object\" && (process.env.FORCE_COLOR === \"0\" || process.env.FORCE_COLOR === \"false\") ? false : picocolors.isColorSupported\n );\n}\nconst compose = (f, g) => v => f(g(v));\nfunction buildDefs(colors) {\n return {\n keyword: colors.cyan,\n capitalized: colors.yellow,\n jsxIdentifier: colors.yellow,\n punctuator: colors.yellow,\n number: colors.magenta,\n string: colors.green,\n regex: colors.magenta,\n comment: colors.gray,\n invalid: compose(compose(colors.white, colors.bgRed), colors.bold),\n gutter: colors.gray,\n marker: compose(colors.red, colors.bold),\n message: compose(colors.red, colors.bold),\n reset: colors.reset\n };\n}\nconst defsOn = buildDefs(picocolors.createColors(true));\nconst defsOff = buildDefs(picocolors.createColors(false));\nfunction getDefs(enabled) {\n return enabled ? defsOn : defsOff;\n}\n\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\nconst NEWLINE$1 = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nconst BRACKET = /^[()[\\]{}]$/;\nlet tokenize;\nconst JSX_TAG = /^[a-z][\\w-]*$/i;\nconst getTokenType = function (token, offset, text) {\n if (token.type === \"name\") {\n const tokenValue = token.value;\n if (helperValidatorIdentifier.isKeyword(tokenValue) || helperValidatorIdentifier.isStrictReservedWord(tokenValue, true) || sometimesKeywords.has(tokenValue)) {\n return \"keyword\";\n }\n if (JSX_TAG.test(tokenValue) && (text[offset - 1] === \"<\" || text.slice(offset - 2, offset) === \" defs[type](str)).join(\"\\n\");\n } else {\n highlighted += value;\n }\n }\n return highlighted;\n}\n\nlet deprecationWarningShown = false;\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nfunction getMarkerLines(loc, source, opts, startLineBaseZero) {\n const startLoc = Object.assign({\n column: 0,\n line: -1\n }, loc.start);\n const endLoc = Object.assign({}, startLoc, loc.end);\n const {\n linesAbove = 2,\n linesBelow = 3\n } = opts || {};\n const startLine = startLoc.line - startLineBaseZero;\n const startColumn = startLoc.column;\n const endLine = endLoc.line - startLineBaseZero;\n const endColumn = endLoc.column;\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n if (startLine === -1) {\n start = 0;\n }\n if (endLine === -1) {\n end = source.length;\n }\n const lineDiff = endLine - startLine;\n const markerLines = {};\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n return {\n start,\n end,\n markerLines\n };\n}\nfunction codeFrameColumns(rawLines, loc, opts = {}) {\n const shouldHighlight = opts.forceColor || isColorSupported() && opts.highlightCode;\n const startLineBaseZero = (opts.startLine || 1) - 1;\n const defs = getDefs(shouldHighlight);\n const lines = rawLines.split(NEWLINE);\n const {\n start,\n end,\n markerLines\n } = getMarkerLines(loc, lines, opts, startLineBaseZero);\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n const numberMaxWidth = String(end + startLineBaseZero).length;\n const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines;\n let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number + startLineBaseZero}`.slice(-numberMaxWidth);\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n if (hasMarker) {\n let markerLine = \"\";\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n markerLine = [\"\\n \", defs.gutter(gutter.replace(/\\d/g, \" \")), \" \", markerSpacing, defs.marker(\"^\").repeat(numberOfMarkers)].join(\"\");\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + defs.message(opts.message);\n }\n }\n return [defs.marker(\">\"), defs.gutter(gutter), line.length > 0 ? ` ${line}` : \"\", markerLine].join(\"\");\n } else {\n return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n }\n }).join(\"\\n\");\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n if (shouldHighlight) {\n return defs.reset(frame);\n } else {\n return frame;\n }\n}\nfunction index (rawLines, lineNumber, colNumber, opts = {}) {\n if (!deprecationWarningShown) {\n deprecationWarningShown = true;\n const message = \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n if (process.emitWarning) {\n process.emitWarning(message, \"DeprecationWarning\");\n } else {\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\n }\n colNumber = Math.max(colNumber, 0);\n const location = {\n start: {\n column: colNumber,\n line: lineNumber\n }\n };\n return codeFrameColumns(rawLines, location, opts);\n}\n\nexports.codeFrameColumns = codeFrameColumns;\nexports.default = index;\nexports.highlight = highlight;\n//# sourceMappingURL=index.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isIdentifierChar = isIdentifierChar;\nexports.isIdentifierName = isIdentifierName;\nexports.isIdentifierStart = isIdentifierStart;\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dc\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\nlet nonASCIIidentifierChars = \"\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1add\\u1ae0-\\u1aeb\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\nconst astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];\nconst astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\nfunction isInAstralSet(code, set) {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\nfunction isIdentifierStart(code) {\n if (code < 65) return code === 36;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\nfunction isIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\nfunction isIdentifierName(name) {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n\n//# sourceMappingURL=identifier.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"isIdentifierChar\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierChar;\n }\n});\nObject.defineProperty(exports, \"isIdentifierName\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierName;\n }\n});\nObject.defineProperty(exports, \"isIdentifierStart\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierStart;\n }\n});\nObject.defineProperty(exports, \"isKeyword\", {\n enumerable: true,\n get: function () {\n return _keyword.isKeyword;\n }\n});\nObject.defineProperty(exports, \"isReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindOnlyReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindOnlyReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictReservedWord;\n }\n});\nvar _identifier = require(\"./identifier.js\");\nvar _keyword = require(\"./keyword.js\");\n\n//# sourceMappingURL=index.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isKeyword = isKeyword;\nexports.isReservedWord = isReservedWord;\nexports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;\nexports.isStrictBindReservedWord = isStrictBindReservedWord;\nexports.isStrictReservedWord = isStrictReservedWord;\nconst reservedWords = {\n keyword: [\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\"],\n strict: [\"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\"],\n strictBind: [\"eval\", \"arguments\"]\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\nfunction isReservedWord(word, inModule) {\n return inModule && word === \"await\" || word === \"enum\";\n}\nfunction isStrictReservedWord(word, inModule) {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\nfunction isStrictBindOnlyReservedWord(word) {\n return reservedWordsStrictBindSet.has(word);\n}\nfunction isStrictBindReservedWord(word, inModule) {\n return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);\n}\nfunction isKeyword(word) {\n return keywords.has(word);\n}\n\n//# sourceMappingURL=keyword.js.map\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","function _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nexport { _array_with_holes as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nexport { _array_without_holes as _ };\n","function _assert_this_initialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n\n return self;\n}\nexport { _assert_this_initialized as _ };\n","function _async_iterator(iterable) {\n var method, async, sync, retry = 2;\n for (\"undefined\" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;) {\n if (async && null != (method = iterable[async])) return method.call(iterable);\n if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable));\n async = \"@@asyncIterator\", sync = \"@@iterator\";\n }\n throw new TypeError(\"Object is not async iterable\");\n}\nfunction AsyncFromSyncIterator(s) {\n function AsyncFromSyncIteratorContinuation(r) {\n if (Object(r) !== r) return Promise.reject(new TypeError(r + \" is not an object.\"));\n\n var done = r.done;\n\n return Promise.resolve(r.value).then(function(value) {\n return { value: value, done: done };\n });\n }\n\n return AsyncFromSyncIterator = function(s) {\n this.s = s, this.n = s.next;\n },\n AsyncFromSyncIterator.prototype = {\n s: null,\n n: null,\n\n next: function() {\n return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));\n },\n return: function(value) {\n var ret = this.s.return;\n\n return void 0 === ret ? Promise.resolve({ value: value, done: !0 }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments));\n },\n throw: function(value) {\n var thr = this.s.return;\n\n return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments));\n }\n },\n new AsyncFromSyncIterator(s);\n}\nexport { _async_iterator as _ };\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) resolve(value);\n else Promise.resolve(value).then(_next, _throw);\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\nexport { _async_to_generator as _ };\n","import { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _possible_constructor_return } from \"./_possible_constructor_return.js\";\n\nfunction _call_super(_this, derived, args) {\n // Super\n derived = _get_prototype_of(derived);\n return _possible_constructor_return(\n _this,\n _is_native_reflect_construct()\n // NOTE: This doesn't work if this.__proto__.constructor has been modified.\n ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor)\n : derived.apply(_this, args)\n );\n}\n\nexport { _call_super as _ };\n","function _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _class_call_check as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });\n } else obj[key] = value;\n\n return obj;\n}\nexport { _define_property as _ };\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _instanceof(left, right) {\n \"@swc/helpers - instanceof\";\n\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","function _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) {\n return Array.from(iter);\n }\n}\nexport { _iterable_to_array as _ };\n","function _iterable_to_array_limit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\nexport { _iterable_to_array_limit as _ };\n","function _non_iterable_rest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _non_iterable_rest as _ };\n","function _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _non_iterable_spread as _ };\n","import { _ as _define_property } from \"./_define_property.js\";\n\nfunction _object_spread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(\n Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n })\n );\n }\n\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n\n return target;\n}\nexport { _object_spread as _ };\n","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n\n if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\nexport { _object_spread_props as _ };\n","import { _ as _assert_this_initialized } from \"./_assert_this_initialized.js\";\nimport { _ as _type_of } from \"./_type_of.js\";\n\nfunction _possible_constructor_return(self, call) {\n if (call && (_type_of(call) === \"object\" || typeof call === \"function\")) return call;\n\n return _assert_this_initialized(self);\n}\nexport { _possible_constructor_return as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _array_with_holes } from \"./_array_with_holes.js\";\nimport { _ as _iterable_to_array_limit } from \"./_iterable_to_array_limit.js\";\nimport { _ as _non_iterable_rest } from \"./_non_iterable_rest.js\";\nimport { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nexport { _sliced_to_array as _ };\n","function _tagged_template_literal(strings, raw) {\n if (!raw) raw = strings.slice(0);\n\n return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } }));\n}\nexport { _tagged_template_literal as _ };\n","import { _ as _array_with_holes } from \"./_array_with_holes.js\";\nimport { _ as _iterable_to_array } from \"./_iterable_to_array.js\";\nimport { _ as _non_iterable_rest } from \"./_non_iterable_rest.js\";\nimport { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _to_array(arr) {\n return _array_with_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_rest();\n}\nexport { _to_array as _ };\n","import { _ as _array_without_holes } from \"./_array_without_holes.js\";\nimport { _ as _iterable_to_array } from \"./_iterable_to_array.js\";\nimport { _ as _non_iterable_spread } from \"./_non_iterable_spread.js\";\nimport { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nexport { _to_consumable_array as _ };\n","function _ts_generator(thisArg, body) {\n var f, y, t, _ = { label: 0, sent: function () { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype), d = Object.defineProperty;\n return d(g, \"next\", { value: verb(0) }), d(g, \"throw\", { value: verb(1) }), d(g, \"return\", { value: verb(2) }), typeof Symbol === \"function\" && d(g, Symbol.iterator, { value: function () { return this; } }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport { _ts_generator as _ };\n","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar 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\nexport function __extends(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\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(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}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar 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\nexport function __extends(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\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(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}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","const EMPTYARR = []\nconst SHORTSPLIT = /$|[!-@[-`{-~][\\s\\S]*/g\nconst isArray = Array.isArray\n\nconst parseValue = function (any) {\n if (any === \"\") return \"\"\n if (any === \"false\") return false\n const maybe = +any\n return maybe * 0 === 0 ? maybe : any\n}\n\nconst parseAlias = function (aliases) {\n let out = {},\n alias,\n prev,\n any\n\n for (let key in aliases) {\n any = aliases[key]\n alias = out[key] = isArray(any) ? any : [any]\n\n for (let i = 0; i < alias.length; i++) {\n prev = out[alias[i]] = [key]\n\n for (let k = 0; k < alias.length; k++) {\n if (i !== k) prev.push(alias[k])\n }\n }\n }\n\n return out\n}\n\nconst parseDefault = function (aliases, defaults) {\n let out = {},\n alias,\n value\n\n for (let key in defaults) {\n alias = aliases[key]\n value = defaults[key]\n\n out[key] = value\n\n if (alias === undefined) {\n aliases[key] = EMPTYARR\n } else {\n for (let i = 0; i < alias.length; i++) {\n out[alias[i]] = value\n }\n }\n }\n\n return out\n}\n\nconst parseOptions = function (aliases, options, value) {\n let out = {},\n key,\n alias\n\n if (options !== undefined) {\n for (let i = 0; i < options.length; i++) {\n key = options[i]\n alias = aliases[key]\n\n out[key] = value\n\n if (alias === undefined) {\n aliases[key] = EMPTYARR\n } else {\n for (let k = 0, end = alias.length; k < end; k++) {\n out[alias[k]] = value\n }\n }\n }\n }\n\n return out\n}\n\nconst write = function (out, key, value, aliases, unknown) {\n let prev,\n alias = aliases[key],\n len = alias === undefined ? -1 : alias.length\n\n if (len >= 0 || unknown === undefined || unknown(key)) {\n prev = out[key]\n\n if (prev === undefined) {\n out[key] = value\n } else {\n if (isArray(prev)) {\n prev.push(value)\n } else {\n out[key] = [prev, value]\n }\n }\n\n for (let i = 0; i < len; i++) {\n out[alias[i]] = out[key]\n }\n }\n}\n\nexport default function (argv, opts) {\n let unknown = (opts = opts || {}).unknown,\n aliases = parseAlias(opts.alias),\n strings = parseOptions(aliases, opts.string, \"\"),\n values = parseDefault(aliases, opts.default),\n bools = parseOptions(aliases, opts.boolean, false),\n stopEarly = opts.stopEarly,\n _ = [],\n out = { _ },\n key,\n arg,\n end,\n match,\n value\n\n for (let i = 0, len = argv.length; i < len; i++) {\n arg = argv[i]\n\n if (arg[0] !== \"-\" || arg === \"-\") {\n if (stopEarly) {\n while (i < len) {\n _.push(argv[i++])\n }\n } else {\n _.push(arg)\n }\n } else if (arg === \"--\") {\n while (++i < len) {\n _.push(argv[i])\n }\n } else if (arg[1] === \"-\") {\n end = arg.indexOf(\"=\", 2)\n if (arg[2] === \"n\" && arg[3] === \"o\" && arg[4] === \"-\") {\n key = arg.slice(5, end >= 0 ? end : undefined)\n value = false\n } else if (end >= 0) {\n key = arg.slice(2, end)\n value =\n bools[key] !== undefined ||\n (strings[key] === undefined\n ? parseValue(arg.slice(end + 1))\n : arg.slice(end + 1))\n } else {\n key = arg.slice(2)\n value =\n bools[key] !== undefined ||\n (len === i + 1 || argv[i + 1][0] === \"-\"\n ? strings[key] === undefined\n ? true\n : \"\"\n : strings[key] === undefined\n ? parseValue(argv[++i])\n : argv[++i])\n }\n write(out, key, value, aliases, unknown)\n } else {\n SHORTSPLIT.lastIndex = 2\n match = SHORTSPLIT.exec(arg)\n end = match.index\n value = match[0]\n\n for (let k = 1; k < end; k++) {\n write(\n out,\n (key = arg[k]),\n k + 1 < end\n ? strings[key] === undefined ||\n arg.substring(k + 1, (k = end)) + value\n : value === \"\"\n ? len === i + 1 || argv[i + 1][0] === \"-\"\n ? strings[key] === undefined || \"\"\n : bools[key] !== undefined ||\n (strings[key] === undefined ? parseValue(argv[++i]) : argv[++i])\n : bools[key] !== undefined ||\n (strings[key] === undefined ? parseValue(value) : value),\n aliases,\n unknown\n )\n }\n }\n }\n\n for (let key in values) if (out[key] === undefined) out[key] = values[key]\n for (let key in bools) if (out[key] === undefined) out[key] = false\n for (let key in strings) if (out[key] === undefined) out[key] = \"\"\n\n return out\n}\n","// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n module.paths = [];\n if (!module.children) module.children = [];\n return module;\n};","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nexport { run } from './cli';\nexport { buildProductionProjects } from './production';\nexport { getProjects } from './utils/projects';\nexport { Project } from './utils/project';\nexport { copyWorkspacePackages } from './utils/workspaces';\nexport { getProjectPaths } from './config';\n"],"names":["Object","exports","tslib_1","require","child_process_1","path_1","fs_1","process","standardize","path","usePosix","escapedBackslashes","returnUNC","_process","normal","getFullPathSync","_this","fullName","ex","getShortPathSync","shortPath","shortNamesSupportedSync","testFileName","file","foundShortName","resolveToFullPathSync","resolveToShortPathSync","realPathSync","realShortPathSync","load_json_file_1","path_2","readOpenSearchDashboardsPkgJson","dir","json","error","findOpenSearchDashboardsPackageJson","startDir","__dirname","_ref","rootDir","cursor","opensearchDashboardsPkgJson","parent","Error","_findOpenSearchDashboardsPackageJson","opensearchDashboardsDir","getMatchingRoot","rootPaths","rootPathsArray","Array","root","undefined","getRepoRoot","relativeToRepoRoot","repoRoot","tooling_log_1","get","tooling_log_text_writer_1","log_levels_1","tooling_log_collecting_writer_1","LEVELS","pickLevelFromFlags","flags","options","parseLogLevel","name","i","msg","level","levelI","Rx","ToolingLog","writerConfig","indent","delta","Math","verbose","_key","args","debug","info","success","warning","_error","write","getWriters","setWriters","writers","getWritten$","sendToWriters","type","written","_iteratorError","writer","ToolingLogCollectingWriter","util_1","chalk_1","_chalk_1_default","magentaBright","yellow","red","blue","green","dim","PREFIX_INDENT","MSG_PREFIXES","has","obj","key","shouldWriteType","Boolean","stringifyError","ToolingLogTextWriter","config","prefix","writeTo","txt","line","lineIndent","dedent","getopts","resolve","commands","runCommand","log","help","command","run","argv","rootPath","commandName","extraArgs","commandOptions","Fs","linkProjectExecutables","parallelizeBatches","topologicallyBatchProjects","getAllChecksums","BootstrapCacheFile","readYarnLock","validateDependencies","isMutatingSingleVersionMode","computeFingerprint","fingerprintsEqual","readFingerprint","writeFingerprint","BootstrapCommand","projects","projectGraph","param","osd","_options_singleversion","fastPathEligible","previous","current","integrityOk","yarnLock","checksums","staleProject","project","cacheFile","_options_singleversion1","singleVersion","batchedProjectsByWorkspace","batchedProjects","_iteratorError1","batch","_iteratorError2","project1","yarnLock1","checksums1","caches","cachedProjectCount","_iteratorError3","project2","valid","Map","cache","del","ora","join","relative","isDirectory","deleteFingerprint","CleanCommand","_projectGraph","toDelete","extraPatterns","originalCwd","pattern","cwd","promise","String","RunCommand","WatchCommand","CliError","scriptName","scriptArgs","waitUntilWatchIsReady","watchScriptName","opensearchDashboardsProjectName","projectsToWatch","projectNames","shouldWatchOpenSearchDashboardsProject","pkg","completionHint","getProjectPaths","ossOnly","skipOpenSearchDashboardsPlugins","projectPaths","copy","isFile","readPackageJson","writePackageJson","buildProjectGraph","getProjects","includeTransitiveProjects","buildProductionProjects","opensearchDashboardsRoot","buildRoot","getProductionProjects","deleteTarget","buildProject","copyToBuild","projectsSubset","productionProjects","targetDir","relativeProjectPath","buildProjectPath","packageJson","renderProjectsTree","OpenSearchDashboards","metaOutput","toArray","_instanceof","value","Path","projectAndDepCacheKeys","a","b","p","cacheKey","k","isValid","_delete","Crypto","FINGERPRINT_VERSION","FINGERPRINT_FILENAME","STRING_FIELDS","getYarnVersion","ua","m","sha1","buf","normalizeRelativePath","rel","readOrEmpty","e","Buffer","fingerprintPath","sortedProjects","manifestParts","lockParts","lockBuf","raw","parsed","JSON","_type_of","fp","finalPath","tmpPath","Writable","chalk","execa","logTransformer","colorWheel","getColor","color","spawn","opts","streamToLog","_","cb","spawnStreaming","spawned","prefixedStdout","prefixedStderr","message","meta","cmdShimCb","lstat","symlink","mkdir","unlink","ncp","dirname","promisify","readFile","writeFile","chmod","cmdShim","mkdirp","copyDirectory","statTest","block","isSymlink","stats","createSymlink","src","dest","posixType","relativeSource","forceCreate","sep","projectsByName","projectName","projectDeps","binsDir","projectDep","executables","srcPath","projectRelativePath","LogLevel","Log","setLogLevel","wouldLogLevel","multimatch","isPathInside","resolveDepsForProject","allWorkspaceProjects","opensearchDashboardsProject","TypeError","getAbsolute","subPath","_Path","getRelative","absolute","getAllProjects","hasProject","getProject","getProjectAndDeps","getFilteredProjects","allProjects","filteredProjects","pkgJsonPaths","filteredPkgJsonGlobs","g","matchingPkgJsonPaths","pathMatches","notExcluded","isIncluded","isPartOfRepo","isOutsideRepo","resolveAllProductionDependencies","opensearchDashboardsDeps","loadFrom","readPkg","writePkg","isLinkDependency","depVersion","batches","fn","parallelize","items","concurrency","Promise","reject","activePromises","values","scheduleItem","item","existsSync","unlinkSync","inspect","installInDir","patchFile","runScriptInPackage","runScriptInPackageStreaming","yarnWorkspacesInfo","buildTargetedPackage","BuildTargets","Project","projectPath","target","ensureValidProjectDependency","dependentProjectIsInWorkspace","versionInPackageJson","expectedVersionInPackageJson","relativePathToProject","normalizePath","problemMsg","getBuildConfig","getIntermediateBuildDirectory","getCleanConfig","isFlaggedAsDevOnly","hasScript","hasBuildTargets","getExecutables","binsConfig","binName","runScript","runScriptStreaming","buildForTargets","hasDependencies","installDependencies","installDependencyVersion","depName","version","dev","range","rangeToUse","removeExtraneousNodeModules","workspacesInfo","unusedWorkspaces","workspace","Set","w","_this_json","dependencies","devDependencies","nodeModulesPath","isDependency","isDevDependency","fromPath","pkgJson","stat","projectBySpecificitySorter","getChangesForProjects","stdout","output","unassignedChanges","_line_trim_split","tag","pathParts","sortedRelevantProjects","changesByProject","ownChanges","path1","getLatestSha","getChecksum","changes","sha","changesSummary","depMap","deps","checksum","hash","cacheKeys","globSync","workspacePackagePaths","glob","projectsPathsPatterns","include","exclude","workspaceProjectsPaths","pathsToProcess","filePath","projectConfigPath","projectDir","excludeProject","packagesFromGlobPattern","normalize","globOptions","dep","projectsToBatch","batchByWorkspace","projectsLeftToBatch","workspaceRootProject","workspaceBatch","projectName1","needsDependenciesBatched","hasCycles","cycleProjectNames","subsetOfProjects","onlyProductionDependencies","projectsWithDependents","toProcess","projectKey","Symbol","projectsTree","buildProjectsTree","treeToString","createTreeStructure","tree","childrenToStrings","treePrefix","strings","node","index","isLastNode","nodePrefix","childPrefix","childrenPrefix","children","dirOrProjectName","subtree","child","newName","addProjectToTree","_pathParts","currentDir","rest","createReadStream","createWriteStream","renameSync","createInterface","YARN_EXEC","directory","useAdd","searchValue","replacement","patchWriter","fileReader","Infinity","script","execOpts","rm","BuildTargetPresets","sourceMaps","targetsDisplayLabel","stringify","stringifyLockfile","parse","parseLockFile","readFileSync","satisfies","rcompare","SingleVersionResolution","MUTATING_SINGLE_VERSION_MODES","mode","singleVersionResolution","lodash4Versions","lodash4Reqs","req","req1","prodDependencies","lodash3Versions","dep1","hasIssues","depRanges","_iteratorError4","cachedManifests","violatingSingleVersionDepRanges","_iteratorError5","ranges","installedVersions","installedDepVersionsCache","desiredRanges","_iteratorError6","_iteratorError7","_deps_","_cachedManifests_get","sortedInstalledVersion","rangePatterns","_iteratorError8","sortedInstalledVersion1","suitableVersion","suitableRange","_iteratorError9","projects1","_iteratorError10","conflictingRanges","duplicateRanges","devOnlyProjectsInProduction","existingDep","existingRange","existing","rangesLoop","installedVersion","acc","getDevOnlyProductionDepsTree","childProjectNames","n","t","catchError","delay","finalize","first","map","mapTo","mergeMap","timeout","defaultHandlerDelay","defaultHandlerReadinessTimeout","getWatchHandlers","buildOutput$","handlerDelay","handlerReadinessTimeout","typescriptHandler","data","webpackHandler","defaultHandler","stream","onDataListener","onEndListener","onErrorListener","whenReady","rootPkgJson","workspacesPathsPatterns","pathToRemove","copyWorkspacePackages","parseLockfile","isAbsolute","contents","fixFileLinks","projectRoot","fileLinkDelimiter","linkedKeys","updatedYarnLock","_key_split","keyName","keyPath","updatedKeyName","rootProject","productionDepsOnly","includeDependentProject","resolved","seenProjects","projectQueue","depQueue","versionRange","_depQueue_shift","name1","versionRange1","allDepsEntries","childName","childVersionRange"],"mappings":";;;;AAAa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,+BAA+B,GAAG,2BAA2B;AAC7D,WAAW,mBAAO,CAAC,GAAI;AACvB,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2BAA2B;AAC1C;AACA,yCAAyC,EAAE,2BAA2B;AACtE;AACA,+BAA+B;;;;;;AClBlB;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,0CAA0C;AAC1C;AACA;AACA,oGAAoG,sBAAsB;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;;;;;;AChB7B;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,gBAAgB,GAAG,mBAAmB,GAAG,eAAe;AACxD,cAAc,mBAAO,CAAC,GAAmB;AACzC,aAAa,mBAAO,CAAC,GAAkB;AACvC,mBAAmB,mBAAO,CAAC,GAAY;AACvC,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,mBAAmB;AACnB,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;;;;;;ACzBa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe,GAAG,4BAA4B,GAAG,YAAY;AAC7D,eAAe,mBAAO,CAAC,GAAkB;AACzC,YAAY,mBAAO,CAAC,GAAc;AAClC,oBAAoB,mBAAO,CAAC,GAAc;AAC1C,cAAc,mBAAO,CAAC,GAAU;AAChC,eAAe,mBAAO,CAAC,GAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;;;;;ACvGa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;;;;;;ACZX;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe,GAAG,4BAA4B,GAAG,YAAY;AAC7D,eAAe,mBAAO,CAAC,GAAkB;AACzC,oBAAoB,mBAAO,CAAC,GAAc;AAC1C,cAAc,mBAAO,CAAC,GAAU;AAChC,eAAe,mBAAO,CAAC,GAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,yDAAyD,qBAAqB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe;;;;;;ACrDF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,aAAa,mBAAO,CAAC,CAAM;AAC3B,eAAe,mBAAO,CAAC,GAAkB;AACzC,WAAW,mBAAO,CAAC,GAAe;AAClC;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;ACvBF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;;;;;AClBhB;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,UAAU;AACV,WAAW,mBAAO,CAAC,GAAM;AACzB,UAAU;;;;;;ACJG;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,+BAA+B,GAAG,2BAA2B;AAC7D,WAAW,mBAAO,CAAC,GAAI;AACvB,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2BAA2B;AAC1C;AACA,yCAAyC,EAAE,2BAA2B;AACtE;AACA,+BAA+B;;;;;;AChBlB;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,gBAAgB,GAAG,YAAY,GAAG,gBAAgB;AAClD,cAAc,mBAAO,CAAC,GAAmB;AACzC,aAAa,mBAAO,CAAC,GAAkB;AACvC,mBAAmB,mBAAO,CAAC,GAAY;AACvC,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,gBAAgB;AAChB,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;;;;;;ACzBa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;;;;;ACnCa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;;;;;ACtBC;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,WAAW,mBAAO,CAAC,GAAe;AAClC;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;ACfF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,gBAAgB,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,YAAY;AACvE,gBAAgB,mBAAO,CAAC,GAAmB;AAC3C,iBAAiB,mBAAO,CAAC,GAAoB;AAC7C,eAAe,mBAAO,CAAC,GAAkB;AACzC,mBAAmB,mBAAO,CAAC,GAAY;AACvC,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;;;;;;ACjCa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,gBAAgB,mBAAO,CAAC,GAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;;;;;;AC7Ba;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,GAAQ;AACjC,gBAAgB,mBAAO,CAAC,GAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAe;;;;;;ACjCF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe,mBAAO,CAAC,GAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;ACbF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,GAAQ;AACjC,kBAAkB,mBAAO,CAAC,GAAqB;AAC/C,cAAc,mBAAO,CAAC,GAAO;AAC7B,eAAe,mBAAO,CAAC,GAAU;AACjC,iBAAiB,mBAAO,CAAC,GAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;AChGF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,wBAAwB,GAAG,mCAAmC,GAAG,uBAAuB,GAAG,oBAAoB;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;;;;;;AC9BX;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe,mBAAO,CAAC,GAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;ACVF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,kBAAkB,mBAAO,CAAC,GAAqB;AAC/C,eAAe,mBAAO,CAAC,GAAU;AACjC,iBAAiB,mBAAO,CAAC,GAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;AC1DF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,aAAa,mBAAO,CAAC,CAAM;AAC3B,kBAAkB,mBAAO,CAAC,GAAqB;AAC/C;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;ACzBf,cAAc;AACd,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,mBAAmB,8BAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,8BAAmB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA;AACA,UAAU,8BAAmB,uBAAuB;AACpD;AACA;AACA,UAAU,8BAAmB;AAC7B,eAAe,8BAAmB;AAClC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA,oCAAoC,4BAA4B;AAChE,0CAA0C;AAC1C,WAAW,8BAAmB;AAC9B;AACA;AACA;AACA;AACA,UAAU,8BAAmB,kCAAkC;AAC/D;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA;AACA,iBAAiB,8BAAmB,CAAC,8BAAmB;AACxD,UAAU;AACV;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,CAAM;;AAE/B,OAAO;AACP;AACA,iCAAiC,oCAAmB;;AAEpD;;;AAGA;;AAEA,eAAe,oCAAmB;;AAElC;;AAEA,uCAAuC,uCAAuC;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA,OAAO;AACP;AACA;;AAEA,iBAAiB,mBAAO,CAAC,GAAM;;AAE/B,OAAO;AACP;AACA;;AAEA,iBAAiB,mBAAO,CAAC,GAAI;;AAE7B,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA,iCAAiC,oCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;AACA,qDAAqD,oCAAmB;AACxE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,wDAAwD,MAAM;AAC9D,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kKAAkK;AAClK;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,iLAAiL;AACjL;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+JAA+J;AAC/J;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA,eAAe;AACf;AACA,aAAa;AACb;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,UAAU;AACV,sDAAsD,IAAI;AAC1D;AACA,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA,8IAA8I;AAC9I;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8JAA8J;AAC9J;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mKAAmK;AACnK;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0KAA0K;AAC1K;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,yLAAyL;AACzL;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uKAAuK;AACvK;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,UAAU;AACV,sDAAsD,IAAI;AAC1D;AACA,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA,sJAAsJ;AACtJ;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8JAA8J;AAC9J;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mKAAmK;AACnK;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,8JAA8J;AAC9J;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,uBAAuB,IAAI,IAAI,YAAY;AAC3C;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,kKAAkK;AAClK;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;;AAGA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;;;AAGA;AACA;AACA,mGAAmG,aAAa,GAAG,WAAW,GAAG,cAAc;AAC/I;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,8JAA8J;AAC9J;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,oEAAoE,IAAI;AACxE,QAAQ;AACR;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA,8JAA8J;AAC9J;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;;AAEA;AACA,sCAAsC,oCAAmB;AACzD;;AAEA;;AAEA;AACA,wCAAwC,oCAAmB;AAC3D;;AAEA;;AAEA;AACA,sCAAsC,oCAAmB;AACzD;;AAEA;;AAEA;AACA,wCAAwC,oCAAmB;AAC3D;;AAEA;;AAEA;AACA,iDAAiD,oCAAmB;AACpE;;AAEA;;AAEA;AACA,4CAA4C,oCAAmB;AAC/D;;AAEA;;AAEA;AACA,qBAAqB,oCAAmB;AACxC;;AAEA;;AAEA;AACA,uCAAuC,oCAAmB;AAC1D;;AAEA;;AAEA;AACA,yBAAyB,oCAAmB;AAC5C;;AAEA,wCAAwC,6BAA6B,cAAc,OAAO,iBAAiB,mBAAmB,uBAAuB,gFAAgF,sBAAsB;;AAE3P,uCAAuC,uCAAuC;;AAE9E;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,oCAAmB;AAClG;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,kBAAkB,oCAAmB;AACrC,iBAAiB,oCAAmB;;AAEpC;;AAEA;AACA,qBAAqB,WAAW;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA,iCAAiC,sCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;AACD;AACA,WAAW,sCAAmB;AAC9B,aAAa,sCAAmB;AAChC,iBAAiB,sCAAmB;;AAEpC,eAAe,sCAAmB;;AAElC;AACA;AACA;;AAEA,wBAAwB,sCAAmB;;AAE3C;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,6DAA6D;;AAE7D;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,yEAAyE,iBAAiB;AAC1F;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA,6DAA6D,0BAA0B;AACvF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,2CAA2C,0BAA0B;AACrE;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,GAAQ;;AAEjC,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0CAA0C;;;AAG1C,OAAO;AACP;AACA,iCAAiC,sCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sCAAmB;;AAEtC;AACA;AACA;AACA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA,OAAO;AACP;AACA,iCAAiC,sCAAmB;;AAEpD,YAAY,sCAAmB;AAC/B,UAAU,sCAAmB;AAC7B,aAAa,sCAAmB;AAChC;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA,iCAAiC,sCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;AACA,qDAAqD,sCAAmB;AACxE;;AAEA;;AAEA;AACA,kBAAkB,sCAAmB;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA,sBAAsB,sCAAmB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA;;AAEA;AACA,iBAAiB,sCAAmB;AACpC;;AAEA;;AAEA;AACA,6BAA6B,sCAAmB;AAChD;;AAEA;;AAEA;AACA,0CAA0C,sCAAmB;AAC7D;;AAEA;;AAEA;AACA,sBAAsB,sCAAmB;AACzC;;AAEA;;AAEA;AACA,uCAAuC,sCAAmB;AAC1D;;AAEA,wCAAwC,6BAA6B,cAAc,OAAO,iBAAiB,mBAAmB,uBAAuB,gFAAgF,sBAAsB;;AAE3P,uCAAuC,uCAAuC;;AAE9E,kBAAkB,sCAAmB;;AAErC,aAAa,sCAAmB;AAChC,aAAa,sCAAmB;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kEAAkE,iBAAiB,GAAG,YAAY;AAClG;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,iCAAiC,IAAI;AACrD;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;;AAEA,4BAA4B,wFAAwF;AACpH,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2JAA2J;AAC3J;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,GAAQ;;AAEjC,OAAO;AACP;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,CAAC;AACD;AACA,yBAAyB;AACzB;AACA,4IAA4I;AAC5I;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,GAAQ;;AAEjC,OAAO;AACP;AACA;;AAEA,8BAA8B;AAC9B,wCAAwC;;;AAGxC,OAAO;AACP;AACA;AACA;AACA;AACA,iCAAiC,sCAAmB;;AAEpD,eAAe,sCAAmB;AAClC;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,eAAe,KAAK;AACpB;;AAEA,WAAW;AACX;;AAEA,OAAO;AACP;AACA;AACA,iCAAiC,sCAAmB;;AAEpD,SAAS,sCAAmB;AAC5B,iBAAiB,sCAAmB;AACpC,iBAAiB,sCAAmB;AACpC;AACA,EAAE;AACF;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,sCAAmB;;AAEpD;AACA,aAAa,sCAAmB;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,sCAAmB;;AAEpD;AACA,kBAAkB,sCAAmB;AACrC,iCAAiC,SAAS,mBAAmB,aAAa;AAC1E,CAAC;;;AAGD,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA,iBAAiB,mBAAO,CAAC,GAAI;;AAE7B,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;;AAEP;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,iBAAiB;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA,OAAO;AACP;AACA,iCAAiC,sCAAmB;;AAEpD,aAAa,sCAAmB;AAChC,WAAW,sCAAmB;AAC9B,UAAU,sCAAmB;AAC7B,WAAW,sCAAmB;AAC9B,UAAU,sCAAmB;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA,kFAAkF;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,UAAU;AACV;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB;;;AAGA,OAAO;AACP;AACA,iCAAiC,sCAAmB;;AAEpD;AACA,aAAa,sCAAmB;AAChC;AACA;AACA,EAAE;AACF,mBAAmB,sCAAmB;AACtC;;;AAGA,OAAO;AACP;AACA;AACA;AACA,iCAAiC,sCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;AACA,4CAA4C,sCAAmB;AAC/D;;AAEA,uCAAuC,uCAAuC;;AAE9E,aAAa,sCAAmB;;AAEhC,4BAA4B,sCAAmB;;AAE/C;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,sCAAmB;;AAEpD;AACA,gBAAgB,sCAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,sCAAmB;;AAEpD,eAAe,sCAAmB;AAClC,qBAAqB,sCAAmB;AACxC,kBAAkB,sCAAmB;AACrC;;AAEA,YAAY,sCAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY;AAChB;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,GAAQ;;AAEjC,OAAO;AACP;AACA,iCAAiC,sCAAmB;;AAEpD;;;AAGA,eAAe,sCAAmB;;AAElC,eAAe,sCAAmB;AAClC,kBAAkB,sCAAmB;;AAErC;;AAEA;AACA;AACA,mDAAmD,MAAM;AACzD;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,gEAAgE;AAChE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA,cAAc,eAAe,GAAG,YAAY,EAAE,QAAQ;AACtD;AACA;;AAEA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB,EAAE,MAAM;AACjD;AACA;AACA,wBAAwB,aAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,uBAAuB;AAC/B;AACA;AACA,OAAO,UAAU;AACjB;AACA,KAAK,EAAE,UAAU;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,uBAAuB;AAC/B;AACA;AACA;AACA;AACA,SAAS,KAAK,GAAG,OAAO,EAAE,UAAU;AACpC;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA,+BAA+B;AAC/B,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA,IAAI;AACJ,8DAA8D,IAAI,eAAe,UAAU,aAAa,YAAY;AACpH;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,kEAAkE,UAAU,WAAW,IAAI,YAAY,OAAO,KAAK,aAAa;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,kCAAkC,SAAS;AAC3C;AACA,+BAA+B;AAC/B,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,UAAU,uBAAuB;AACjC;AACA;AACA,gBAAgB,cAAc,GAAG,mBAAmB,EAAE,UAAU;AAChE,KAAK;AACL;AACA;AACA;AACA,kEAAkE,IAAI,eAAe,UAAU,aAAa,WAAW;AACvH;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,+BAA+B,KAAK,uCAAuC,UAAU,WAAW,SAAS,UAAU,OAAO,KAAK,YAAY;AAC3I;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,uBAAuB;AAC/B;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa,KAAK,GAAG,OAAO,EAAE,UAAU;AACxC;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,iCAAiC,sCAAmB;;AAEpD;AACA;;AAEA,aAAa;AACb;AACA,SAAS,sCAAmB;AAC5B,EAAE;;AAEF;AACA,aAAa,sCAAmB;;AAEhC;AACA,SAAS,sCAAsC;AAC/C,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AACnC,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,IAAI;;AAE7C;AACA;AACA;;AAEA;AACA,gCAAgC;;AAEhC,cAAc;AACd;AACA;AACA;AACA;AACA,GAAG,IAAI;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,MAAM;AACN,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK,IAAI;AACT,KAAK,GAAG;AACR,KAAK,KAAK;AACV,KAAK,IAAI,IAAI,EAAE;AACf,KAAK,IAAI,EAAE,IAAI;AACf;AACA;AACA,KAAK,IAAI,OAAO,IAAI;AACpB,KAAK,EAAE,OAAO,EAAE;AAChB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB,IAAI;AAC1B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;;AAEA,MAAM;AACN,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,gCAAgC,EAAE,EAAE,KAAK;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAyC,QAAQ;AACjD;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;;AAEA,cAAc,gBAAgB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,4CAA4C;;AAElD;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR,QAAQ;AACR;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,aAAa,wCAAmB;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,GAAQ;;AAEjC,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,eAAe,wCAAmB;AAClC,eAAe,wCAAmB;AAClC;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;;AAEA;AACA,gBAAgB,wCAAmB;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,UAAU,wCAAmB;AAC7B,UAAU,wCAAmB;AAC7B,UAAU,wCAAmB;;AAE7B;AACA,qEAAqE,gCAAgC;AACrG;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,aAAa,wCAAmB;AAChC,UAAU,wCAAmB;AAC7B;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA,cAAc,wCAAmB;AACjC,cAAc,wCAAmB;AACjC;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAAS,wCAAmB;AAC5B,SAAS,wCAAmB;AAC5B,gBAAgB,wCAAmB;AACnC;AACA,eAAe,wCAAmB;AAClC,SAAS,wCAAmB;AAC5B,WAAW,wCAAmB;AAC9B,aAAa,wCAAmB;AAChC,iBAAiB,wCAAmB;AACpC,eAAe,wCAAmB;AAClC,aAAa,wCAAmB;AAChC;AACA;AACA;AACA;AACA,eAAe,wCAAmB;AAClC,WAAW,wCAAmB;AAC9B;AACA;;AAEA,WAAW,wCAAmB;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,kBAAkB,mBAAmB;AACrC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB,yBAAyB;AAC3C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC,EAAE;AAC3C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,GAAK;;AAE9B,OAAO;AACP;AACA;AACA,iCAAiC,wCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;;AAED;AACA;AACA,sEAAsE;AACtE;;AAEA;;AAEA;AACA,wCAAwC,wCAAmB;AAC3D;;AAEA;;AAEA;AACA,6CAA6C,wCAAmB;AAChE;;AAEA;;AAEA;AACA,4CAA4C,wCAAmB;AAC/D;;AAEA;;AAEA;AACA,sBAAsB,wCAAmB;AACzC;;AAEA;;AAEA;AACA,mBAAmB,wCAAmB;AACtC;;AAEA;;AAEA;AACA,uCAAuC,wCAAmB;AAC1D;;AAEA,uCAAuC,uCAAuC;;AAE9E;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;;AAEA,uBAAuB;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,MAAM;AACN;AACA,sBAAsB,0BAA0B;AAChD;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA,sBAAsB,kBAAkB;AACxC;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,uGAAuG,SAAS,0EAA0E,mDAAmD;AAC7O;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,6BAA6B,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,KAAK,aAAa;AACzF;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,mJAAmJ;AACnJ;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA,2JAA2J;AAC3J;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR,0CAA0C,mDAAmD;AAC7F;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uCAAuC;AACpD,IAAI;AACJ;AACA,eAAe;AACf,MAAM;AACN;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;AACA;AACA,iCAAiC,wCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;;AAED;;AAEA;AACA,uCAAuC,wCAAmB;AAC1D;;AAEA,uCAAuC,uCAAuC;;AAE9E,cAAc,wCAAmB;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,4BAA4B,kFAAkF,6BAA6B;AAC9J;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,0BAA0B;;AAE7C;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,4BAA4B;AAC7C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;AAGA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,wCAAmB;;AAEpD;AACA,UAAU,wCAAmB;AAC7B,UAAU,wCAAmB;AAC7B;AACA,4BAA4B,mBAAmB;;AAE/C;AACA;AACA;AACA;AACA,IAAI,YAAY;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,eAAe,wCAAmB;AAClC;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;;AAEA,cAAc,wCAAmB;AACjC,cAAc,wCAAmB;AACjC,eAAe,wCAAmB;AAClC,WAAW,wCAAmB;AAC9B,gBAAgB,wCAAmB;AACnC,kBAAkB,wCAAmB;AACrC,qBAAqB,wCAAmB;AACxC,qBAAqB,wCAAmB;AACxC,eAAe,wCAAmB;AAClC,+CAA+C;AAC/C;AACA;AACA;;AAEA,+BAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,8CAA8C;AAC9C,MAAM,4BAA4B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA,aAAa;AACb,IAAI;AACJ,aAAa;AACb;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,eAAe,wCAAmB;AAClC,eAAe,wCAAmB;AAClC,2BAA2B,wCAAmB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,WAAW,wCAAmB;AAC9B,aAAa,wCAAmB;AAChC;AACA,kDAAkD;;AAElD;AACA,qEAAqE;AACrE,CAAC;AACD;AACA,QAAQ,wCAAmB;AAC3B;AACA,CAAC;;;AAGD,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA,eAAe,wCAAmB;AAClC,gBAAgB,wCAAmB;AACnC,cAAc,wCAAmB;AACjC;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,UAAU,wCAAmB;AAC7B,aAAa,wCAAmB;AAChC,WAAW,wCAAmB;AAC9B,UAAU,wCAAmB;AAC7B,aAAa,wCAAmB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,wCAAmB;AACzB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA,gBAAgB,wCAAmB;AACnC;AACA;AACA,4DAA4D;AAC5D;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;;AAGpD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wCAAmB;;AAEtC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc,SAAS;AACvB,6BAA6B;AAC7B;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA,cAAc,8BAA8B;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;AACA,iCAAiC,wCAAmB;;AAEpD;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,wCAAmB;AAC5B;AACA;;AAEA;AACA;AACA,UAAU,wCAAmB;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,WAAW,wCAAmB;AAC9B,gBAAgB,wCAAmB;AACnC,iBAAiB,wCAAmB;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAyC,WAAW;AACpD;;AAEA;AACA,sCAAsC,WAAW;AACjD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAY,gCAAgC;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,WAAW,wCAAmB;AAC9B,SAAS,wCAAmB;AAC5B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,wCAAmB;;AAEpD;AACA,UAAU,wCAAmB;AAC7B;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA,YAAY,wCAAmB;AAC/B,kBAAkB,wCAAmB;;AAErC;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA,cAAc,wCAAmB;AACjC;AACA;AACA;;;AAGA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,sMAAsM,q9BAAq9B,oBAAoB,iuCAAiuC,gBAAgB,kBAAkB,YAAY,iBAAiB,oCAAoC,iDAAiD,YAAY,mgCAAmgC,SAAS,uSAAuS,WAAW,cAAc;;AAE94H,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,iCAAiC,wCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;AACA,iBAAiB,wCAAmB;AACpC;;AAEA;;AAEA;AACA,sBAAsB,wCAAmB;AACzC;;AAEA;;AAEA;AACA,oBAAoB,wCAAmB;AACvC;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,oBAAoB,SAAS,EAAE,eAAe;AAC9C,MAAM;AACN,oBAAoB,QAAQ,KAAK,kBAAkB,uBAAuB,EAAE;AAC5E,MAAM;AACN;AACA;;AAEA;AACA;;AAEA,kCAAkC,OAAO;AACzC;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,mDAAmD;AACpF;AACA,0BAA0B,sCAAsC;AAChE,yBAAyB,aAAa;AACtC;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,wCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;AACA,qDAAqD,wCAAmB;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;;;AAGA;;AAEA;AACA,sCAAsC,wCAAmB;AACzD;;AAEA;;AAEA;AACA,oBAAoB,wCAAmB;AACvC;;AAEA,uCAAuC,uCAAuC;;AAE9E;;AAEA,4CAA4C;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;;AAEA,6EAA6E,wCAAmB;;AAEhG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC,IAAI;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;AACA,iCAAiC,wCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,aAAa,wCAAmB;AAChC,iBAAiB,wCAAmB;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;AACA,iCAAiC,wCAAmB;;AAEpD,mBAAmB,WAAW,wCAAmB;;AAEjD,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,gBAAgB,wCAAmB;AACnC,eAAe,wCAAmB;;AAElC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA,mCAAmC;AACnC,oCAAoC;AACpC;AACA;AACA;;;AAGA;AACA;AACA,wCAAwC,GAAG,IAAI;AAC/C;AACA;AACA;;AAEA;AACA,qBAAqB,KAAK;;AAE1B;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B,uCAAuC,GAAG;AAC1C,YAAY,GAAG,yBAAyB;AACxC;AACA;AACA,8BAA8B;AAC9B,cAAc,GAAG;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,KAAK;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,EAAE;AACV,2BAA2B;AAC3B,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,YAAY,KAAK,QAAQ,EAAE,IAAI,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,oCAAoC,0BAA0B;AAC9D;;AAEA,kBAAkB,cAAc;AAChC,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,eAAe;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,wCAAmB;AACnB,wCAAmB;AACnB,wCAAmB;AACnB,wCAAmB;AACnB,wCAAmB;AACnB,wCAAmB;AACnB,iBAAiB,wCAAmB;;;AAGpC,OAAO;AACP;AACA;;AAEA,+BAA+B;;;AAG/B,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA;AACA,gBAAgB,wCAAmB;AACnC,eAAe,wCAAmB;AAClC,sBAAsB,wCAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,gBAAgB;AACjC;AACA,MAAM;AACN;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,UAAU,wCAAmB;AAC7B,WAAW,wCAAmB;AAC9B,kBAAkB,wCAAmB;AACrC,eAAe,wCAAmB;AAClC,eAAe,wCAAmB;AAClC,gBAAgB,wCAAmB;AACnC;AACA;AACA;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA;AACA;AACA,oEAAoE,gBAAgB;AACpF;AACA;AACA,IAAI,4CAA4C,+BAA+B;AAC/E;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,kBAAkB,wCAAmB,SAAS,wCAAmB;AACjE,+BAA+B,wCAAmB,oBAAoB,mBAAmB,aAAa;AACtG,CAAC;;;AAGD,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA,gBAAgB,wCAAmB;AACnC,eAAe,wCAAmB;AAClC;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA,eAAe,wCAAmB;AAClC;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;;AAEA,aAAa,wCAAmB;AAChC,iBAAiB,wCAAmB;AACpC,qBAAqB,wCAAmB;AACxC;;AAEA;AACA,wCAAmB,wBAAwB,wCAAmB,gCAAgC,cAAc;;AAE5G;AACA,sDAAsD,2BAA2B;AACjF;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,eAAe,wCAAmB;AAClC;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA,kCAAkC,UAAU;AAC5C,EAAE,YAAY;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,SAAS;AACvC,kCAAkC;AAClC;AACA,IAAI,YAAY;AAChB;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA,WAAW;AACX;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,aAAa,wCAAmB;AAChC,gBAAgB,wCAAmB;AACnC;AACA;AACA;AACA,aAAa,wCAAmB;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,wCAAwC,qBAAqB,GAAG;AAChE;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA,eAAe,wCAAmB;AAClC,UAAU,wCAAmB;AAC7B,kBAAkB,wCAAmB;AACrC,eAAe,wCAAmB;AAClC,0BAA0B;AAC1B;;AAEA;AACA;AACA;AACA,eAAe,wCAAmB;AAClC;AACA;AACA;AACA;AACA;AACA,EAAE,wCAAmB;AACrB,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,SAAS,wCAAmB;AAC5B,eAAe,wCAAmB;AAClC,cAAc,wCAAmB;;AAEjC,iBAAiB,wCAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA,UAAU,wCAAmB;AAC7B,eAAe,wCAAmB;AAClC,eAAe,wCAAmB;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,UAAU,wCAAmB;AAC7B,gBAAgB,wCAAmB;AACnC,mBAAmB,wCAAmB;AACtC,eAAe,wCAAmB;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,WAAW,wCAAmB;AAC9B;AACA;AACA;AACA;AACA,IAAI;AACJ;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,iBAAiB,wCAAmB;;;AAGpC,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;;AAEA,aAAa,wCAAmB;AAChC,WAAW,wCAAmB;AAC9B,SAAS,wCAAmB;AAC5B,kBAAkB,wCAAmB;AACrC,cAAc,wCAAmB;;AAEjC;AACA;AACA;AACA;AACA,uBAAuB;AACvB,GAAG;AACH;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,gBAAgB,wCAAmB;AACnC,cAAc,wCAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,gBAAgB,wCAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA,eAAe,wCAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,aAAa,wCAAmB;AAChC;;AAEA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,cAAc,wCAAmB;AACjC,eAAe,wCAAmB;AAClC,gBAAgB,wCAAmB;AACnC,iBAAiB,wCAAmB;AACpC;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;;AAEA,uBAAuB,wCAAmB;AAC1C,WAAW,wCAAmB;AAC9B,gBAAgB,wCAAmB;AACnC,gBAAgB,wCAAmB;;AAEnC;AACA;AACA;AACA;AACA,iBAAiB,wCAAmB;AACpC,iCAAiC;AACjC,iCAAiC;AACjC,iCAAiC;AACjC;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;;;AAIA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;;AAEA,cAAc,wCAAmB;AACjC,aAAa,wCAAmB;AAChC,UAAU,wCAAmB;AAC7B,cAAc,wCAAmB;AACjC,cAAc,wCAAmB;AACjC,eAAe,wCAAmB;AAClC,gBAAgB,wCAAmB;AACnC,iBAAiB,wCAAmB;AACpC,YAAY,wCAAmB;AAC/B,yBAAyB,wCAAmB;AAC5C,WAAW,wCAAmB;AAC9B,gBAAgB,wCAAmB;AACnC,iCAAiC,wCAAmB;AACpD,cAAc,wCAAmB;AACjC,gBAAgB,wCAAmB;AACnC,qBAAqB,wCAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA+C,EAAE,wCAAmB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY;AAChB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ,UAAU;AACV,QAAQ;AACR;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,oBAAoB,iCAAiC;AACrD,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA;AACA,MAAM;AACN;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,gBAAgB,sCAAsC;AACtD;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA,IAAI;AACJ,mBAAmB,wBAAwB,MAAM;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B;AACA,uBAAuB,wCAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2DAA2D,mBAAmB;AAC9E,wCAAmB;AACnB,wCAAmB;AACnB,UAAU,wCAAmB;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,gDAAgD,wCAAmB;AACnE;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;;AAEA,UAAU,wCAAmB;;AAE7B;AACA,wCAAmB;AACnB,8BAA8B;AAC9B,8BAA8B;AAC9B;AACA,CAAC;AACD;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,WAAW;AACX,CAAC;;;AAGD,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA;;AAEA,cAAc,wCAAmB;AACjC,WAAW,wCAAmB;AAC9B,aAAa,wCAAmB;AAChC,yBAAyB,wCAAmB;AAC5C,qBAAqB,wCAAmB;;AAExC,4CAA4C;AAC5C;AACA;AACA;AACA;AACA,+DAA+D,WAAW;AAC1E,MAAM;AACN;AACA,+DAA+D,UAAU;AACzE,MAAM;AACN;AACA,GAAG;;;AAGH,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;;AAEA;AACA,cAAc,wCAAmB;AACjC,2BAA2B,wCAAmB;AAC9C,cAAc,wCAAmB;;AAEjC,gCAAgC;AAChC;AACA;AACA;AACA;AACA,GAAG;;;AAGH,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD,wCAAmB;AACnB,aAAa,wCAAmB;AAChC,WAAW,wCAAmB;AAC9B,gBAAgB,wCAAmB;AACnC,oBAAoB,wCAAmB;;AAEvC;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,wCAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,wCAAmB;AACtC,EAAE;AACF,mBAAmB,wCAAmB;AACtC;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA;AACA;;AAEA,UAAU,wCAAmB;AAC7B,WAAW,wCAAmB;;AAE9B;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,wCAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,sBAAsB,wCAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,8DAA8D;AAC9D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,4CAA4C,wBAAwB;;AAEpE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC,IAAI;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD,EAAE;AACnD,sCAAsC;;AAEtC;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,iBAAiB;AACnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;AACA;AACA;AACA,iCAAiC,wCAAmB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,wCAAmB;AACpC;AACA,SAAS,wCAAmB;;AAE5B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA,0CAA0C,EAAE;AAC5C,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,wCAAmB;;AAEpD;AACA;;AAEA,SAAS,wCAAmB;AAC5B,SAAS,wCAAmB;AAC5B,gBAAgB,wCAAmB;AACnC;AACA,WAAW,wCAAmB;AAC9B,WAAW,wCAAmB;AAC9B,WAAW,wCAAmB;AAC9B,aAAa,wCAAmB;AAChC,iBAAiB,wCAAmB;AACpC,aAAa,wCAAmB;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;AACA,iCAAiC,wCAAmB;;AAEpD,aAAa,wCAAmB;AAChC;AACA,WAAW,wCAAmB;;AAE9B;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,SAAS;AAC/B;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA,kBAAkB,YAAY;AAC9B;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;AACA;AACA,iCAAiC,wCAAmB;;AAEpD;;AAEA;AACA;AACA;;AAEA,wBAAwB,wCAAmB;;;AAG3C,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;AACA;AACA;AACA,iCAAiC,wCAAmB;;AAEpD;AACA;;AAEA,aAAa,wCAAmB;AAChC,WAAW,wCAAmB;AAC9B,SAAS,wCAAmB;AAC5B,WAAW,wCAAmB;AAC9B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,oBAAoB;AACtC;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI;AACJ;;;AAGA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,wCAAmB;;AAEpD;;AAEA,cAAc,wCAAmB;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oEAAoE,GAAG;AACvE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP,Y;;;;;AChiUa;AACb,qBAAqB,mBAAO,CAAC,GAAe;AAC5C,mBAAmB,mBAAO,CAAC,GAAa;;AAExC;;AAEA;AACA;AACA;AACA,6DAA6D,cAAc;AAC3E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;;AAEA,0CAA0C,cAAc;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;;;;;AC9CD;;AAEb,cAAc,KAAK,mBAAmB,IAAI;AAC1C;AACA,4BAA4B,gBAAgB,6CAA6C;AACzF,aAAa,IAAI,IAAI,IAAI,IAAI;AAC7B;;AAEA;AACA;;;;;;;ACTa;;AAEb;AACA;AACA,kBAAkB,cAAc;AAChC;;AAEA;AACA;AACA,kBAAkB,aAAa,EAAE,EAAE,KAAK;AACxC;;AAEA;AACA;AACA,kBAAkB,aAAa,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO;AAC9D;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA,GAAG;AACH;AACA;AACA,EAAE;AACF;;AAEA,WAAW,gCAAgC;AAC3C;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,GAAe;AACxC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B,qBAAqB,SAAS;AAC9B;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;AClKD;AACA;AACA,oBAAoB,mBAAO,CAAC,GAAY;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,QAAQ,4BAA4B;AACpC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,6BAA6B;AACpC,WAAW,iCAAiC;AAC5C,UAAU,gCAAgC;AAC1C,WAAW,iCAAiC;AAC5C,OAAO,qCAAqC;AAC5C,SAAS,2CAA2C;AACpD,QAAQ;AACR;;AAEA,cAAc;;AAEd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,QAAQ,kBAAkB;AAC1B;AACA;AACA,oDAAoD,gBAAgB;AACpE,kDAAkD,cAAc;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,QAAQ,QAAQ;AAClC,kBAAkB,QAAQ,QAAQ;AAClC,kBAAkB,QAAQ,OAAO;AACjC,kBAAkB,QAAQ,OAAO;AACjC,kBAAkB,QAAQ,OAAO;AACjC,kBAAkB,QAAQ,OAAO;AACjC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,0EAA0E;;AAE1E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iDAAiD,EAAE,UAAU,EAAE;AAC/D;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,aAAa,aAAa;AAC1C;AACA,gBAAgB,aAAa,aAAa;AAC1C;AACA,gBAAgB,aAAa,aAAa;AAC1C;AACA,gBAAgB,aAAa,aAAa;AAC1C;AACA,gBAAgB,aAAa,aAAa;AAC1C;AACA,gBAAgB,aAAa;AAC7B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;ACt0BA,oBAAoB,mBAAO,CAAC,GAAe;AAC3C,cAAc,mBAAO,CAAC,GAAS;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,mCAAmC;AACnC;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wDAAwD,uCAAuC;AAC/F,sDAAsD,qCAAqC;;AAE3F;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF,CAAC;;AAED,cAAc;;;;;AChFd,oBAAoB,mBAAO,CAAC,GAAe;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,sCAAsC,SAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B;;AAE5B;;AAEA;AACA;AACA;;AAEA,0CAA0C,SAAS;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc;AACd;AACA;;AAEA;AACA,sCAAsC,SAAS;AAC/C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;AC/Fa;;AAEb;AACA;AACA;AACA;;AAEA,cAAc;;;;;;ACPD;;AAEb,cAAc;AACd;AACA;;;;;;ACJa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;;;;;;ACtBD;AACb,cAAc;AACd;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;AC7Da;;AAEb,kBAAkB,mBAAO,CAAC,GAAiB;AAC3C,gBAAgB,mBAAO,CAAC,GAAe;AACvC,eAAe,mBAAO,CAAC,GAAc;AACrC,cAAc,mBAAO,CAAC,GAAa;;AAEnC;AACA;AACA;AACA;AACA;AACA,wBAAwB,MAAM,KAAK,eAAe,IAAI;AACtD,wBAAwB,MAAM,KAAK;AACnC;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA,mCAAmC;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gCAAgC,IAAI;AACpC;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;;AAEA,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA,gCAAgC,IAAI;AACpC,yCAAyC,OAAO,IAAI;AACpD;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;;AAEA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,IAAI;AACtC;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;;AAEA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;;AAEA,oCAAoC;AACpC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,SAAS,UAAU,MAAM,EAAE,MAAM;AACrE;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;;AAEA,oCAAoC;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc;;;;;;ACzKD;;AAEb,aAAa,mBAAO,CAAC,GAAY;AACjC,cAAc,mBAAO,CAAC,GAAS;;AAE/B,kCAAkC;AAClC,iCAAiC;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,2DAA2D;;AAE/F;AACA,yDAAyD,MAAM;AAC/D;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,cAAc;;;;;;AC3DD;;AAEb,cAAc;AACd;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,QAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACxDa;;AAEb,aAAa,mBAAO,CAAC,GAAY;AACjC,kBAAkB,mBAAO,CAAC,GAAa;AACvC,cAAc,mBAAO,CAAC,GAAS;;AAE/B;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uDAAuD,EAAE,KAAK;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,iEAAiE,EAAE,KAAK;AACxE;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC;AACjC;;AAEA,iCAAiC;AACjC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAoB,uBAAuB;AAC3C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,cAAc;;;;;;AChHD;;AAEb,kBAAkB,mBAAO,CAAC,GAAa;;AAEvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAE,mBAAO,CAAC,GAAa;;AAEzB;AACA;AACA;;AAEA,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,aAAa,6BAA6B,IAAI;AACzF;;AAEA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,aAAa;;AAEtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa,sEAAsE;AACnF;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa,mCAAmC;AAChD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,aAAa,qBAAqB;AAClC;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB,0BAA0B;AAC/C;AACA,aAAa,qBAAqB;AAClC;AACA;;AAEA;AACA;AACA,eAAe,qBAAqB;AACpC;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,aAAa,qBAAqB;AAClC;AACA;;AAEA;AACA,2BAA2B;AAC3B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA;;AAEA;AACA,4BAA4B;AAC5B;;AAEA;AACA;AACA,eAAe,qBAAqB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,aAAa;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+BAA+B,uCAAuC;AACtE;;AAEA,aAAa,sBAAsB;AACnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,qBAAqB;AACpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,oBAAoB;AACjC;AACA;;AAEA;AACA;AACA;;AAEA,WAAW,qBAAqB;AAChC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ,SAAS,aAAa;AACtB;AACA;;AAEA,cAAc;;;;;;AC1UD;;AAEb,cAAc,mBAAO,CAAC,GAAS;;AAE/B,cAAc,qBAAqB;AACnC,sCAAsC;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;AC9Ba;;AAEb,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,YAAY;;AAEZ;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA,OAAO,iBAAiB,UAAU,iBAAiB;AACnD;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,eAAe;AACf;;AAEA;AACA,oBAAoB,gBAAgB;AACpC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;ACzHa;AACb,mBAAmB,mBAAO,CAAC,GAAa;AACxC,OAAO,0CAA0C,EAAE,mBAAO,CAAC,GAAgB;AAC3E;AACA;AACA;AACA,EAAE,EAAE,mBAAO,CAAC,GAAQ;;AAEpB,OAAO,SAAS;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0CAA0C;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2CAA2C,eAAe;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C,eAAe;AACzD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oEAAoE,OAAO,KAAK;AAChF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,QAAQ,mBAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA,yCAAyC;AACzC;AACA;AACA;;AAEA;AACA,aAAa,mBAAO,CAAC,GAAa;AAClC;;AAEA;AACA;;AAEA;;AAEA,uBAAuB;AACvB;AACA,sBAAsB,2CAA2C,GAAG;AACpE;;AAEA,cAAc;;;;;;ACpOD;AACb,0CAA0C,EAAE,GAAG,QAAQ,IAAI,EAAE,WAAW,EAAE,UAAU,uEAAuE;AAC3J;AACA;AACA,qCAAqC,EAAE,EAAE,QAAQ,KAAK,WAAW,EAAE;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ,6DAA6D,OAAO,aAAa,KAAK;AACtF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C,UAAU;AACrD;;AAEA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,gBAAgB,mCAAmC;AACnD,IAAI;AACJ;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,EAAE;;AAEF;;AAEA;AACA,0DAA0D,eAAe,iBAAiB,gCAAgC,IAAI;AAC9H;AACA;;AAEA;AACA;;;;;;ACrIa;;AAEb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;;;;;;ACtCa;AACb,WAAW,mBAAO,CAAC,GAAI;;AAEvB;AACA;AACA;;AAEA,cAAc;AACd,0BAA0B,cAAc;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;;;;;ACvCa;AACb,sBAAsB,mBAAO,CAAC,GAAgB;;AAE9C;;AAEA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;;AAEA;AACA,EAAE,YAAY;AACd,GAAG;AACH,EAAE,YAAY;AACd;AACA;;;;;;AClCa;;AAEb,iCAAiC,EAAE,mBAAO,CAAC,GAAiB,IAAI;;AAEhE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,cAAc;;;;;ACdd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;;AAEA,SAAS,mBAAO,CAAC,GAAa;;AAE9B,YAAY,mBAAO,CAAC,GAAQ;AAC5B,WAAW,mBAAO,CAAC,CAAM;AACzB,oBAAoB,mBAAO,CAAC,GAAuB;AACnD;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,IAAI,EAAE;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI,EAAE;AAC1C;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;;AAEA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA,aAAa;AACb;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACtPA,oCAAoC;AACpC,2BAA2B;AAC3B,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB,MAAM;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;;;;ACnDA;AACA,kBAAkB,mBAAO,CAAC,GAAY;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,cAAc;AAC5B,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,QAAQ,4BAA4B;AACpC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,6BAA6B;AACpC,WAAW,iCAAiC;AAC5C,UAAU,gCAAgC;AAC1C,WAAW,iCAAiC;AAC5C,OAAO,qCAAqC;AAC5C,SAAS,2CAA2C;AACpD,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,gBAAgB;AACrE,mDAAmD,cAAc;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO,QAAQ;AAChC,iBAAiB,OAAO,QAAQ;AAChC,kBAAkB,OAAO,OAAO;AAChC,kBAAkB,OAAO,OAAO;AAChC,iBAAiB,QAAQ,OAAO;AAChC,iBAAiB,QAAQ,OAAO;AAChC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,uEAAuE;;AAEvE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+CAA+C,EAAE,UAAU,EAAE;AAC7D;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,aAAa,aAAa;AAC1C;AACA,gBAAgB,aAAa,aAAa;AAC1C;AACA,gBAAgB,aAAa,aAAa;AAC1C;AACA,gBAAgB,aAAa,aAAa;AAC1C;AACA,gBAAgB,aAAa,aAAa;AAC1C;AACA,gBAAgB,aAAa;AAC7B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;ACn2BA,kBAAkB,mBAAO,CAAC,GAAe;AACzC,YAAY,mBAAO,CAAC,GAAS;;AAE7B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,mCAAmC;AACnC;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wDAAwD,uCAAuC;AAC/F,sDAAsD,qCAAqC;;AAE3F;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF,CAAC;;AAED,cAAc;;;;;;AC7EF;AACZ;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACvJA,kBAAkB,mBAAO,CAAC,GAAe;;AAEzC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,sCAAsC,SAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;;AAE1B;;AAEA;AACA;AACA;;AAEA,0CAA0C,SAAS;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc;AACd;AACA;;AAEA;AACA,sCAAsC,SAAS;AAC/C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;AC/FY;AACZ;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACvJA,cAAc;AACd;AACA,oBAAoB,eAAe;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;ACZa;AACb,oBAAoB,mBAAO,CAAC,GAAqB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;;;;;ACXD;AACb,OAAO,WAAW,EAAE,mBAAO,CAAC,GAAM;AAClC,WAAW,mBAAO,CAAC,GAAa;AAChC,gBAAgB,mBAAO,CAAC,GAAU;AAClC,eAAe,mBAAO,CAAC,GAAS;AAChC,oBAAoB,mBAAO,CAAC,GAAiB;;AAE7C;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB,yBAAyB;;AAEzB,wBAAwB;AACxB;;AAEA;AACA;AACA,GAAG;AACH,8CAA8C,KAAK,MAAM,cAAc;AACvE;;AAEA;AACA;;AAEA,YAAY;AACZ,6CAA6C,KAAK,MAAM,cAAc;AACtE,CAAC;;AAED,aAAa;AACb,kCAAkC,KAAK,aAAa,cAAc;AAClE,CAAC;;AAED,cAAc;AACd,mCAAmC,KAAK,aAAa,cAAc;AACnE,CAAC;;AAED,aAAa;AACb,kCAAkC,KAAK,aAAa,cAAc;AAClE,CAAC;;AAED,aAAa;AACb,kCAAkC,KAAK,aAAa,cAAc;AAClE,CAAC;;AAED,gBAAgB;AAChB;AACA;AACA,GAAG;AACH,kCAAkC,KAAK,aAAa,cAAc;AAClE;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA,GAAG;AACH,oCAAoC,KAAK,aAAa,cAAc;AACpE;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA,GAAG;AACH,mCAAmC,KAAK,aAAa,cAAc;AACnE;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA,GAAG;AACH,mCAAmC,KAAK,aAAa,cAAc;AACnE;AACA;;AAEA,eAAe,0BAA0B,GAAG;AAC5C,oDAAoD,KAAK,MAAM,cAAc;AAC7E,CAAC;;AAED,mBAAmB;AACnB;AACA,sBAAsB,GAAG;AACzB,GAAG;AACH,qDAAqD,KAAK,MAAM,cAAc;AAC9E;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA,GAAG;AACH,8CAA8C,OAAO,UAAU,YAAY,MAAM,cAAc;AAC/F;AACA;;;;;;AClGa;AACb,aAAa,mBAAO,CAAC,CAAM;AAC3B,OAAO,wBAAwB,EAAE,mBAAO,CAAC,GAAI;AAC7C,eAAe,mBAAO,CAAC,GAAS;AAChC,oBAAoB,mBAAO,CAAC,GAAiB;AAC7C,WAAW,mBAAO,CAAC,GAAM;AACzB,wBAAwB,mBAAO,CAAC,GAAoB;;AAEpD;AACA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD,sCAAsC;AACxF;AACA;AACA,EAAE;AACF;AACA,oDAAoD,OAAO,MAAM,cAAc;AAC/E;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,8CAA8C,YAAY,MAAM,cAAc;AAC9E;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;;AAEd;AACA;AACA,mFAAmF,OAAO;AAC1F;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;;;;ACpHa;AACb,qBAAqB,mBAAO,CAAC,GAAQ;;AAErC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS,eAAe;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,cAAc;;;;;;ACjCD;AACb,oBAAoB,mBAAO,CAAC,GAAqB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;;;;;ACXD;AACb,qBAAqB,mBAAO,CAAC,GAAQ;AACrC,aAAa,mBAAO,CAAC,CAAM;AAC3B,WAAW,mBAAO,CAAC,GAAI;AACvB,aAAa,mBAAO,CAAC,GAAO;AAC5B,eAAe,mBAAO,CAAC,GAAQ;AAC/B,eAAe,mBAAO,CAAC,GAAQ;AAC/B,gBAAgB,mBAAO,CAAC,GAAU;AAClC,eAAe,mBAAO,CAAC,GAAS;AAChC,aAAa,mBAAO,CAAC,GAAM;AAC3B,gBAAgB,mBAAO,CAAC,GAAU;AAClC,iBAAiB,mBAAO,CAAC,GAAa;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd;AACA;AACA,EAAE,IAAI;AACN;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ,uCAAuC,OAAO,MAAM,cAAc;AAClE;;AAEA;AACA,uCAAuC,OAAO;AAC9C;;AAEA;;AAEA;AACA,mEAAmE,kBAAkB;AACrF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA,oDAAoD;;AAEpD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL,6CAA6C,oBAAoB,UAAU,GAAG,MAAM,cAAc;AAClG;;AAEA;AACA,GAAG,GAAG,YAAY;AAClB,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;;;;;AC9Ja;AACb,OAAO,WAAW,EAAE,mBAAO,CAAC,GAAM;AAClC,WAAW,mBAAO,CAAC,GAAI;AACvB,aAAa,mBAAO,CAAC,CAAM;AAC3B,iBAAiB,mBAAO,CAAC,GAAW;AACpC,kBAAkB,mBAAO,CAAC,GAAQ;AAClC,cAAc,mBAAO,CAAC,GAAO;;AAE7B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,GAAG,gBAAgB,IAAI;AACjD;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE,IAAI;AACN,SAAS;AACT;;AAEA,cAAc;AACd;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;;;;;ACpHa;AACb,WAAW,mBAAO,CAAC,GAAI;AACvB,mBAAmB,mBAAO,CAAC,GAAa;AACxC,eAAe,mBAAO,CAAC,GAAQ;AAC/B,aAAa,mBAAO,CAAC,GAAM;AAC3B,iBAAiB,mBAAO,CAAC,GAAW;AACpC,gBAAgB,mBAAO,CAAC,GAAU;AAClC,kBAAkB,mBAAO,CAAC,GAAa;AACvC,OAAO,4BAA4B,EAAE,mBAAO,CAAC,GAAgB;;AAE7D;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,kBAAkB,yCAAyC;AAC3D;AACA;;AAEA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;;AAEA;AACA;AACA,cAAc,yCAAyC;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gCAAgC;;AAEhC,uBAAuB;AACvB;AACA;;AAEA,wBAAwB;;;;;;ACjLX;AACb,OAAO,WAAW,EAAE,mBAAO,CAAC,GAAQ;;AAEpC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;;;;;;AC7Ca;AACb,uBAAuB,mBAAO,CAAC,GAAiB;;AAEhD,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,uFAAuF,YAAY,MAAM,mBAAmB;AAC5H;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA,kBAAkB,iBAAiB;AACnC;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;;;;;;AChFa;;AAEb,WAAW,mBAAO,CAAC,GAAe;AAClC,cAAc,mBAAO,CAAC,GAAa;AACnC,eAAe,mBAAO,CAAC,GAAc;;AAErC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd,oBAAoB;AACpB,mBAAmB;;AAEnB,qBAAqB;AACrB,sBAAsB;;;;;;ACtCT;;AAEb;;AAEA;AACA,sCAAsC,SAAS,EAAE,kBAAkB;AACnE;AACA;AACA,oBAAoB,SAAS,EAAE,iBAAiB;AAChD;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kDAAkD;AAClD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;;;;;;AC1Da;;AAEb,aAAa,mBAAO,CAAC,CAAM;AAC3B,uBAAuB,mBAAO,CAAC,GAAuB;AACtD,eAAe,mBAAO,CAAC,GAAe;AACtC,oBAAoB,mBAAO,CAAC,GAAoB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,6CAA6C,aAAa;AAC1D;AACA,wDAAwD;AACxD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC;AACtC,8BAA8B,YAAY;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA,cAAc;;;;;;AC1FD;;AAEb;AACA,0CAA0C;;AAE1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,IAAI;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,cAAc,IAAI;;AAElB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,sBAAsB;AACtB,uBAAuB;;;;;;AC9CV;;AAEb,WAAW,mBAAO,CAAC,GAAI;AACvB,uBAAuB,mBAAO,CAAC,GAAiB;;AAEhD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAM,YAAY;;AAElB;AACA;AACA;;AAEA,cAAc;;;;;;ACtBD;;AAEb,aAAa,mBAAO,CAAC,CAAM;AAC3B,cAAc,mBAAO,CAAC,GAAO;AAC7B,mBAAmB,mBAAO,CAAC,GAAU;;AAErC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;;AAEA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA,SAAS;AACT,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc;;;;;;ACnDD;;AAEb;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,IAAI,IAA6B;AACjC,EAAE,cAAc;AAChB;;;;;AC1DA,YAAY,mBAAO,CAAC,GAAO;;AAE3B,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,E;;;;ACZA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,IAAI,KAA0B,IAAI,cAAc;AAChD,EAAE,cAAc;AAChB;;;;;;ACrKa;AACb,OAAO,WAAW,EAAE,mBAAO,CAAC,GAAM;AAClC,aAAa,mBAAO,CAAC,CAAM;AAC3B,eAAe,mBAAO,CAAC,GAAQ;AAC/B,eAAe,mBAAO,CAAC,GAAS;AAChC,cAAc,mBAAO,CAAC,GAAO;AAC7B,mBAAmB,mBAAO,CAAC,GAAa;AACxC,kBAAkB,mBAAO,CAAC,GAAa;AACvC,qBAAqB,mBAAO,CAAC,GAAgB;AAC7C,eAAe,mBAAO,CAAC,GAAQ;AAC/B,aAAa,mBAAO,CAAC,GAAO;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA,cAAc,qBAAqB,yDAAyD,cAAc,IAAI;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,mBAAmB,eAAe,gDAAgD,IAAI;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA;AACA;;;;;AC1IA,eAAe,mBAAO,CAAC,GAAQ;AAC/B,aAAa,mBAAO,CAAC,CAAM;AAC3B,WAAW,mBAAO,CAAC,GAAI;AACvB;AACA;AACA,SAAS,mBAAO,CAAC,GAAM;AACvB,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,oBAAoB;AACtC;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI;AACJ;;AAEA,cAAc;AACd;;;;;;ACvWa;;AAEb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;ACzHa;AACb,aAAa,mBAAO,CAAC,CAAM;AAC3B,iBAAiB,mBAAO,CAAC,GAAW;;AAEpC,8DAA8D,EAAE,sBAAsB;;AAEtF;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,KAAK;AACpB;;AAEA,cAAc,KAAK,GAAG,0BAA0B;AAChD;;AAEA;AACA;AACA,wFAAwF,qBAAqB;AAC7G;;AAEA;AACA,6FAA6F,0BAA0B;AACvH;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE,EAAE;AACnE;;AAEA;AACA,6CAA6C,kCAAkC;AAC/E;;AAEA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,uFAAuF,mBAAmB;AAC1G;;AAEA;AACA;AACA;AACA,EAAE;;AAEF,oCAAoC;AACpC;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEA;AACA,uFAAuF,mBAAmB;AAC1G;;AAEA;;AAEA,oCAAoC;AACpC;;;;;AC1EA,aAAa,mBAAO,CAAC,GAAQ;AAC7B;AACA;AACA;AACA;;AAEA,cAAc;;AAEd;AACA;AACA;AACA;;AAEA,oBAAoB,gBAAgB;AACpC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;ACtFA,WAAW,mBAAO,CAAC,GAAM;;AAEzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG,4BAA4B;AAC/B;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;;;;;AC7FD;;AAEb,WAAW,mBAAO,CAAC,GAAM;AACzB,iBAAiB,mBAAO,CAAC,GAAa;;AAEtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,cAAc;;;;;;AC5ID;;AAEb,8BAA8B;;AAE9B,cAAc;AACd;AACA;AACA;;AAEA;AACA;;;;;;ACVa;AACb,aAAa,mBAAO,CAAC,CAAM;AAC3B,qBAAqB,mBAAO,CAAC,GAAe;AAC5C,mBAAmB,mBAAO,CAAC,GAAa;AACxC,0BAA0B,mBAAO,CAAC,GAAqB;AACvD,mBAAmB,mBAAO,CAAC,GAAc;AACzC,gBAAgB,mBAAO,CAAC,GAAS;AACjC,kBAAkB,mBAAO,CAAC,GAAa;AACvC,uBAAuB,mBAAO,CAAC,GAAa;AAC5C,OAAO,0DAA0D,EAAE,mBAAO,CAAC,GAAY;AACvF,OAAO,iEAAiE,EAAE,mBAAO,CAAC,GAAiB;AACnG,OAAO,iCAAiC,EAAE,mBAAO,CAAC,GAAkB;AACpE,OAAO,2BAA2B,EAAE,mBAAO,CAAC,GAAkB;;AAE9D;;AAEA,iBAAiB,2DAA2D;AAC5E,0BAA0B,8BAA8B;;AAExD;AACA,yBAAyB,6BAA6B;AACtD;;AAEA;AACA;;AAEA,iDAAiD;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB;;AAElB;AACA;;AAEA;AACA,UAAU,kCAAkC;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,cAAc;;AAEd,mBAAmB;AACnB;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB;AACtB;AACA;AACA;;AAEA,0BAA0B;AAC1B;AACA;AACA;;AAEA,mBAAmB,kCAAkC;AACrD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnQa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,4BAA4B,EAAE,MAAM;AACtE,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd;AACA;AACA;;;;;;AC/Ba;AACb,OAAO,eAAe,EAAE,mBAAO,CAAC,GAAe;;AAE/C,yBAAyB,8EAA8E;AACvG;AACA,4BAA4B,SAAS;AACrC;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB,UAAU;AAClC;;AAEA;AACA,4BAA4B,QAAQ,GAAG,kBAAkB;AACzD;;AAEA;AACA,kCAAkC,SAAS;AAC3C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,UAAU;AACpB,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;;AAEA,gCAAgC,8EAA8E;AAC9G,iCAAiC,OAAO,IAAI,QAAQ;AACpD;AACA,mCAAmC,aAAa,IAAI,cAAc;AAClE;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;;;;;;ACrFD;AACb,WAAW,mBAAO,CAAC,GAAI;AACvB,eAAe,mBAAO,CAAC,GAAa;;AAEpC;;AAEA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,sBAAsB;AACxD;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC,6BAA6B;AAChE;AACA;AACA;;AAEA;AACA,2GAA2G,sBAAsB,MAAM,6BAA6B;AACpK;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,uBAAuB;AACtE;;AAEA;AACA,gCAAgC,gCAAgC;AAChE;AACA;AACA;;AAEA;AACA,6FAA6F,QAAQ,MAAM,eAAe;AAC1H;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;AACF;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;;;;;;AC/Ga;;AAEb,8CAA8C;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6CAA6C,qBAAqB;AAClE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;AACF;;AAEA,cAAc;AACd;AACA;AACA;;;;;;;AC5Ca;AACb;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;;AAEf;AACA;AACA;;AAEA;AACA,uFAAuF,0BAA0B,MAAM,gBAAgB;AACvI;;AAEA;AACA;AACA;;AAEA;AACA,yFAAyF,aAAa;AACtG;;AAEA;AACA,oBAAoB,OAAO;AAC3B;;AAEA,cAAc;;AAEd;AACA,mBAAmB;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;ACnDa;AACb,iBAAiB,mBAAO,CAAC,GAAW;AACpC,kBAAkB,mBAAO,CAAC,GAAY;AACtC,oBAAoB,mBAAO,CAAC,GAAc;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,mCAAmC,4BAA4B;AAC/D;AACA;AACA;;AAEA;AACA,4BAA4B,oBAAoB;AAChD;;AAEA,kCAAkC,UAAU;AAC5C;;AAEA;AACA,iCAAiC,oBAAoB,GAAG,4BAA4B;AACpF,iDAAiD,4BAA4B;AAC7E,iDAAiD,4BAA4B;AAC7E,2CAA2C,2CAA2C;;AAEtF;AACA;AACA,GAAG;AACH;AACA,IAAI,sDAAsD;AAC1D;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;;;;;;;AC/Fa;AACb,oBAAoB,mBAAO,CAAC,GAAkB;AAC9C,uBAAuB,mBAAO,CAAC,GAAqB;AACpD,gBAAgB,mBAAO,CAAC,GAAmB;AAC3C,iBAAiB,mBAAO,CAAC,GAAoB;AAC7C,eAAe,mBAAO,CAAC,GAAkB;AACzC,mBAAmB,mBAAO,CAAC,GAAY;AACvC,cAAc,mBAAO,CAAC,GAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;;;;;ACnED;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,8BAA8B,GAAG,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA,iCAAiC,GAAG;AACpC;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;;;;;;ACpBjB;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iCAAiC,GAAG,mCAAmC,GAAG,oCAAoC,GAAG,qCAAqC,GAAG,2BAA2B,GAAG,8BAA8B,GAAG,gBAAgB;AACxO,cAAc,mBAAO,CAAC,GAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,oCAAoC;AACpC;AACA;AACA;AACA,KAAK;AACL;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;;;;;;AC/EpB;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,GAAmB;AAC5C,mBAAmB,mBAAO,CAAC,GAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;AC3BF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc,mBAAO,CAAC,GAAa;AACnC,kBAAkB,mBAAO,CAAC,GAAqB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;AC7DF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc,mBAAO,CAAC,GAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;AC3DF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc,mBAAO,CAAC,GAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;ACdF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc,mBAAO,CAAC,GAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,UAAU;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;ACjDF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,kBAAkB,mBAAO,CAAC,GAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,IAAI;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;ACrCF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,aAAa,mBAAO,CAAC,CAAM;AAC3B,eAAe,mBAAO,CAAC,GAAgB;AACvC,gBAAgB,mBAAO,CAAC,GAAiB;AACzC,gBAAgB,mBAAO,CAAC,GAAiB;AACzC,gBAAgB,mBAAO,CAAC,GAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;AC/CF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,GAAQ;AACjC,iBAAiB,mBAAO,CAAC,GAAmB;AAC5C,mBAAmB,mBAAO,CAAC,GAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,mCAAmC;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;AC9BF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe,mBAAO,CAAC,GAAiB;AACxC,mBAAmB,mBAAO,CAAC,GAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;ACtBF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc,mBAAO,CAAC,GAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,YAAY,gBAAgB;AACzE;AACA;AACA,kBAAe;;;;;;ACzBF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,aAAa,mBAAO,CAAC,CAAM;AAC3B,eAAe,mBAAO,CAAC,GAAkB;AACzC,cAAc,mBAAO,CAAC,GAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;AChCF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,GAAQ;AACjC,eAAe,mBAAO,CAAC,GAAkB;AACzC,eAAe,mBAAO,CAAC,GAAkB;AACzC,iBAAiB,mBAAO,CAAC,GAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,kBAAkB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,kBAAe;;;;;;ACtDF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe,mBAAO,CAAC,GAAkB;AACzC,eAAe,mBAAO,CAAC,GAAkB;AACzC,iBAAiB,mBAAO,CAAC,GAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;AC1CF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,mCAAmC;AACnC,WAAW,mBAAO,CAAC,GAAI;AACvB,WAAW,mBAAO,CAAC,GAAI;AACvB;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,6CAA6C,EAAE,mCAAmC;AAClF;AACA;AACA,kBAAe;;;;;;ACxDF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB,GAAG,eAAe;AACnC;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;;;;ACrBJ;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;;;;;;ACNZ;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;;;;;AClBhB;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,aAAa;AAC7G,cAAc,mBAAO,CAAC,GAAS;AAC/B,aAAa;AACb,cAAc,mBAAO,CAAC,GAAS;AAC/B,aAAa;AACb,WAAW,mBAAO,CAAC,GAAM;AACzB,UAAU;AACV,aAAa,mBAAO,CAAC,GAAQ;AAC7B,YAAY;AACZ,gBAAgB,mBAAO,CAAC,GAAW;AACnC,eAAe;AACf,eAAe,mBAAO,CAAC,GAAU;AACjC,cAAc;AACd,eAAe,mBAAO,CAAC,GAAU;AACjC,cAAc;;;;;;AChBD;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,+BAA+B,GAAG,cAAc,GAAG,oBAAoB,GAAG,eAAe;AACzF,aAAa,mBAAO,CAAC,CAAM;AAC3B,gDAAgD;AAChD,kDAAkD,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;;;;;;AChClB;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,gBAAgB,GAAG,2BAA2B,GAAG,cAAc,GAAG,uBAAuB,GAAG,4BAA4B,GAAG,wCAAwC,GAAG,qCAAqC,GAAG,6BAA6B,GAAG,mBAAmB,GAAG,wBAAwB,GAAG,yCAAyC,GAAG,0CAA0C,GAAG,yCAAyC,GAAG,2BAA2B,GAAG,2BAA2B,GAAG,yBAAyB,GAAG,yBAAyB,GAAG,gCAAgC,GAAG,gCAAgC,GAAG,wBAAwB,GAAG,uBAAuB;AAChpB,aAAa,mBAAO,CAAC,CAAM;AAC3B,mBAAmB,mBAAO,CAAC,GAAa;AACxC,mBAAmB,mBAAO,CAAC,GAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA,uBAAuB;AACvB,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,gDAAgD;AAChD;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,yCAAyC;AACzC;AACA,iCAAiC,wBAAwB;AACzD;AACA,wBAAwB;AACxB;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA,KAAK;AACL;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,4BAA4B;AAC5B;AACA,UAAU,QAAQ,yDAAyD,cAAc,aAAa;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,gBAAgB;;;;;;ACxKH;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,aAAa;AACb,eAAe,mBAAO,CAAC,GAAQ;AAC/B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;;;AChBa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe,GAAG,gBAAgB;AAClC;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,eAAe;;;;;;ACVH;;AAEZ;;AAEA,cAAc,mBAAO,CAAC,GAAS;;AAE/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,cAAc;AACd,sBAAsB;;;;;;AC1RtB;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb,aAAa,mBAAO,CAAC,GAAM;AAC3B,qBAAqB,mBAAO,CAAC,GAAgB;;AAE7C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB,OAAO,EAAE,gEAAgE;AAC9F;;AAEA;AACA,gBAAgB,UAAU,GAAG,UAAU;AACvC,IAAI;AACJ;AACA;;AAEA;AACA,eAAe,OAAO,EAAE,OAAO;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA,gCAAgC,yBAAyB;AACzD;;AAEA;AACA;;AAEA;AACA,aAAa,MAAM,GAAG,KAAK;AAC3B;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,OAAO,EAAE,gBAAgB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,KAAK;AAC/C;AACA;AACA;;AAEA,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,yBAAyB;AACxD;;AAEA;AACA;;AAEA,uDAAuD;AACvD;AACA;AACA;;AAEA;AACA,aAAa,MAAM;AACnB,aAAa,IAAI;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,sBAAsB;AACxD;;AAEA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC,iBAAiB;AAClD;;AAEA;AACA;AACA;;AAEA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;;;;;ACvPd,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAO,CAAC,GAAI;AACrB;AACA;;AAEA;AACA;AACA,UAAU,mBAAO,CAAC,GAAU;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,CAAM;AAC/B;AACA,SAAS,mBAAO,CAAC,GAAI;;AAErB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA,0CAA0C,EAAE;AAC5C,EAAE;AACF;AACA;;AAEA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;AC9Sa;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oBAAoB,cAAc;AAClC;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qCAAqC,oBAAoB;AACzD;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;;AAEA,iFAAiF,sCAAsC;;AAEvH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;ACnFa;;AAEb,qBAAqB,mBAAO,CAAC,GAAkB;;AAE/C,cAAc;;;;;;ACJD;AACb,OAAO,gCAAgC,EAAE,mBAAO,CAAC,GAAQ;;AAEzD,cAAc;AACd,YAAY;;AAEZ,QAAQ,OAAO;AACf,MAAM,UAAU;AAChB;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,uCAAuC,WAAW;;AAElD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;;;;;ACnDa;AACb,OAAO,4BAA4B,EAAE,mBAAO,CAAC,GAAQ;AACrD,aAAa,mBAAO,CAAC,GAAM;AAC3B,qBAAqB,mBAAO,CAAC,GAAiB;;AAE9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA,cAAc;AACd;AACA,yBAAsB;AACtB,qBAAqB,2CAA2C,+BAA+B;AAC/F,oBAAoB,2CAA2C,wBAAwB;AACvF,6BAA6B;;;;;;AC3DhB;;AAEb,aAAa,mBAAO,CAAC,GAAS;AAC9B,uBAAuB,0DAA6B;AACpD,cAAc,kDAAsB;;AAEpC;AACA;AACA,8BAA8B;;AAE9B;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB;AACA,cAAc;AACd,gCAAgC,uBAAuB;;AAEvD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;;;;AC1EA,eAAe;AACf,eAAe;AACf,eAAe;AACf,cAAc;AACd,YAAY;AACZ,iBAAiB;AACjB,uBAAuB;;AAEvB;AACA;AACA;;AAEA,SAAS,mBAAO,CAAC,GAAI;AACrB,WAAW,mBAAO,CAAC,CAAM;AACzB,gBAAgB,mBAAO,CAAC,GAAW;AACnC,iBAAiB,mBAAO,CAAC,GAAkB;AAC3C;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAyC,WAAW;AACpD;;AAEA;AACA,sCAAsC,WAAW;AACjD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAY,gCAAgC;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;;;;AC3OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;AAEd,SAAS,mBAAO,CAAC,GAAa;AAC9B,gBAAgB,mBAAO,CAAC,GAAW;AACnC;AACA,eAAe,mBAAO,CAAC,GAAU;AACjC,SAAS,0DAA8B;AACvC,WAAW,mBAAO,CAAC,CAAM;AACzB,aAAa,mBAAO,CAAC,GAAQ;AAC7B,iBAAiB,mBAAO,CAAC,GAAkB;AAC3C,eAAe,mBAAO,CAAC,GAAW;AAClC,aAAa,mBAAO,CAAC,GAAa;AAClC;AACA;AACA,eAAe,mBAAO,CAAC,GAAU;AACjC,WAAW,mBAAO,CAAC,GAAM;AACzB;AACA;;AAEA,WAAW,mBAAO,CAAC,GAAM;;AAEzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,kBAAkB,mBAAmB;AACrC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB,yBAAyB;AAC3C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;AClxBA,cAAc;AACd;;AAEA,SAAS,mBAAO,CAAC,GAAa;AAC9B,gBAAgB,mBAAO,CAAC,GAAW;AACnC;AACA,WAAW,0CAAyB;AACpC,WAAW,mBAAO,CAAC,GAAM;AACzB,WAAW,mBAAO,CAAC,CAAM;AACzB,aAAa,mBAAO,CAAC,GAAQ;AAC7B,iBAAiB,mBAAO,CAAC,GAAkB;AAC3C,aAAa,mBAAO,CAAC,GAAa;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;AClea;AACb,OAAO,WAAW,EAAE,mBAAO,CAAC,GAAM;AAClC,WAAW,mBAAO,CAAC,GAAI;AACvB,aAAa,mBAAO,CAAC,CAAM;AAC3B,iBAAiB,mBAAO,CAAC,GAAW;AACpC,kBAAkB,mBAAO,CAAC,GAAQ;AAClC,cAAc,mBAAO,CAAC,GAAO;;AAE7B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,GAAG,gBAAgB,IAAI;AACjD;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE,IAAI;AACN,SAAS;AACT;;AAEA,cAAc;AACd;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;;;;;ACvHa;AACb,WAAW,mBAAO,CAAC,GAAI;AACvB,mBAAmB,mBAAO,CAAC,GAAa;AACxC,eAAe,mBAAO,CAAC,GAAQ;AAC/B,iBAAiB,mBAAO,CAAC,GAAW;AACpC,gBAAgB,mBAAO,CAAC,GAAU;AAClC,kBAAkB,mBAAO,CAAC,GAAa;AACvC,OAAO,4BAA4B,EAAE,mBAAO,CAAC,GAAgB;;AAE7D;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,kBAAkB,yCAAyC;AAC3D;AACA;;AAEA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;;AAEA;AACA;AACA,cAAc,yCAAyC;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gCAAgC;;AAEhC,uBAAuB;AACvB;AACA;;AAEA,wBAAwB;;;;;;ACpLX;AACb,OAAO,WAAW,EAAE,mBAAO,CAAC,GAAQ;;AAEpC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;;;;;;AC7CY;;AAEZ,cAAc;;AAEd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;;;;ACtBA,SAAS,mBAAO,CAAC,GAAI;AACrB,gBAAgB,mBAAO,CAAC,GAAgB;AACxC,aAAa,mBAAO,CAAC,GAAqB;AAC1C,YAAY,mBAAO,CAAC,GAAY;;AAEhC,WAAW,mBAAO,CAAC,GAAM;;AAEzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA,MAAM,0CAAuB;AAC7B,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA,cAAc;AACd;AACA,IAAI,cAAc;AAClB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,8BAA8B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;AC/bA,aAAa,8CAAwB;;AAErC,cAAc;;AAEd;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACrHA,gBAAgB,mBAAO,CAAC,GAAW;;AAEnC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;AAEd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,YAAY;AACZ,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,cAAc;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA,MAAM;AACN,+CAA+C;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;AClWa;;AAEb,cAAc;AACd;AACA;AACA;AACA;AACA;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb,aAAa,mBAAO,CAAC,GAAS;;AAE9B,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,mBAAO,CAAC,GAAY;;AAEpC,cAAc;AACd;AACA;AACA;;AAEA;;AAEA,oCAAoC,IAAI;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;ACxBa;;AAEb;AACA;AACA,WAAW,mBAAO,CAAC,GAAe;;AAElC,WAAW,aAAa;AACxB,cAAc;;;;;;ACPF;;AAEZ,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,MAAM,2BAA2B,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK;AAClG,8BAA8B,OAAO,EAAE,KAAK,EAAE,QAAQ;AACtD,2BAA2B,OAAO,OAAO,EAAE,KAAK,EAAE,QAAQ,KAAK,YAAY;AAC3E,0CAA0C,OAAO,EAAE,KAAK,EAAE,QAAQ,SAAS,WAAW;AACtF,GAAG;AACH;AACA;AACA;AACA;AACA,iCAAiC,OAAO,EAAE,KAAK,EAAE,QAAQ,MAAM,WAAW;AAC1E,GAAG;AACH;AACA;AACA;AACA;AACA,8BAA8B,OAAO,EAAE,KAAK,EAAE,QAAQ;AACtD,mCAAmC,OAAO,OAAO,EAAE,KAAK,EAAE,YAAY,KAAK,YAAY;AACvF,iCAAiC,OAAO,EAAE,KAAK,EAAE,QAAQ,gCAAgC,WAAW;AACpG;AACA,GAAG;AACH;AACA;AACA;AACA,+CAA+C,IAAI;AACnD,yDAAyD,KAAK,EAAE,QAAQ,KAAK,YAAY,EAAE,KAAK;AAChG,8BAA8B,OAAO,EAAE,QAAQ;AAC/C,2BAA2B,OAAO,EAAE,QAAQ,KAAK,YAAY;AAC7D,yBAAyB,OAAO,GAAG,QAAQ,KAAK,YAAY;AAC5D,sCAAsC,OAAO,EAAE,QAAQ,KAAK,YAAY;AACxE,gCAAgC,OAAO,EAAE,SAAS,YAAY;AAC9D,oCAAoC,OAAO,EAAE,SAAS,aAAa,MAAM;AACzE,8BAA8B,OAAO,EAAE,SAAS,YAAY;AAC5D,mCAAmC,OAAO,EAAE,QAAQ,KAAK,YAAY;AACrE,0BAA0B,KAAK,EAAE,SAAS,YAAY;AACtD,sBAAsB,SAAS,YAAY;AAC3C,0DAA0D,QAAQ,SAAS,WAAW;AACtF;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,OAAO,EAAE,KAAK,EAAE,QAAQ,KAAK,YAAY;AAChE,oCAAoC,OAAO,EAAE,KAAK,EAAE,QAAQ,KAAK,YAAY;AAC7E,8BAA8B,OAAO,EAAE,KAAK,EAAE,SAAS,iBAAiB;AACxE,kCAAkC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU;AACpG,4BAA4B,OAAO,EAAE,KAAK,EAAE,SAAS,iBAAiB;AACtE,iCAAiC,OAAO,OAAO,EAAE,KAAK,EAAE,QAAQ,KAAK,YAAY;AACjF,4BAA4B,OAAO,EAAE,KAAK,EAAE,QAAQ,MAAM,WAAW,EAAE,KAAK;AAC5E,wBAAwB,KAAK,EAAE,KAAK,EAAE,SAAS,YAAY;AAC3D,oBAAoB,KAAK,EAAE,SAAS,YAAY;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uCAAuC;AACvC,KAAK;AACL,CAAC;;AAED;AACA;AACA;;;;;;AC9EY;AACZ,eAAe,mBAAO,CAAC,GAAoB;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA,yBAAyB;AACzB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,cAAc;AAClD,GAAG;AACH;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB,WAAW,qBAAqB;AACtD;AACA;;AAEA;AACA,gDAAgD,SAAS;AACzD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;AC3JY;AACZ,UAAU,mBAAO,CAAC,GAAK;AACvB,eAAe,mBAAO,CAAC,GAAoB;AAC3C,cAAc,yCAAyC;;AAEvD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,sBAAsB;AACtB;AACA,8CAA8C;;AAE9C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,QAAQ;AACR;AACA,GAAG,kCAAkC,oBAAoB;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnJa,8CAA2C,CAAC,WAAW,EAAC,CAAC,eAAe;;AAErF;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,iBAAiB,EAAE,eAAe;AAClC,gC;;;;;AChRa,8CAA2C,CAAC,WAAW,EAAC,CAAC,uBAAuB,CAAC,qBAAqB,QAAQ,QAAQ,mBAAO,CAAC,GAAI;;AAE/I,aAAa,mBAAO,CAAC,GAAc;AACnC,cAAc,mBAAO,CAAC,GAAe;;;;AAIrC;AACA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA,CAAC,yDAAyD;AAC1D;AACA;AACA;AACA,QAAQ;;AAER;;AAEA,uCAAuC,qBAAqB;;;;;AAK5D;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;;AAEA,uBAAuB;AACvB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,MAAM,kDAAkD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;;;AAIA;AACA,4BAA4B,KAAK;;AAEjC;AACA;AACA;;AAEA;AACA;;AAEA,2CAA2C,uBAAuB;AAClE,gC;;;;;ACtEa,8CAA2C,CAAC,WAAW,EAAC,CAAC,gBAAgB,CAAC,0BAA0B;AACjH;AACA;AACA,mBAAmB,OAAO;AAC1B,EAAE,0BAA0B;;AAE5B;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,kBAAkB,gBAAgB;AAClC,oC;;;;;AClBa,8CAA2C,CAAC,WAAW,EAAC,CAAC,kBAAkB,QAAQ,QAAQ,mBAAO,CAAC,GAAI;;AAEpH,UAAU,mBAAO,CAAC,GAAW;AAC7B,cAAc,mBAAO,CAAC,GAAe;;;;AAIrC;AACA;AACA;AACA;AACA,EAAE,kBAAkB;;;;;;;;AAQpB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS,uBAAuB;AAChC;AACA;AACA;AACA,OAAO;AACP;AACA,mC;;;;AClCA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,MAAM;;AAE5C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,QAAQ;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,gBAAgB;AAChB,kBAAkB,MAAM;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,GAAG;AACrB;;AAEA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,MAAM,EAAE,+BAA+B,EAAE,MAAM;AAC7D;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB,EAAE,UAAU;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA,WAAW,MAAM;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,GAAG;;AAEhB;AACA;AACA;;AAEA,gBAAgB,OAAO;AACvB;AACA;AACA;;AAEA;AACA;;AAEA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C,aAAa;AACvD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,GAAG,mBAAmB,aAAa;AAC7D;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,iCAAiC;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB;AACA;;AAEA,eAAe,YAAY;AAC3B;AACA;AACA;;AAEA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC1lBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB,gBAAgB,QAAQ;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,QAAQ,IAA6B;AACrC,QAAQ,cAAc;AACtB,MAAM,KAAK,EAEN;AACL,CAAC;;;;;;ACzIY;;AAEb,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;;AAEA;AACA;AACA,mDAAmD,aAAa;AAChE;AACA;;AAEA;AACA;AACA,4DAA4D,sBAAsB;AAClF;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;;;;AClCA,aAAa,mBAAO,CAAC,GAAQ;AAC7B;AACA,WAAW,mBAAO,CAAC,GAAM;;AAEzB,cAAc;;AAEd;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,SAAS;AAC/B;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA,kBAAkB,YAAY;AAC9B;AACA;;;;;ACrDA;AACA,aAAa,mBAAO,CAAC,GAAM;AAC3B;AACA;AACA,EAAE,cAAc;AAChB,EAAE;AACF;AACA,EAAE,yCAAiD;AACnD;;;;;ACRA;AACA;AACA,EAAE,cAAc;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,EAAE;AACF;AACA,EAAE,cAAc;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC1Ba;;AAEb,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;;;;;ACTa;;AAEb,aAAa,mBAAO,CAAC,GAAQ;;AAE7B;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,mBAAO,CAAC,GAAa;;AAEhC,cAAc;AACd;AACA;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,mBAAO,CAAC,GAAY;AACpC,cAAc,EAAE,KAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mDAAmD,0BAA0B;AAC7E,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;ACrJa;;AAEb,cAAc,KAAK,yBAAyB,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACjBa;AACb,aAAa,mBAAO,CAAC,CAAM;;AAE3B,cAAc;AACd;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;ACda;AACb,aAAa,mBAAO,CAAC,CAAM;;AAE3B,cAAc;AACd;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;;;;;;ACXa;AACb;;AAEA,cAAc;AACd;AACA,qJAAqJ;AACrJ;;;;;;ACNa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc;;;;;AC3Bd,SAAS,mBAAO,CAAC,GAAI;AACrB;AACA;AACA,SAAS,mBAAO,CAAC,GAAc;AAC/B,EAAE;AACF,SAAS,mBAAO,CAAC,GAAW;AAC5B;;AAEA,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,wCAAwC;AACxC,IAAI;AACJ;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;;;;ACxDA,cAAc;AACd;;AAEA,SAAS,mBAAO,CAAC,GAAI;;AAErB;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;ACxCA,cAAc;AACd;;AAEA,SAAS,mBAAO,CAAC,GAAI;;AAErB;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B;AAC5B;AACA;AACA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;;;;ACzCA;AACA;;AAEA,8CAA6C;AAC7C;AACA,CAAC,EAAC;;AAEF;AACA;AACA,kBAAe,8EAA8E,MAAM,OAAO,IAAI,GAAG,IAAI,KAAK,iJAAiJ,+BAA+B,IAAI,8CAA8C,kJAAkJ,EAAE,MAAM,aAAa,2BAA2B,EAAE,mBAAmB,IAAI,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,WAAW,OAAO;;AAElmB,oBAAoB;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACtBY;;AAEZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,GAAG,oBAAoB;AAC7B;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,uCAAuC,KAAK,EAAE,sBAAsB;AACpE;AACA;AACA,IAAI;AACJ;AACA,wCAAwC,0BAA0B;AAClE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA,gCAAgC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,uBAAuB,EAAE;;AAEzB;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,wBAAwB,8CAA8C;AACtE;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,cAAc;AACd;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;;;;;ACxHa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;AACA;;AAEA,aAAa;;AAEb,UAAU,eAAe,kBAAkB;;AAE3C,WAAW,gBAAgB,UAAU;;AAErC;AACA,kBAAe,GAAG,cAAc;;;;;;ACtCnB;AACb,aAAa,mBAAO,CAAC,CAAM;AAC3B,OAAO,WAAW,EAAE,mBAAO,CAAC,GAAM;AAClC,WAAW,mBAAO,CAAC,GAAa;AAChC,iBAAiB,mBAAO,CAAC,GAAW;AACpC,kBAAkB,mBAAO,CAAC,GAAY;;AAEtC,2CAA2C;AAC3C;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd,mBAAmB;;;;;;AClBN;AACb,WAAW,mBAAO,CAAC,GAAI;AACvB,aAAa,mBAAO,CAAC,CAAM;AAC3B,OAAO,WAAW,EAAE,mBAAO,CAAC,GAAM;AAClC,eAAe,mBAAO,CAAC,GAAQ;;AAE/B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gEAAgE,IAAI;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4DAA4D,IAAI;AAChE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;;AAEd,mBAAmB;AACnB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;AC3Ja;;AAEb,QAAQ,cAAc,EAAE,mBAAO,CAAC,GAAQ;;AAExC,cAAc;AACd;AACA,iCAAiC,iBAAiB;;AAElD;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,WAAW;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6CAA6C,sBAAsB;AACnE,8CAA8C;AAC9C;AACA;;;;;;ACxCY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAO,CAAC,GAAQ;AAC/B;AACA;;AAEA,cAAc;;AAEd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kCAAkC,YAAY;AAC9C;AACA;AACA;;AAEA,oBAAoB,oBAAoB;AACxC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA;;;;;;AC/Ia;;AAEb,aAAa,mBAAO,CAAC,GAAM;AAC3B,eAAe,mBAAO,CAAC,GAAQ;AAC/B,kBAAkB,mBAAO,CAAC,GAAW;AACrC,cAAc,mBAAO,CAAC,GAAqB;;AAE3C;AACA;AACA,4BAA4B;AAC5B,mCAAmC;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC,WAAW,sBAAsB;AACjC,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,qBAAqB;AACvC,mDAAmD,sBAAsB;AACzE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,+CAA+C,oBAAoB;AACnE;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,gCAAgC;AAChC;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,UAAU;AACtB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,0CAA0C;AAC1C;AACA,WAAW,QAAQ;AACnB,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB,YAAY,SAAS;AACrB;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qDAAqD,sBAAsB;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB,YAAY,SAAS;AACrB;AACA;;AAEA;AACA;AACA,+CAA+C,kBAAkB;AACjE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4CAA4C,4BAA4B;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,UAAU;AACV;AACA,WAAW,QAAQ;AACnB,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB,YAAY,SAAS;AACrB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB,YAAY,SAAS;AACrB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB,YAAY,SAAS;AACrB;AACA;;AAEA;AACA;AACA,+CAA+C,kBAAkB;AACjE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,YAAY;AACxB;AACA;;AAEA;AACA;AACA,+CAA+C,2BAA2B;AAC1E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,4BAA4B,MAAM;AAClC;AACA;AACA,4BAA4B,MAAM,SAAS,cAAc;AACzD;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,0BAA0B;AAChE;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;;;;;;ACzdD;;AAEb;AACA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd;AACA,yBAAsB;;;;;ACZtB,cAAc;AACd;;AAEA,0BAA0B,MAAM,OAAO,mBAAO,CAAC,CAAM,IAAI,aAAa;AACtE;AACA;AACA;;AAEA;AACA,aAAa,mBAAO,CAAC,GAAiB;;AAEtC;AACA,SAAS,sCAAsC;AAC/C,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AACnC,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,IAAI;;AAE7C;AACA;AACA;;AAEA;AACA,gCAAgC;;AAEhC,cAAc;AACd;AACA;AACA;AACA;AACA,GAAG,IAAI;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,qDAAqD;;AAErD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,MAAM;AACN,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK,IAAI;AACT,KAAK,GAAG;AACR,KAAK,KAAK;AACV,KAAK,IAAI,IAAI,EAAE;AACf,KAAK,IAAI,EAAE,IAAI;AACf;AACA;AACA,KAAK,IAAI,OAAO,IAAI;AACpB,KAAK,EAAE,OAAO,EAAE;AAChB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,6BAA6B,QAAQ,MAAM;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;;AAEA,MAAM;AACN,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,gCAAgC,EAAE,EAAE,KAAK;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAyC,QAAQ;AACjD;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;;AAEA,cAAc,gBAAgB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,yBAAyB,oBAAoB;AAC7C,mCAAmC,aAAa;AAChD;;AAEA;AACA;AACA,+BAA+B,QAAQ;AACvC,mCAAmC,YAAY;AAC/C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,iCAAiC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN,MAAM;AACN;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;;;;;AC5+BA,gBAAgB,mBAAO,CAAC,GAAY;AACpC,eAAe,mBAAO,CAAC,GAAgB;;AAEvC,cAAc;;AAEd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA,mCAAmC;AACnC,oCAAoC;AACpC;AACA;AACA;;;AAGA;AACA;AACA,wCAAwC,GAAG,IAAI;AAC/C;AACA;AACA;;AAEA;AACA,qBAAqB,KAAK;;AAE1B;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B,uCAAuC,GAAG;AAC1C,YAAY,GAAG,yBAAyB;AACxC;AACA;AACA,8BAA8B;AAC9B,cAAc,GAAG;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,KAAK;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,EAAE;AACV,gCAAgC;AAChC,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,YAAY,KAAK,QAAQ,EAAE,IAAI,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,oCAAoC,0BAA0B;AAC9D;;AAEA,kBAAkB,cAAc;AAChC,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;ACvMa;;AAEb;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;;AAEA,cAAc;AACd,cAAc;;AAEd;AACA,WAAW;AACX,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;;AAEA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,qBAAqB;AACvC;AACA,uCAAuC;AACvC,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,yCAAyC;AACzC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;;AAEA;AACA,mBAAmB,oBAAoB;AACvC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;;;;;ACtQA,WAAW,mBAAO,CAAC,CAAM;AACzB,SAAS,mBAAO,CAAC,GAAI;AACrB;;AAEA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;ACrGa;AACb,kBAAkB,mBAAO,CAAC,GAAW;AACrC,mBAAmB,mBAAO,CAAC,GAAa;AACxC,oBAAoB,mBAAO,CAAC,GAAc;AAC1C,eAAe,mBAAO,CAAC,GAAQ;;AAE/B,cAAc,gCAAgC;AAC9C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;;;;;ACxBA,aAAa,mBAAO,CAAC,GAAQ;;AAE7B,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG,wCAAwC;;AAE3C;AACA;AACA;AACA;AACA;AACA,GAAG,wCAAwC;;;AAG3C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;AChJA,SAAS,mBAAO,CAAC,GAAI;AACrB,WAAW,mBAAO,CAAC,CAAM;;AAEzB,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,qDAAqD,iBAAiB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClQA,eAAe,kDAAwB;;AAEvC;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA,cAAc;;;;;ACjDd,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,qCAAqC;AACvD;AACA,sBAAsB,sBAAsB;AAC5C;AACA;;;;;ACbA,aAAa,mBAAO,CAAC,GAAQ;AAC7B,sBAAsB,mBAAO,CAAC,GAA8B;AAC5D,oBAAoB,mBAAO,CAAC,GAAiB;AAC7C,sBAAsB,8CAAyB;AAC/C;AACA,yBAAyB,mBAAO,CAAC,GAAuB;AACxD,UAAU,mBAAO,CAAC,GAAK;AACvB,YAAY,mBAAO,CAAC,GAAc;;AAElC,YAAY,cAAc;AAC1B;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;ACjaA,WAAW,mBAAO,CAAC,GAAM;AACzB,eAAe,mBAAO,CAAC,GAAyB;;AAEhD,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACtBA,cAAc;;AAEd,YAAY,mBAAO,CAAC,GAAS;AAC7B;;AAEA,kBAAkB,mBAAO,CAAC,GAAgB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;;;;;ACtCa;AACb,aAAa,mBAAO,CAAC,CAAM;AAC3B,gBAAgB,mBAAO,CAAC,GAAU;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd;AACA,yBAAsB;;AAEtB,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA,cAAc;AACd,uBAAuB,IAAI;;AAE3B;AACA,aAAa,cAAc;;AAE3B;AACA;;;;;AC9CA,aAAa,mBAAO,CAAC,GAAQ;AAC7B,cAAc;AACd,qBAAqB;;AAErB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACzCa;AACb,gBAAgB,mBAAO,CAAC,GAAU;;AAElC;;AAEA,wCAAwC;AACxC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ,iCAAiC,aAAa;AAC9C;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd;AACA,yBAAsB;;AAEtB,wBAAwB;AACxB;AACA,0CAA0C,eAAe;AACzD;;AAEA;AACA;;;;;;AC3Ca;AACb,iBAAiB,mBAAO,CAAC,GAAU;AACnC,cAAc,mBAAO,CAAC,GAAO;AAC7B,kBAAkB,mBAAO,CAAC,GAAY;AACtC,oBAAoB,mBAAO,CAAC,GAAc;AAC1C,mBAAmB,mBAAO,CAAC,GAAa;AACxC,kBAAkB,mBAAO,CAAC,GAAY;AACtC,gBAAgB,mBAAO,CAAC,GAAS;AACjC,sBAAsB,mBAAO,CAAC,GAAgB;AAC9C,mBAAmB,mBAAO,CAAC,GAAa;;AAExC;AACA;;AAEA,6BAA6B;;AAE7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,yGAAyG,oBAAoB;;AAE7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ,0DAA0D,QAAQ;AAClE;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS,QAAQ;AACjB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,uBAAuB;AACzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,UAAU;AACrC;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,8BAA8B,iCAAiC;AAC/D;;AAEA;AACA,8BAA8B,+BAA+B;AAC7D;;AAEA;AACA,8BAA8B,iCAAiC;AAC/D;;AAEA;AACA,8BAA8B,8BAA8B;AAC5D;;AAEA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,eAAe,EAAE,sBAAsB,EAAE,SAAS;;AAEzE;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc;;AAEd,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,EAAE;;AAEF;AACA;;;;;;ACtWa;AACb,mBAAmB,mBAAO,CAAC,GAAa;AACxC,OAAO,0CAA0C,EAAE,mBAAO,CAAC,GAAgB;AAC3E;AACA;AACA;AACA,EAAE,EAAE,mBAAO,CAAC,GAAQ;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0CAA0C;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2CAA2C,eAAe;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C,eAAe;AACzD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,QAAQ,mBAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA,yCAAyC;AACzC;AACA;AACA;;AAEA;AACA,aAAa,mBAAO,CAAC,GAAa;AAClC;;AAEA;AACA;;AAEA;;AAEA,uBAAuB;AACvB;AACA,sBAAsB,2CAA2C,GAAG;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;;;;;ACxOD;AACb,0CAA0C,EAAE,GAAG,QAAQ,IAAI,EAAE,WAAW,EAAE,UAAU,uEAAuE;AAC3J;AACA;AACA,qCAAqC,EAAE,GAAG,QAAQ,IAAI,EAAE,WAAW,EAAE;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ,6DAA6D,OAAO,aAAa,KAAK;AACtF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C,UAAU;AACrD;;AAEA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,gBAAgB,mCAAmC;AACnD,IAAI;AACJ;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,EAAE;;AAEF;;AAEA;AACA,sDAAsD,eAAe,iBAAiB,gCAAgC,IAAI;AAC1H;AACA;;AAEA;AACA;;;;;;ACrIa;;AAEb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;;;;;;ACtCa;AACb,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;;;;;ACPa;AACb,cAAc,mBAAO,CAAC,GAAO;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;;;;;;ACnBD;AACb,qBAAqB,mBAAO,CAAC,GAAe;;AAE5C;AACA;AACA,kBAAkB,cAAc;AAChC;;AAEA;AACA;AACA,kBAAkB,aAAa,EAAE,EAAE,KAAK;AACxC;;AAEA;AACA;AACA,kBAAkB,aAAa,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB,SAAS;AAC7B,qBAAqB,SAAS;AAC9B;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;ACpKY;AACb,2BAA2B,mBAAO,CAAC,GAAsB;AACzD,mBAAmB,mBAAO,CAAC,GAAa;AACxC,oBAAoB,8CAAgC;;AAEpD,iBAAiB,mBAAO,CAAC,GAAgB;;AAEzC;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8CAA8C;;AAE9C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,4BAA4B;;AAE5B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,aAAa;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAiC,WAAW,IAAI,UAAU;AAC1D;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,oBAAoB;AACrC,6CAA6C;AAC7C;AACA;;AAEA;AACA;;AAEA;;AAEA,cAAc,YAAY;AAC1B,4BAA4B;AAC5B,yBAAsB,GAAG,cAAc,EAAE;;;;;;ACnO5B;AACb,uCAAuC,EAAE,UAAU,EAAE,UAAU,uEAAuE;AACtI;AACA;AACA,kCAAkC,EAAE,UAAU,EAAE;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ,6DAA6D,OAAO,aAAa,KAAK;AACtF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4CAA4C,UAAU;AACtD;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,gBAAgB,mCAAmC;AACnD,IAAI;AACJ;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,EAAE;;AAEF;;AAEA;AACA,sDAAsD,eAAe,iBAAiB,gCAAgC,IAAI;AAC1H;AACA;;AAEA;AACA;;;;;;AC/Ha;AACb,WAAW,mBAAO,CAAC,GAAI;AACvB,gBAAgB,mBAAO,CAAC,GAAU;;AAElC;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iCAAiC,GAAG;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;;;;;;AClIa;AACb,iBAAiB,mBAAO,CAAC,GAAW;;AAEpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS,6BAA6B;;AAEtC;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,uDAAuD;AACvD;;AAEA;AACA;;AAEA,cAAc;AACd;AACA,yBAAsB;;AAEtB,uBAAuB;;AAEvB,uBAAuB;AACvB;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,6BAA6B;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU,SAAS;;AAEnB,YAAY,mBAAmB;;AAE/B;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU,SAAS;AACnB,YAAY,6BAA6B;AACzC;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,QAAQ;AAClB;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU,SAAS;AACnB,YAAY,kBAAkB;AAC9B,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,2DAA2D,gBAAgB;AAC3E,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;;;;;;AClSd;AACb,aAAa,mBAAO,CAAC,GAAO;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA,yBAAsB;;;;;;ACdT;;AAEb;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA,QAAQ,aAAa;;AAErB;AACA,sFAAsF,YAAY,MAAM,mBAAmB;AAC3H;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED,cAAc;AACd;AACA,yBAAsB;;;;;;ACvET;AACb,cAAc;AACd,mCAAmC;;AAEnC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;;;;;ACda;AACb,uBAAuB,mBAAO,CAAC,GAAiB;;AAEhD,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,yGAAyG,YAAY,MAAM,mBAAmB;AAC9I;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA,kBAAkB,iBAAiB;AACnC;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;;;;;;AChFa;;AAEb,iBAAiB,mBAAO,CAAC,GAAW;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA,uFAAuF,cAAc;AACrG;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,cAAc;AACd;AACA,yBAAsB;;AAEtB,2BAA2B;;;;;;ACxDd;AACb,gBAAgB,mBAAO,CAAC,GAAU;AAClC,iBAAiB,mBAAO,CAAC,GAA+B;AACxD,OAAO,0BAA0B,EAAE,mBAAO,CAAC,GAAmB;AAC9D,OAAO,kBAAkB,EAAE,mBAAO,CAAC,GAAmB;;AAEtD;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK,QAAQ,sDAAsD;AACnE,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,cAAc;;;;;;ACrDD;AACb,kBAAkB;AAClB,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,uBAAuB;AACvB,kBAAkB;;;;;;AC7DL;;AAEb;AACA;AACA;;AAEA;AACA;AACA,yCAAyC,EAAE;AAC3C;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc;AACd,oBAAoB;AACpB,oBAAoB;;;;;;ACnBP;;AAEb,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd;AACA,yBAAsB;;;;;;ACfT;;AAEb;;AAEA;AACA;AACA,4BAA4B,EAAE,0DAA0D,IAAI;;AAE5F;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA,+BAA+B,IAAI;AACnC;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,EAAE,cAAc;AAChB;AACA,EAAE,cAAc;;AAEhB,oBAAoB;AACpB,oBAAoB;;;;;;AC1EP;AACb,OAAO,WAAW,EAAE,mBAAO,CAAC,GAAM;AAClC,WAAW,mBAAO,CAAC,GAAI;;AAEvB;AACA;AACA,gDAAgD,gBAAgB;AAChE;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD,gBAAgB;AAChE;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc;AACd,mBAAmB;AACnB,iBAAiB;AACjB,kBAAkB;AAClB,uBAAuB;AACvB,qBAAqB;;;;;AC1CrB,qBAAqB;AACrB;AACA;AACA,6FAA6F;;AAE7F;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd,2BAA2B;;;;;;AC1Ed;;AAEb,yCAA2C;;;;;;ACF9B;;AAEb,aAAa,mBAAO,CAAC,CAAM;AAC3B;AACA,0BAA0B,UAAU;;AAEpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,cAAc;AACvC,6BAA6B,cAAc;AAC3C,sBAAsB,aAAa,IAAI,EAAE,WAAW;AACpD,qBAAqB,YAAY;AACjC,sBAAsB,aAAa,EAAE,WAAW;AAChD,2BAA2B,aAAa,IAAI,EAAE,WAAW;AACzD,4BAA4B,WAAW;AACvC,2BAA2B,cAAc;AACzC,gBAAgB,MAAM;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,UAAU;AAC/B;AACA,WAAW,aAAa;AACxB,iBAAiB,aAAa,IAAI,MAAM,UAAU;AAClD,gBAAgB,YAAY;AAC5B,uBAAuB,UAAU,IAAI,aAAa,IAAI,MAAM,UAAU;AACtE,sBAAsB,aAAa,IAAI,MAAM,UAAU;AACvD,uBAAuB,aAAa,IAAI,MAAM,UAAU;AACxD,sBAAsB,UAAU;AAChC,yBAAyB,UAAU;AACnC,qBAAqB,UAAU;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,aAAa,EAAE;AAC/C;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC,6CAA6C;AAC7C,kCAAkC;AAClC;AACA,0CAA0C;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,+CAA+C,WAAW,IAAI;AAC3E,aAAa,yCAAyC;AACtD,aAAa,wCAAwC;AACrD,aAAa,wCAAwC;AACrD,aAAa;AACb;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;ACvLa;;AAEb,kBAAkB,mBAAO,CAAC,GAAa;AACvC,cAAc,mBAAO,CAAC,GAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,eAAe;;AAEnC;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oBAAoB,KAAK,KAAK,KAAK,eAAe,KAAK;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,wBAAwB;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,kBAAkB,mBAAmB;AACrC,wBAAwB,mBAAmB;AAC3C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,oBAAoB;AACtC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,gDAAgD;;AAE1D,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;;AAEA;AACA,eAAe;AACf;AACA;;AAEA,WAAW;AACX;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,iBAAiB;AACjB;;AAEA;AACA;AACA,2CAA2C,IAAI,oCAAoC,IAAI;AACvF;;AAEA,gBAAgB;AAChB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA,eAAe,QAAQ,QAAQ,aAAa,EAAE,oCAAoC;AAClF;;AAEA;AACA;AACA;;AAEA;AACA,eAAe,KAAK;AACpB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,mDAAmD;AAC9D,WAAW,wDAAwD;AACnE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,+DAA+D,oBAAoB;AACnF;AACA;;AAEA;AACA;AACA;;AAEA,0CAA0C,mBAAmB;AAC7D;AACA;AACA;AACA;;AAEA;AACA;;AAEA,aAAa,iDAAiD;AAC9D;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sCAAsC,YAAY;AAClD;;AAEA;AACA,wEAAwE,OAAO;AAC/E;AACA,sDAAsD,OAAO;AAC7D;AACA;AACA,yCAAyC,8BAA8B;;AAEvE,mCAAmC,WAAW,GAAG,YAAY;AAC7D;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,6CAA6C;AACxD;AACA;;AAEA;AACA;AACA;;AAEA,oDAAoD;AACpD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,EAAE;AAC9B,KAAK;;AAEL;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,qCAAqC;AACrC;AACA;;AAEA;AACA;AACA,eAAe,qBAAqB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,eAAe,qBAAqB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,MAAM;AAC3B;;AAEA;AACA,qBAAqB,MAAM;AAC3B;;AAEA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,qBAAqB;AACpC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,sBAAsB;AACnC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,aAAa,0DAA0D;AACvE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,MAAM;AAC3B,QAAQ;AACR;AACA;;AAEA,aAAa,wBAAwB;AACrC;AACA;;AAEA;AACA;AACA,eAAe,kCAAkC,MAAM,GAAG;AAC1D;AACA;;AAEA;AACA;AACA;AACA;;AAEA,eAAe,kCAAkC,MAAM,GAAG;AAC1D;AACA;;AAEA;;AAEA;AACA;AACA,oBAAoB,MAAM;AAC1B;;AAEA;AACA,eAAe,OAAO;;AAEtB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,QAAQ,EAAE,QAAQ,GAAG,WAAW;AACvD;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB;;AAEA;AACA,eAAe,oCAAoC;AACnD;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;;AAEA,aAAa,8BAA8B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,aAAa,8BAA8B;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA,aAAa,6CAA6C;AAC1D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,0CAA0C;AACzD;AACA;;AAEA,aAAa,yCAAyC;AACtD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB,MAAM;AAC9B;;AAEA,eAAe,6BAA6B;AAC5C;AACA;;AAEA;AACA,eAAe,4CAA4C;AAC3D;AACA;;AAEA,aAAa,qCAAqC;AAClD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,2CAA2C;AAC1D;AACA;;AAEA;AACA,eAAe,qBAAqB;AACpC;AACA;;AAEA,aAAa,mCAAmC;AAChD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe,8CAA8C;AAC7D;AACA;;AAEA,aAAa,qBAAqB;AAClC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,MAAM;AAC3B;;AAEA;AACA;AACA;AACA;AACA;;AAEA,aAAa,qBAAqB;AAClC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,eAAe,iCAAiC;AAChD;AACA;;AAEA;AACA;AACA;AACA,eAAe,iCAAiC;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B,aAAa;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA6B,aAAa;;AAE1C;AACA,yBAAyB,eAAe,EAAE,cAAc,GAAG,cAAc,EAAE,IAAI;AAC/E;;AAEA;AACA;;AAEA;;AAEA,eAAe,uCAAuC;AACtD;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,cAAc,GAAG,eAAe,EAAE,cAAc;AAC9E;AACA;AACA;AACA,eAAe,uCAAuC;AACtD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ;AACR;AACA;;AAEA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,qFAAqF;AACrF,oDAAoD;AACpD;AACA;;AAEA;AACA,WAAW,2CAA2C,cAAc,IAAI;AACxE;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,2CAA2C,IAAI,oCAAoC,IAAI;AACvF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA,eAAe,KAAK;AACpB;;AAEA;AACA;AACA,eAAe,QAAQ,QAAQ,aAAa,EAAE,oCAAoC;AAClF;;AAEA;AACA;AACA;AACA,kBAAkB,MAAM,EAAE,SAAS,EAAE,KAAK;;AAE1C;AACA,kBAAkB,YAAY,EAAE,SAAS,EAAE,KAAK;;AAEhD;AACA,kBAAkB,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK;;AAE/D;AACA,kBAAkB,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK;;AAE5E;AACA;;AAEA;AACA,qBAAqB,MAAM,EAAE,eAAe,EAAE,cAAc,IAAI,SAAS,EAAE,SAAS,EAAE,KAAK;;AAE3F;AACA,qBAAqB,MAAM,EAAE,eAAe,EAAE,cAAc,IAAI,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK;;AAEhH;AACA,qBAAqB,MAAM,EAAE,eAAe,EAAE,cAAc,IAAI,YAAY,EAAE,SAAS,EAAE,KAAK;;AAE9F;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,cAAc;AAC/B;;AAEA;AACA;;AAEA,cAAc;;;;;;AC/2CD;;AAEb,aAAa,mBAAO,CAAC,CAAM;AAC3B,aAAa,mBAAO,CAAC,GAAQ;AAC7B,cAAc,mBAAO,CAAC,GAAS;AAC/B,cAAc,mBAAO,CAAC,GAAS;AAC/B,kBAAkB,mBAAO,CAAC,GAAa;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,gCAAgC;AAChC;AACA;AACA,WAAW,cAAc;AACzB,WAAW,SAAS;AACpB,YAAY,WAAW;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA,YAAY,yBAAyB,0CAA0C,aAAa;AAC5F,qBAAqB;;AAErB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;;AAEA,2CAA2C,cAAc,IAAI;AAC7D;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,WAAW,QAAQ;AACnB,WAAW,eAAe;AAC1B,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D,iDAAiD;AACjD;AACA,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB,YAAY,SAAS;AACrB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA,0BAA0B,8BAA8B;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,QAAQ,KAAK,aAAa,GAAG,OAAO;AACtD;AACA,oBAAoB,OAAO;AAC3B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY,QAAQ;AACpB;AACA;;AAEA,uCAAuC;AACvC;AACA;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;;AAEA;AACA;AACA;;AAEA,cAAc;;;;;;ACrVD;;AAEb,cAAc,mBAAO,CAAC,GAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,EAAE,EAAE,mBAAO,CAAC,GAAa;;AAEzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,sBAAsB,sBAAsB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;;;;;;ACtYD;;AAEb,aAAa,mBAAO,CAAC,CAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAE,mBAAO,CAAC,GAAa;;AAEzB,gBAAgB;AAChB,qBAAqB;AACrB,mBAAmB,8BAA8B,qBAAqB;AACtE,mBAAmB;AACnB,sBAAsB;;AAEtB,yBAAyB;AACzB;AACA;AACA,GAAG;AACH;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA,sCAAsC,kBAAkB;AACxD,YAAY,oBAAoB,IAAI,iBAAiB;AACrD;;AAEA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,qBAAqB,cAAc;AACrD;AACA;;AAEA,kBAAkB,QAAQ,KAAK,MAAM,GAAG,OAAO;AAC/C;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;;;;;;AC/Da;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ,IAAI;AACJ;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ,IAAI;AACJ;AACA;;AAEA;AACA,EAAE;AACF;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,sFAAsF,kCAAkC;AACxH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,4BAA4B;AAC5B;AACA;AACA;;AAEA;AACA;;;;;ACnEA,WAAW,mBAAO,CAAC,GAAM;AACzB,UAAU,mBAAO,CAAC,GAAe;AACjC,SAAS,mBAAO,CAAC,GAAI;;AAErB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,eAAe,qCAAqC;AACpD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA,cAAc;;;;;ACjFd;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA,qCAAqC,WAAW;;;;;;ACRnC;AACb,OAAO,WAAW,EAAE,mBAAO,CAAC,GAAM;AAClC,WAAW,mBAAO,CAAC,GAAI;AACvB,aAAa,mBAAO,CAAC,CAAM;AAC3B,kBAAkB,mBAAO,CAAC,GAAY;;AAEtC;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE,mBAAO,CAAC,GAAwB;AAClC;;AAEA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE,mBAAO,CAAC,GAAwB;AAClC;;AAEA;AACA;;;;;ACxCA,YAAY,mBAAO,CAAC,GAAa;AACjC,aAAa,mBAAO,CAAC,GAAY;AACjC,eAAe,mBAAO,CAAC,GAAe;AACtC,aAAa,mBAAO,CAAC,GAAY;;AAEjC,cAAc;;;;;ACLd,SAAS,mBAAO,CAAC,GAAI;AACrB,iBAAiB,mBAAO,CAAC,GAAW;AACpC,WAAW,mBAAO,CAAC,CAAM;AACzB,aAAa,mBAAO,CAAC,GAAU;AAC/B,uBAAuB,mBAAO,CAAC,GAAsB;AACrD,uBAAuB,mBAAO,CAAC,GAAqB;AACpD,aAAa,mBAAO,CAAC,GAAgB;;AAErC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,iBAAiB;AACjB,cAAc;AACd;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,iBAAiB;AACjB,cAAc;AACd;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,yBAAyB;AACzB;AACA;;AAEA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;;;;;AC5UA,cAAc;AACd;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;;;;;;ACPa;;AAEb,mBAAmB,mBAAO,CAAC,GAAgB;AAC3C,WAAW,mBAAO,CAAC,GAAa;;AAEhC;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,cAAc;;;;;;ACXD;;AAEb,SAAS,mBAAO,CAAC,GAAI;;AAErB;;AAEA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6FAA6F;AAC7F;;AAEA;AACA;;;;;ACvBA,mBAAmB,mBAAO,CAAC,GAAgB;;AAE3C,cAAc;AACd;AACA;;;;;ACJA,WAAW,mBAAO,CAAC,CAAM;AACzB,0BAA0B,mBAAO,CAAC,GAAY,GAAG;;AAEjD;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;AAEA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,4CAA4C;AACtE;AACA;AACA;;AAEA;AACA;AACA;;;;;AC5CA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;ACTA,aAAa,mBAAO,CAAC,GAAgB;AACrC,SAAS,mBAAO,CAAC,GAAI;AACrB,WAAW,mBAAO,CAAC,CAAM;AACzB,iBAAiB,mBAAO,CAAC,GAAW;AACpC,aAAa,mBAAO,CAAC,GAAU;AAC/B,uBAAuB,mBAAO,CAAC,GAAsB;AACrD,uBAAuB,mBAAO,CAAC,GAAqB;;AAEpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC,uBAAuB;AAC9D,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,uBAAuB;AAC7D,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,6DAA6D;AAC7D;;AAEA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA,+DAA+D;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;;AAEA;AACA,kCAAkC;AAClC;;AAEA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnNa;AACb,gBAAgB,mBAAO,CAAC,GAAS;AACjC,mBAAmB,mBAAO,CAAC,GAAa;;AAExC,cAAc;AACd;AACA;AACA,EAAE,GAAG,iBAAiB;AACtB,CAAC;;;;;;ACRW;;AAEZ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;;;;AChCd;AACA,cAAc;;AAEd,uBAAuB,mBAAO,CAAC,GAAiB;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,0CAA0C,wBAAwB;AAClE,KAAK;AACL,IAAI;AACJ;AACA;AACA,oCAAoC,sBAAsB;AAC1D,KAAK;AACL;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClDA;AACmD;AACiC;AACnB;AACP;AACb;AACgB;AACJ;AACF;AACS;AACG;AACA;AAC2B;AACE;AAC/C;AACM;AACJ;AACsB;AAC7B;AACA;AACQ;AACQ;AACsB;AAC1B;AAC0B;AACR;AACd;AACM;AACQ;AACN;AACd;AACF;AACA;AACM;AACR;AACU;AACc;AAChB;AACV;AACU;AACN;AACA;AACN;AAC8B;AACxB;AACQ;AACV;AACE;AACU;AACV;AACA;AACJ;AACW;AACP;AACA;AACT;AAC3C;;;;;;;;;;;;;ACxDA;AACiC;AACG;AACU;AAC9C;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6DAAkB;AACrC;AACA;AACA;AACA;AACA,mBAAmB,6DAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6CAAO;AACe;AACxB;;;;;;;;;;;;;AC9CA;AACiC;AACG;AACqC;AACzE;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6CAAO;AACkB;AAC3B;;;;;;;;;;;;AC1CA;AACiC;AACS;AAC1C;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACe;AAC3B;;;;;;;;;;;;;;AC3BA;AAC2C;AACN;AACgB;AAC9C;AACP;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kDAAE;AACzB;AACA,uBAAuB,kEAAU;AACjC;AACA,uBAAuB,wDAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;;;;;;;;;;;;;;;AC3EA;AACuD;AACJ;AACmB;AAC1B;AACV;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gEAAY;AAC/B;AACA;AACA;AACA;AACA,qCAAqC,iFAA4C;AACjF;AACA;AACA;AACA,YAAY,iFAA4C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iFAA4C;AAC5D;AACA;AACA;AACA,gBAAgB,oEAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,yBAAyB,0DAAiB;AAC1C;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,mBAAmB,mBAAmB,qBAAqB,gBAAgB,wBAAwB;AAC9I,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB;AACA;AACA,sBAAsB,mDAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnHA;AACkC;AACuB;AAClD;AACP;AACA,8BAA8B;AAC9B;AACA,YAAY,iFAA4C;AACxD;AACA;AACA;AACA,YAAY,sEAAe;AAC3B;AACA,KAAK;AACL;AACA;AACA;;;;;;;;;;;;AChBA;AACiC;AACS;AAC1C;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACe;AAC3B;;;;;;;;;;;;;;;;;ACpBA;AACiC;AACG;AACM;AACI;AACc;AACa;AACb;AAC5D;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA,2BAA2B,6DAAkB;AAC7C;AACA;AACA;AACA,+BAA+B,qEAAmB;AAClD;AACA;AACA,4CAA4C,qEAAmB;AAC/D;AACA;AACA,4BAA4B,+BAA+B;AAC3D;AACA;AACA;AACA;AACA,4BAA4B,+BAA+B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,mDAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6CAAO;AACgB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,CAAC;AACoB;AACrB;;;;;;;;;;;;;;;;;;;AClBA;AACiC;AACS;AACA;AACI;AAC2B;AACb;AACyB;AACrF;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACiB;AAC7B;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uEAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA,mBAAmB,6DAAkB;AACrC;AACA;AACA;AACA,mBAAmB,6DAAkB;AACrC;AACA;AACA;AACA,uBAAuB,qEAAmB;AAC1C;AACA;AACA;AACA,6BAA6B,mDAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACO;AACnB;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6DAAkB;AACrC;AACA;AACA;AACA,CAAC;AAC2B;AAC5B;;;;;;;;;;;;AC7JA;AACiC;AACa;AAC9C;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uDAAY;AACiB;AAC/B;;;;;;;;;;;;;;;;;;AC/BA;AACiC;AACc;AACK;AACN;AACuC;AACnD;AACuB;AACzD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,4CAAa;AACjD;AACA;AACA;AACA,wCAAwC,4CAAa;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAkB,kBAAkB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uDAAY;AACQ;AACtB;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4CAAa;AAChD;AACA,oBAAoB,4DAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iFAA4C;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,iFAA4C;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sEAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sEAAe;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD,qBAAqB,iFAA4C;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iFAA4C;AAC5D;AACA;AACA;AACA,gBAAgB,sEAAe;AAC/B;AACA;AACA;AACA;AACA,aAAa,iFAA4C;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iFAA4C;AAC5D;AACA;AACA;AACA;AACA;AACA,gBAAgB,sEAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;;;;;;;;;;;;;;ACxOA;AACyC;AACE;AACI;AACkB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iCAAiC;AACjE;AACA;AACA;AACA;AACA,YAAY,4DAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,0EAAmB;AACzD;AACA;AACA,YAAY,sDAAO;AACnB;AACA;AACA;AACA;AACA,oBAAoB,wDAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA,yCAAyC,0EAAmB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0EAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;AACuB;AACxB;AACA,gDAAgD,mCAAmC,0EAAmB,wBAAwB;AAC9H;AACA;;;;;;;;;;AC3IA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;;;;;;AClBA;AACiC;AACS;AACA;AACO;AACjD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACqB;AACjC;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACsB;AAClC;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACqB;AACjC;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACsB;AAC3B;AACP;AACA;AACA;AACA,0BAA0B,mDAAU;AACpC;AACA;AACA;AACA;AACA,uBAAuB,8DAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnGA;AACiC;AACc;AACJ;AACA;AACI;AACyB;AACxE;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uDAAY;AAC5D;AACA;AACA;AACA;AACA,6BAA6B,6DAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAmB;AAClC;AACA;AACA,CAAC,CAAC,mDAAU;AACqB;AAC1B;AACP;AACA;AACA,oBAAoB,aAAa;AACjC,qBAAqB,0BAA0B;AAC/C,oBAAoB,6BAA6B;AACjD,uBAAuB,6BAA6B;AACpD,sBAAsB,oCAAoC;AAC1D,uBAAuB,qDAAqD;AAC5E,sBAAsB,oCAAoC;AAC1D,mBAAmB,iCAAiC;AACpD,oBAAoB;AACpB;AACA,CAAC;AACD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uDAAiB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACZ;;;;;;;;;;;;;;;;AC7IA;AAC2C;AACI;AACR;AACiB;AACd;AACQ;AAC3C;AACP;AACA,YAAY,8DAAW;AACvB;AACA;AACA;AACA;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA,sFAAsF,mDAAG,mBAAmB,OAAO,sDAAO,qEAAqE;AAC/L;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mDAAU;AAC7B;AACA;AACA,kCAAkC,uDAAY;AAC9C;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oEAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uDAAY;AACnD;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA,4DAA4D,gCAAgC;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACxGA;AAC2C;AACI;AACR;AACiB;AACN;AACR;AACnC;AACP;AACA,YAAY,8DAAW;AACvB;AACA;AACA;AACA;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA,0FAA0F,mDAAG,mBAAmB,OAAO,sDAAO,qEAAqE;AACnM;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mDAAU;AAC7B;AACA;AACA;AACA;AACA,mDAAmD,uDAAY;AAC/D;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oEAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,0DAA0D;AACnH;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uDAAY;AACnD;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA,iEAAiE,4BAA4B;AAC7F;AACA;AACA;AACA,gEAAgE,gCAAgC;AAChG;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,4BAA4B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AChHA;AACiC;AACiB;AACR;AACW;AACS;AACtB;AACxC;AACO;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA,QAAQ,8DAAW;AACnB;AACA;AACA;AACA;AACA;AACA,oCAAoC,sDAAO;AAC3C;AACA;AACA,WAAW,qDAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA,yBAAyB,0EAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6DAAe;AACkB;AACnC;;;;;;;;;;;;ACpGA;AAC0B;AACyB;AAC5C;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,WAAW,+DAAS,GAAG,yCAAQ;AAC/B;AACA;;;;;;;;;;;;;ACVA;AAC2C;AACb;AACE;AACzB;AACP,eAAe,mDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2CAAI,UAAU,6CAAK;AAChD;AACA,KAAK;AACL;AACA;;;;;;;;;;;;AClBA;AAC2C;AACpC,8BAA8B,mDAAU,yBAAyB,+BAA+B;AAChG;AACP;AACA;AACA;AACA,eAAe,mDAAU,yBAAyB,wCAAwC,+BAA+B,IAAI;AAC7H;AACA;;;;;;;;;;;;;;;ACTA;AAC2C;AACD;AACH;AACK;AACd;AACvB;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA,YAAY,sDAAO;AACnB;AACA;AACA,YAAY,wDAAQ;AACpB;AACA,8DAA8D,sBAAsB;AACpF;AACA;AACA;AACA;AACA,2CAA2C,sDAAO;AAClD,oDAAoD,mDAAG,mBAAmB,8CAA8C;AACxH;AACA;AACA;AACA;AACA,eAAe,mDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2CAAI;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,wCAAwC,+BAA+B;AACvE;AACA;AACA;AACA;AACA;AACA,wEAAwE,2CAA2C,IAAI;AACvH;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,wBAAwB,SAAS;AACjC;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;ACpEA;AAC2C;AACO;AACC;AAC5C;AACP;AACA,6BAA6B,mDAAU;AACvC;AACA;AACA,mBAAmB,mDAAU,CAAC,8DAAW;AACzC;AACA;AACA,eAAe,+DAAS;AACxB;AACA;AACA;;;;;;;;;;;;;ACfA;AAC2C;AACiB;AACD;AACpD;AACP;AACA,mBAAmB,mDAAU,CAAC,wEAAgB;AAC9C;AACA;AACA,eAAe,uEAAa;AAC5B;AACA;AACA;;;;;;;;;;;;;;ACZA;AAC2C;AACD;AACM;AACT;AACvC,4CAA4C,mCAAmC;AACxE;AACP,QAAQ,4DAAU;AAClB;AACA;AACA;AACA;AACA,0DAA0D,mDAAG,mBAAmB,OAAO,sDAAO,qEAAqE;AACnK;AACA,eAAe,mDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC9DA;AAC2C;AACD;AACM;AACT;AAChC;AACP;AACA,gEAAgE,mDAAG,mBAAmB,OAAO,sDAAO,qEAAqE;AACzK;AACA,eAAe,mDAAU;AACzB;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,4DAAU;AACvB;AACA;AACA,6BAA6B;AAC7B,KAAK;AACL;AACA;;;;;;;;;;;;;AC/BA;AAC2C;AACC;AACM;AAC3C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,oDAAQ;AAC3D;AACA;AACA,yDAAyD,8DAAW;AACpE;AACA,yBAAyB,oDAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC5HA;AACgC;AACA;AACzB;AACP;AACA,qBAAqB,yCAAK;AAC1B;AACA;AACA,sBAAsB,yCAAK;AAC3B;AACA,WAAW,6CAAK,eAAe,gDAAgD;AAC/E;AACA;;;;;;;;;;;;;ACZA;AAC2C;AACA;AACG;AACvC;AACP;AACA;AACA;AACA;AACA,oBAAoB,mDAAK;AACzB;AACA,SAAS,0DAAS;AAClB;AACA;AACA;AACA,oBAAoB,mDAAK;AACzB;AACA,eAAe,mDAAU;AACzB,8DAA8D,oDAAoD;AAClH;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,oBAAoB,8DAA8D;AAClF;AACA;;;;;;;;;;;;;;AC3BA;AAC2C;AACO;AACD;AACT;AACjC;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF,mDAAU;AAC9F;AACA;AACA,WAAW,6DAAQ,aAAa,qDAAS;AACzC;AACA;;;;;;;;;;;;;AC3BA;AAC2C;AACP;AAC7B,8BAA8B,mDAAU,CAAC,4CAAI;AAC7C;AACP;AACA;AACA;;;;;;;;;;;;;ACPA;AACkD;AACV;AACmB;AACpD;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA,QAAQ,8DAAW;AACnB;AACA,eAAe,uEAAa;AAC5B;AACA;AACA,eAAe,qDAAS;AACxB;AACA;AACA;;;;;;;;;;;;;;AClBA;AAC2C;AACb;AACY;AACV;AACzB;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA,eAAe,yCAAK;AACpB;AACA;AACA,gCAAgC,sDAAO;AACvC;AACA;AACA,eAAe,mDAAU;AACzB,oCAAoC;AACpC,eAAe,2CAAI;AACnB,qCAAqC,yBAAyB;AAC9D;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;;;;;;;;;;;;;AC1BA;AAC2C;AACI;AACxC;AACP;AACA,mBAAmB,mDAAU;AAC7B;AACA,4BAA4B,uCAAuC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,mDAAU;AAC7B;AACA,mCAAmC,uDAAY;AAC/C,+DAA+D,oFAAoF;AACnJ;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,6CAA6C,4FAA4F;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACtCA;AACkC;AACgB;AACL;AACF;AACpC;AACP;AACA,QAAQ,yDAAM,yBAAyB,mDAAU,CAAC,8DAAW;AAC7D,QAAQ,yDAAM,CAAC,8CAAG,0BAA0B,mDAAU,CAAC,8DAAW;AAClE;AACA;AACA;;;;;;;;;;;;;;;;;ACXA;AACiC;AACS;AACF;AACa;AACS;AACvD;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA,YAAY,sDAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,qDAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2BAA2B;AACvD;AACA,mCAAmC,0EAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+BAA+B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6DAAe;AACS;AAC1B;;;;;;;;;;;;AC7EA;AAC2C;AACpC;AACP;AACA;AACA;AACA,eAAe,mDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC/CA;AAC2C;AACpC;AACP;AACA,mBAAmB,mDAAU,yBAAyB,iCAAiC;AACvF;AACA;AACA,mBAAmB,mDAAU,yBAAyB,yCAAyC,sCAAsC,IAAI;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACdA;AAC2C;AACA;AACG;AACI;AAC3C;AACP;AACA;AACA;AACA;AACA,QAAQ,0DAAS;AACjB;AACA;AACA,aAAa,8DAAW;AACxB;AACA;AACA,SAAS,8DAAW;AACpB,oBAAoB,mDAAK;AACzB;AACA,eAAe,mDAAU;AACzB,kBAAkB,0DAAS;AAC3B;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxCA;AAC2C;AACb;AACE;AACzB;AACP,eAAe,mDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,2CAAI,WAAW,yCAAK;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;;;;;;AChCA;AACiC;AACO;AACE;AACC;AACkC;AACoB;AAC1F;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,qDAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sDAAO;AACnB;AACA;AACA,8BAA8B,+DAAe;AAC7C,oDAAoD,+DAAe;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACa;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,+DAAe;AACjD;AACA;AACA;AACA;AACA;AACA,mCAAmC,+BAA+B,IAAI;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,+DAAe;AAC/C;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAc,sBAAsB,kEAAqB;AACxE;AACA;AACA,CAAC,CAAC,kEAAqB;AACvB;;;;;;;;;;;;ACxNA;AACiC;AACgE;AAC1F;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,kEAAqB;AAC3D;AACA,oCAAoC,+DAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,kEAAqB;AACvB;;;;;;;;;;;AChDA;AACsC;AAC/B;AACP,WAAW,mDAAQ;AACnB;AACA;;;;;;;;;;;;ACLA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACZ;;;;;;;;;;;;;;;ACtCA;AACiC;AACU;AACH;AACG;AACI;AACxC;AACP;AACA,oBAAoB,mDAAK;AACzB;AACA,wBAAwB,oDAAM;AAC9B;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kEAAuB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sEAA2B;AAC7D;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;;;;AC5FA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACZ;;;;;;;;;;;;;AC1CA;AACiC;AACU;AACI;AACxC;AACP,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA,sBAAsB,uDAAY;AAClC;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACZ;;;;;;;;;;;;;;;;ACzBA;AACgD;AACd;AACJ;AACoB;AACJ;AACF;AACrC;AACP;AACA,+BAA+B,+BAA+B,+CAAM,mBAAmB,iCAAiC,IAAI,oDAAQ,EAAE,2CAAI,uBAAuB,+DAAc,iBAAiB,2DAAY,eAAe,WAAW,wDAAU,KAAK;AACrP;AACA;;;;;;;;;;;;;;;;ACXA;AACiC;AACU;AACI;AACJ;AACN;AAC9B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,6CAAO;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACZ;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACZ;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uDAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACiB;AAC7B;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uDAAY;AACd;;;;;;;;;;;;;ACrLA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACZ;;;;;;;;;;;;AC5CA;AACiC;AACU;AACpC;AACP,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACZ;;;;;;;;;;;;AC3BA;AACsC;AACM;AACrC;AACP;AACA;AACA;AACA,WAAW,mDAAQ,CAAC,oDAAQ;AAC5B;AACA;;;;;;;;;;;;;;;;;ACTA;AACiC;AACL;AACc;AACuD;AAC1F;AACP;AACA;AACA;AACA;AACA,mCAAmC,8CAA8C,OAAO,sDAAI,qBAAqB,yCAAG,oBAAoB,qCAAqC,KAAK;AAClL;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kEAAqB;AACvD;AACA;AACA,gCAAgC,+DAAc;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,kEAAqB;AACO;AACvB;AACP;;;;;;;;;;;;;;;;ACpGA;AACiC;AACU;AACI;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kEAAuB;AACpD;AACA;AACA,6BAA6B,mEAAwB;AACrD;AACA;AACA;AACA,6BAA6B,sEAA2B;AACxD;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B;;;;;;;;;;;;ACpEA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACZ;;;;;;;;;;;;;;ACzDA;AACiC;AACU;AAC+B;AAC9B;AACrC;AACP;AACA;AACA,mBAAmB,wDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACZ;;;;;;;;;;;;;AChDA;AACiC;AACe;AACL;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mDAAU;AACZ;AACA,eAAe,wDAAU;AACzB;AACA;;;;;;;;;;;;;;ACrDA;AAC2C;AACS;AACR;AACU;AAC/C;AACP;AACA,oBAAoB,mDAAK;AACzB;AACA,WAAW,yDAAW,MAAM,kEAAU,KAAK,4DAAY;AACvD;AACA;;;;;;;;;;;;;;ACXA;AACiC;AACU;AACH;AACyD;AAC1F;AACP;AACA,oBAAoB,mDAAK;AACzB;AACA;AACA,8BAA8B,oDAAM;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+DAAc,qBAAqB,kEAAqB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,kEAAqB;AACvB;;;;;;;;;;;;ACjEA;AAC2C;AACI;AACxC;AACP,eAAe,mDAAU;AACzB,sBAAsB,uDAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;ACpBA;AAC2C;AACI;AACkB;AAC1D;AACP;AACA;AACA;AACA,eAAe,mDAAU;AACzB,sBAAsB,uDAAY;AAClC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,6BAA6B,sDAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;AC7CA;AAC2C;AACI;AACwB;AAChE;AACP,eAAe,mDAAU;AACzB,sBAAsB,uDAAY;AAClC;AACA,mCAAmC,0DAAiB;AACpD;AACA,yCAAyC,yCAAyC,gCAAgC,KAAK;AACvH,wCAAwC,yCAAyC,+BAA+B,KAAK;AACrH,wCAAwC,yCAAyC,+BAA+B,KAAK;AACrH,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;AACA;;;;;;;;;;;;AClBA;AAC2C;AACI;AACxC;AACP,eAAe,mDAAU;AACzB,sBAAsB,uDAAY;AAClC;AACA;AACA;AACA;AACA,6DAA6D,+BAA+B;AAC5F,iBAAiB;AACjB,aAAa;AACb,yDAAyD,+BAA+B;AACxF,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;;;;;;ACnBA;AAC0D;AACN;AACJ;AACM;AACY;AACpB;AACI;AACF;AACzC;AACP;AACA,YAAY,8EAAmB;AAC/B,mBAAmB,uEAAkB;AACrC;AACA,iBAAiB,0DAAS;AAC1B,mBAAmB,iEAAe;AAClC;AACA,iBAAiB,8DAAW;AAC5B,mBAAmB,6DAAa;AAChC;AACA,iBAAiB,4DAAU;AAC3B,mBAAmB,mEAAgB;AACnC;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1BA;AACiC;AACc;AAC/C;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uDAAY;AACI;AAClB;;;;;;;;;;;;ACjBA;AACiC;AACW;AAC5C;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAiG,+BAA+B;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,qDAAW;AACmB;AAChC;;;;;;;;;;;;ACrCA;AACiC;AACiB;AAClD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,2DAAc;AACmB;AACnC;;;;;;;;;;;;;AChCA;AACiC;AACa;AACF;AAC5C;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,mEAAsB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qEAAwB;AACpC;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,qDAAW;AACS;AACtB;;;;;;;;;;;;ACtCA;AACiC;AACiB;AAClD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,2DAAc;AACS;AACzB;;;;;;;;;;;;AChCA;AACiC;AACC;AAClC;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,2CAAM;AACe;AACvB;;;;;;;;;;;;AC9FA;AACiC;AACQ;AACzC;AACA,IAAI,4CAAiB;AACrB;AACA;AACA,kBAAkB,qDAAa;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,iDAAS;AACe;AAC1B;;;;;;;;;;;;ACzDA;AACiC;AACW;AAC5C;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,qDAAW;AACU;AACvB;;;;;;;;;;;;ACxCA;AACiC;AACiB;AAClD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA,CAAC,CAAC,2DAAc;AACU;AAC1B;;;;;;;;;;;;;;ACXA;AACiC;AACW;AACM;AAClD;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,qBAAqB;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,2DAAc;AACgB;AAChC;AACA,IAAI,4CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,qDAAW;AACY;AACzB;;;;;;;;;;;;;AC7GA;AAC8D;AACM;AAC7D,gDAAgD,6EAAuB,CAAC,uEAAoB;AAC5F;AACP;;;;;;;;;;;;;ACLA;AAC0C;AACM;AACzC,sCAAsC,yDAAa,CAAC,mDAAU;AAC9D;AACP;;;;;;;;;;;;;ACLA;AAC4C;AACM;AAC3C,uCAAuC,2DAAc,CAAC,qDAAW;AACjE;AACP;;;;;;;;;;;;;ACLA;AAC4C;AACM;AAC3C,uCAAuC,2DAAc,CAAC,qDAAW;AACjE;AACP;;;;;;;;;;;;ACLA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACA;AACP;;;;;;;;;;ACTA;AACO,8CAA8C,6EAA6E;AAClI;;;;;;;;;;;ACFA;AACO;AACP;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;;ACZA;AACA;AACA,4CAA4C,yCAAyC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oCAAoC,4CAA4C;AAChF;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA,yGAAyG,uCAAuC;AAChJ;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;;ACdA;AAC2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA,uDAAuD,mDAAU;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACjBA;AACO;AACP,6BAA6B,YAAY;AACzC;AACA;;;;;;;;;;ACJA;AACO;AACP;AACA;AACA;;;;;;;;;;ACJA;AACO,2CAA2C,wCAAwC,2CAA2C,IAAI;AACzI;;;;;;;;;;ACFA;AACO,kCAAkC,sEAAsE;AAC/G;;;;;;;;;;ACFA;AACO;AACP;AACA;AACA;;;;;;;;;;ACJA;AACO;AACP;AACA;AACA;;;;;;;;;;;ACJA;AACuE;AAChE;AACP,iCAAiC,0DAAiB;AAClD;AACA;;;;;;;;;;;ACLA;AACiE;AAC1D;AACP,iCAAiC,sDAAe;AAChD;AACA;;;;;;;;;;;ACLA;AACoC;AAC7B;AACP,YAAY,iDAAO;AACnB;AACA;;;;;;;;;;ACLA;AACO;AACP;AACA;AACA;;;;;;;;;;;ACJA;AAC2C;AACpC;AACP,oCAAoC,mDAAU;AAC9C;AACA;;;;;;;;;;ACLA;AACO;AACP;AACA;AACA;;;;;;;;;;ACJA;AACO;AACP;AACA;AACA;;;;;;;;;;ACJA;AACO;AACP;;;;;;;;;;ACFA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACTA;AACsC;AAC/B;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACO;AACP;AACA,eAAe,+CAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,gDAAgD,kBAAkB;AAClE;AACA;AACA;;;;;;;;;;;;;;;;;;;ACpBA;AACsD;AACI;AACE;AACI;AACpB;AACJ;AACF;AAC2B;AACM;AAChE;AACP,kCAAkC,0DAAiB;AACnD,eAAe,6EAAqB;AACpC;AACA,aAAa,yDAAW;AACxB,eAAe,mEAAgB;AAC/B;AACA,aAAa,qDAAS;AACtB,eAAe,uEAAkB;AACjC;AACA,uCAAuC,sDAAe;AACtD,eAAe,yEAAmB;AAClC;AACA;AACA,oBAAoB,mDAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;AC9BA;AACO;AACP;AACA,4CAA4C,+BAA+B;AAC3E;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACTA;AACiE;AAC1D;AACP;AACA,gCAAgC,sDAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;;;;;;;;;ACjCA;AACuE;AAChE;AACP;AACA,sBAAsB,0DAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACbA;AACoD;AAC7C;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,+BAA+B;AAC3D,wBAAwB,6DAAe;AACvC;AACA;AACA;AACA;;;;;;;;;;;;;ACdA;AACqD;AACT;AACD;AACpC;AACP;AACA,8BAA8B,6DAAe;AAC7C;AACA;AACA;AACA;AACA,0BAA0B,mDAAU;AACpC;AACA;AACA,WAAW,yDAAW;AACtB;AACA;;;;;;;;;;;;;AChBA;AAC2C;AACiC;AACvB;AAC9C;AACP;AACA,sCAAsC,mDAAU;AAChD;AACA;AACA,2BAA2B,8DAAkB;AAC7C,kCAAkC,8DAAkB;AACpD;AACA;AACA;AACA,mBAAmB,mDAAU,CAAC,4CAAa;AAC3C;AACA,eAAe,mDAAU;AACzB;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA;AACO;AACP;AACA,oBAAoB;AACpB;AACA;AACA;AACO;AACP;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6DAA6D,cAAc;AAC3E;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACO;AACP,oCAAoC;AACpC;AACA;AACO;AACP;AACA;AACA;AACO;AACP,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA;AACO;AACP,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,iBAAiB,oDAAoD,qEAAqE,cAAc;AACxJ,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACO;AACP,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA;AACO;AACP,kDAAkD,QAAQ;AAC1D,yCAAyC,QAAQ;AACjD,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA,iBAAiB,uFAAuF,cAAc;AACtH,uBAAuB,gCAAgC,qCAAqC,2CAA2C;AACvI,4BAA4B,MAAM,iBAAiB,YAAY;AAC/D,uBAAuB;AACvB,8BAA8B;AAC9B,6BAA6B;AAC7B,4BAA4B;AAC5B;AACA;AACO;AACP;AACA,iBAAiB,6CAA6C,UAAU,sDAAsD,cAAc;AAC5I,0BAA0B,6BAA6B,oBAAoB,gDAAgD,kBAAkB;AAC7I;AACA;AACO;AACP;AACA;AACA,2GAA2G,uFAAuF,cAAc;AAChN,uBAAuB,8BAA8B,gDAAgD,wDAAwD;AAC7J,6CAA6C,sCAAsC,UAAU,mBAAmB,IAAI;AACpH;AACA;AACO;AACP,iCAAiC,uCAAuC,YAAY,KAAK,OAAO;AAChG;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,6CAA6C;AAC7C;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;ACzNA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iDAAiD,KAAK;AACtD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;AAEd,qBAAqB,mBAAO,CAAC,GAA2B;AACxD,QAAQ,gBAAgB,EAAE,mBAAO,CAAC,GAAgB;AAClD,YAAY,mBAAO,CAAC,GAAkB;AACtC,cAAc,mBAAO,CAAC,GAAmB;AACzC,eAAe,mBAAO,CAAC,GAAU;AACjC,cAAc,mBAAO,CAAC,GAAS;;;;;AC5I/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,SAAS;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA,SAAS;AACT;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;AAEd,YAAY,mBAAO,CAAC,GAAW;AAC/B,wBAAwB,WAAW;;AAEnC,qBAAqB,mBAAO,CAAC,GAA2B;AACxD,mBAAmB,mBAAO,CAAC,GAAc;AACzC,cAAc,mBAAO,CAAC,GAAmB;AACzC,eAAe,mBAAO,CAAC,GAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAE,mBAAO,CAAC,GAAgB;AAC5B,QAAQ,sCAAsC,EAAE,mBAAO,CAAC,GAAuB;;AAE/E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN,iBAAiB,EAAE,QAAQ,OAAO;AAClC,MAAM;AACN;AACA,iBAAiB,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO;AAC1C,MAAM;AACN;AACA,iBAAiB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAChC,QAAQ,GAAG,EAAE,GAAG,OAAO;AACvB,MAAM;AACN;AACA,iBAAiB,EAAE,GAAG,EAAE,GAAG;AAC3B,QAAQ,GAAG,EAAE,GAAG,OAAO;AACvB;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN,iBAAiB,EAAE,MAAM,GAAG,GAAG,OAAO;AACtC,MAAM;AACN;AACA,mBAAmB,EAAE,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,GAAG,OAAO;AAChD,QAAQ;AACR,mBAAmB,EAAE,GAAG,EAAE,IAAI,GAAG,GAAG,OAAO;AAC3C;AACA,MAAM;AACN;AACA;AACA;AACA,qBAAqB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AACpC,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO;AAChC,UAAU;AACV,qBAAqB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AACpC,YAAY,GAAG,EAAE,GAAG,OAAO;AAC3B;AACA,QAAQ;AACR,mBAAmB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAClC,UAAU,GAAG,OAAO;AACpB;AACA,MAAM;AACN;AACA;AACA;AACA,qBAAqB,EAAE,GAAG,EAAE,GAAG;AAC/B,WAAW,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO;AACpC,UAAU;AACV,qBAAqB,EAAE,GAAG,EAAE,GAAG;AAC/B,WAAW,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO;AAC/B;AACA,QAAQ;AACR,mBAAmB,EAAE,GAAG,EAAE,GAAG;AAC7B,UAAU,GAAG,OAAO;AACpB;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG;AACvC,MAAM;AACN,iBAAiB,EAAE,MAAM,IAAI,GAAG,OAAO;AACvC,MAAM;AACN,iBAAiB,EAAE,GAAG,EAAE,IAAI;AAC5B,QAAQ,GAAG,EAAE,GAAG,OAAO;AACvB;;AAEA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,gBAAgB,GAAG,MAAM,kBAAkB;AAC3C,IAAI;AACJ,gBAAgB,GAAG,GAAG,GAAG,IAAI,kBAAkB;AAC/C,IAAI;AACJ,gBAAgB,KAAK;AACrB,IAAI;AACJ,gBAAgB,KAAK,EAAE,kBAAkB;AACzC;;AAEA;AACA;AACA,IAAI;AACJ,aAAa,QAAQ;AACrB,IAAI;AACJ,aAAa,GAAG,GAAG,QAAQ;AAC3B,IAAI;AACJ,cAAc,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI;AACpC,IAAI;AACJ,aAAa,GAAG,GAAG,GAAG,GAAG,QAAQ;AACjC,IAAI;AACJ,cAAc,GAAG;AACjB;;AAEA,YAAY,MAAM,EAAE,GAAG;AACvB;;AAEA;AACA,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;AC1hBA,cAAc,mBAAO,CAAC,GAAmB;AACzC,QAAQ,+BAA+B,EAAE,mBAAO,CAAC,GAAuB;AACxE,QAAQ,gBAAgB,EAAE,mBAAO,CAAC,GAAgB;;AAElD,qBAAqB,mBAAO,CAAC,GAA2B;AACxD,QAAQ,qBAAqB,EAAE,mBAAO,CAAC,GAAyB;AAChE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN,0EAA0E,eAAe;AACzF;;AAEA;AACA;AACA,kCAAkC,YAAY;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,8CAA8C,QAAQ;AACtD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB,WAAW,GAAG,WAAW,GAAG,WAAW;AAC7D;AACA,0BAA0B,0BAA0B;AACpD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,QAAQ;AAC/D;AACA;AACA;AACA,sBAAsB,qBAAqB;AAC3C;AACA;AACA;AACA;;AAEA,cAAc;;;;;AC7Sd,cAAc,mBAAO,CAAC,GAAS;AAC/B;AACA;AACA;AACA;AACA,cAAc;;;;;ACLd,WAAW,mBAAO,CAAC,GAAM;AACzB,YAAY,mBAAO,CAAC,GAAO;AAC3B,WAAW,mBAAO,CAAC,GAAM;AACzB,YAAY,mBAAO,CAAC,GAAO;AAC3B,WAAW,mBAAO,CAAC,GAAM;AACzB,YAAY,mBAAO,CAAC,GAAO;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,+CAA+C,GAAG;AAClD;AACA;AACA,cAAc;;;;;ACnDd,eAAe,mBAAO,CAAC,GAAmB;AAC1C,cAAc,mBAAO,CAAC,GAAS;AAC/B,QAAQ,gBAAgB,EAAE,mBAAO,CAAC,GAAgB;;AAElD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS,GAAG,gBAAgB,GAAG,gBAAgB;AACjE;AACA,cAAc;;;;;ACnDd,eAAe,mBAAO,CAAC,GAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA,cAAc;;;;;ACNd,gBAAgB,mBAAO,CAAC,GAAW;AACnC;AACA,cAAc;;;;;ACFd,eAAe,mBAAO,CAAC,GAAmB;AAC1C;AACA;;AAEA,cAAc;;;;;ACJd,cAAc,mBAAO,CAAC,GAAY;;AAElC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc;;;;;AChEd,gBAAgB,mBAAO,CAAC,GAAW;AACnC;AACA,cAAc;;;;;ACFd,gBAAgB,mBAAO,CAAC,GAAW;AACnC;AACA,cAAc;;;;;ACFd,gBAAgB,mBAAO,CAAC,GAAW;AACnC;AACA,cAAc;;;;;ACFd,eAAe,mBAAO,CAAC,GAAmB;;AAE1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,cAAc;;;;;AClBd,gBAAgB,mBAAO,CAAC,GAAW;AACnC;AACA,cAAc;;;;;ACFd,gBAAgB,mBAAO,CAAC,GAAW;AACnC;AACA,cAAc;;;;;ACFd,eAAe,mBAAO,CAAC,GAAmB;AAC1C;AACA,cAAc;;;;;ACFd,eAAe,mBAAO,CAAC,GAAmB;AAC1C;AACA,cAAc;;;;;ACFd,gBAAgB,mBAAO,CAAC,GAAW;AACnC;AACA,cAAc;;;;;ACFd,eAAe,mBAAO,CAAC,GAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;;;;ACfd,eAAe,mBAAO,CAAC,GAAmB;AAC1C;AACA,cAAc;;;;;ACFd,cAAc,mBAAO,CAAC,GAAS;AAC/B;AACA;AACA;AACA;AACA,cAAc;;;;;ACLd,gBAAgB,mBAAO,CAAC,GAAW;AACnC;AACA,cAAc;;;;;ACFd,qBAAqB,mBAAO,CAAC,GAAiB;AAC9C;AACA,cAAc;;;;;ACFd,cAAc,mBAAO,CAAC,GAAkB;AACxC;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,cAAc;;;;;ACTd,qBAAqB,mBAAO,CAAC,GAAiB;AAC9C;AACA,cAAc;;;;;ACFd,cAAc,mBAAO,CAAC,GAAS;AAC/B;AACA;AACA;AACA;AACA,cAAc;;;;;ACLd;AACA,mBAAmB,mBAAO,CAAC,GAAe;AAC1C,kBAAkB,mBAAO,CAAC,GAAsB;AAChD,eAAe,mBAAO,CAAC,GAAkB;AACzC,oBAAoB,mBAAO,CAAC,GAAwB;AACpD,cAAc,mBAAO,CAAC,GAAmB;AACzC,cAAc,mBAAO,CAAC,GAAmB;AACzC,cAAc,mBAAO,CAAC,GAAmB;AACzC,YAAY,mBAAO,CAAC,GAAiB;AACrC,aAAa,mBAAO,CAAC,GAAkB;AACvC,cAAc,mBAAO,CAAC,GAAmB;AACzC,cAAc,mBAAO,CAAC,GAAmB;AACzC,cAAc,mBAAO,CAAC,GAAmB;AACzC,mBAAmB,mBAAO,CAAC,GAAwB;AACnD,gBAAgB,mBAAO,CAAC,GAAqB;AAC7C,iBAAiB,mBAAO,CAAC,GAAsB;AAC/C,qBAAqB,mBAAO,CAAC,GAA2B;AACxD,qBAAqB,mBAAO,CAAC,GAA2B;AACxD,aAAa,mBAAO,CAAC,GAAkB;AACvC,cAAc,mBAAO,CAAC,GAAmB;AACzC,WAAW,mBAAO,CAAC,GAAgB;AACnC,WAAW,mBAAO,CAAC,GAAgB;AACnC,WAAW,mBAAO,CAAC,GAAgB;AACnC,YAAY,mBAAO,CAAC,GAAiB;AACrC,YAAY,mBAAO,CAAC,GAAiB;AACrC,YAAY,mBAAO,CAAC,GAAiB;AACrC,YAAY,mBAAO,CAAC,GAAiB;AACrC,eAAe,mBAAO,CAAC,GAAoB;AAC3C,mBAAmB,mBAAO,CAAC,GAAsB;AACjD,cAAc,mBAAO,CAAC,GAAiB;AACvC,kBAAkB,mBAAO,CAAC,GAAuB;AACjD,sBAAsB,mBAAO,CAAC,GAAyB;AACvD,sBAAsB,mBAAO,CAAC,GAAyB;AACvD,sBAAsB,mBAAO,CAAC,GAAyB;AACvD,mBAAmB,mBAAO,CAAC,GAAsB;AACjD,mBAAmB,mBAAO,CAAC,GAAgB;AAC3C,gBAAgB,mBAAO,CAAC,GAAkB;AAC1C,YAAY,mBAAO,CAAC,GAAc;AAClC,YAAY,mBAAO,CAAC,GAAc;AAClC,mBAAmB,mBAAO,CAAC,GAAqB;AAChD,sBAAsB,mBAAO,CAAC,GAAmB;AACjD,eAAe,mBAAO,CAAC,GAAiB;AACxC,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACxFA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;;;;ACRd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,cAAc;AACd;AACA;AACA;;;;;ACtBA;AACA,oCAAoC,aAAa;AACjD,mCAAmC;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;;;;;ACdd,QAAQ,mDAAmD,EAAE,mBAAO,CAAC,GAAa;AAClF,cAAc,mBAAO,CAAC,GAAS;AAC/B,OAAO,GAAG,cAAc;;AAExB;AACA,WAAW,UAAU;AACrB,eAAe,cAAc;AAC7B,YAAY,WAAW;AACvB,UAAU,SAAS;AACnB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,MAAM,YAAY,OAAO,IAAI,KAAK;AAClD,gBAAgB,MAAM,YAAY,OAAO,IAAI,KAAK;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,oDAAoD,iBAAiB;;AAErE;AACA;;AAEA,+BAA+B,yBAAyB;AACxD,uBAAuB,yBAAyB;AAChD,uBAAuB,yBAAyB;;AAEhD,oCAAoC,8BAA8B;AAClE,4BAA4B,8BAA8B;AAC1D,4BAA4B,8BAA8B;;AAE1D;AACA;;AAEA,0CAA0C;AAC1C,CAAC,GAAG,4BAA4B;;AAEhC,+CAA+C;AAC/C,CAAC,GAAG,4BAA4B;;AAEhC;AACA;AACA;;AAEA,kCAAkC;AAClC,CAAC,QAAQ,4BAA4B;;AAErC,wCAAwC;AACxC,CAAC,QAAQ,iCAAiC;;AAE1C;AACA;;AAEA,kCAAkC,iBAAiB;;AAEnD;AACA;AACA;;AAEA,+BAA+B;AAC/B,CAAC,QAAQ,uBAAuB;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8BAA8B;AAC9B,CAAC,EAAE,kBAAkB;AACrB,eAAe;;AAEf,wBAAwB,iBAAiB;;AAEzC;AACA;AACA;AACA,qCAAqC;AACrC,CAAC,EAAE,uBAAuB;AAC1B,eAAe;;AAEf,yBAAyB,kBAAkB;;AAE3C;;AAEA;AACA;AACA;AACA,wCAAwC,8BAA8B;AACtE,mCAAmC,yBAAyB;;AAE5D,uCAAuC,wBAAwB;AAC/D,6BAA6B,wBAAwB;AACrD,6BAA6B,wBAAwB;AACrD,yBAAyB,kBAAkB;AAC3C,kCAAkC;AAClC;;AAEA,4CAA4C,6BAA6B;AACzE,kCAAkC,6BAA6B;AAC/D,kCAAkC,6BAA6B;AAC/D,8BAA8B,uBAAuB;AACrD,uCAAuC;AACvC;;AAEA,0BAA0B,YAAY,MAAM,mBAAmB;AAC/D,+BAA+B,YAAY,MAAM,wBAAwB;;AAEzE;AACA;AACA,yBAAyB;AACzB,oBAAoB,IAAI,EAAE,2BAA2B;AACrD,0BAA0B,IAAI,2BAA2B;AACzD,0BAA0B,IAAI,2BAA2B;AACzD;AACA;;AAEA;AACA;AACA;;AAEA,kCAAkC,iBAAiB;AACnD,wBAAwB;;AAExB,yBAAyB,iBAAiB,EAAE,mBAAmB;AAC/D,8BAA8B,iBAAiB,EAAE,wBAAwB;;AAEzE;AACA;AACA;;AAEA,kCAAkC,iBAAiB;AACnD,wBAAwB;;AAExB,yBAAyB,iBAAiB,EAAE,mBAAmB;AAC/D,8BAA8B,iBAAiB,EAAE,wBAAwB;;AAEzE;AACA,mCAAmC,YAAY,OAAO,kBAAkB;AACxE,8BAA8B,YAAY,OAAO,iBAAiB;;AAElE;AACA;AACA,uCAAuC;AACvC,CAAC,OAAO,kBAAkB,GAAG,mBAAmB;AAChD,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA,uBAAuB,mBAAmB;AAC1C;;AAEA,yCAAyC,wBAAwB;AACjE;AACA,4BAA4B,wBAAwB;AACpD;;AAEA;AACA;AACA;AACA;AACA;;;;;;AC/MY;;AAEZ;AACA,gBAAgB,mBAAO,CAAC,GAAS;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,4BAA4B;;AAE5B,kBAAkB;AAClB,qBAAqB;;AAErB;AACA;AACA,2CAA2C,gBAAgB;AAC3D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C,gBAAgB;AAC3D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;;;;AC7Ud;AACA,gBAAgB,mBAAO,CAAC,GAAW;AACnC;AACA,cAAc;;;;;ACHd,cAAc,mBAAO,CAAC,GAAkB;AACxC;AACA;AACA;AACA;AACA;AACA,cAAc;;;;;ACNd,gBAAgB,mBAAO,CAAC,GAAW;AACnC;AACA;AACA,cAAc;;;;;ACHd,eAAe,mBAAO,CAAC,GAAmB;AAC1C,cAAc,mBAAO,CAAC,GAAkB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,cAAc;;;;;ACxBd,eAAe,mBAAO,CAAC,GAAmB;AAC1C,cAAc,mBAAO,CAAC,GAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,cAAc;;;;;ACvBd,eAAe,mBAAO,CAAC,GAAmB;AAC1C,cAAc,mBAAO,CAAC,GAAkB;AACxC,WAAW,mBAAO,CAAC,GAAiB;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,sBAAsB;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,oBAAoB;AACvE;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;;;;;AC5Dd,eAAe,mBAAO,CAAC,GAAmB;AAC1C,mBAAmB,mBAAO,CAAC,GAAuB;AAClD,QAAQ,MAAM;AACd,cAAc,mBAAO,CAAC,GAAkB;AACxC,kBAAkB,mBAAO,CAAC,GAAwB;AAClD,WAAW,mBAAO,CAAC,GAAiB;AACpC,WAAW,mBAAO,CAAC,GAAiB;AACpC,YAAY,mBAAO,CAAC,GAAkB;AACtC,YAAY,mBAAO,CAAC,GAAkB;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,sBAAsB;AACxC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA,cAAc;;;;;AC/Ed;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,GAA2B;AACrD,gBAAgB,mBAAO,CAAC,GAAyB;AACjD,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN,uBAAuB,IAAI;AAC3B,MAAM;AACN,uBAAuB,IAAI;AAC3B,MAAM;AACN,qBAAqB,KAAK,IAAI,IAAI;AAClC;AACA;AACA;AACA;AACA;AACA;;;;;AC9CA,cAAc,mBAAO,CAAC,GAAqB;AAC3C,mBAAmB,mBAAO,CAAC,GAA0B;AACrD,QAAQ,MAAM;AACd,kBAAkB,mBAAO,CAAC,GAA2B;AACrD,gBAAgB,mBAAO,CAAC,GAAyB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC;AACtC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;;;;ACtPd,cAAc,mBAAO,CAAC,GAAkB;;AAExC;AACA;AACA;AACA;;AAEA,cAAc;;;;;ACPd,cAAc,mBAAO,CAAC,GAAkB;AACxC;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,cAAc;;;;;;ACVD;AACb,qBAAqB,mBAAO,CAAC,GAAe;;AAE5C,cAAc;AACd;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,QAAQ,EAAE,SAAS;AACzC;;;;;;AClBa;AACb,cAAc;;;;;ACDd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE,cAAc;AAChB;AACA;AACA,EAAE;AACF,eAAe,mBAAO,CAAC,GAAQ;AAC/B,gBAAgB,mBAAO,CAAC,GAAc;AACtC;;AAEA,WAAW,mBAAO,CAAC,GAAQ;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE,cAAc;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR,KAAK;AACL;AACA;AACA;AACA;AACA,EAAE,qBAAqB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,EAAE,sBAAsB;AACxB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,EAAE,mBAAmB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,mBAAmB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,mBAAmB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpDa;AACb,cAAc;AACd;AACA,qDAAqD;;AAErD;AACA;AACA;;AAEA;AACA;;;;;;ACVa;AACb,mBAAmB,mBAAO,CAAC,GAAc;;AAEzC,cAAc;AACd;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;AACA;;AAEA;AACA;;AAEA,oBAAoB,gBAAgB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;ACtDA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,GAAuB;AAC3C,qBAAqB,mBAAO,CAAC,GAAkB;;AAE/C;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;;;;;AC3WY;;AAEZ,WAAW,mBAAO,CAAC,GAAQ;AAC3B,YAAY,mBAAO,CAAC,GAAS;;AAE7B,cAAc;AACd;AACA;;;;;;ACPY;;AAEZ;AACA;AACA;AACA;;AAEA,cAAc;AACd;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;ACzIY;;AAEZ;AACA,UAAU,mBAAO,CAAC,GAAkB;AACpC,UAAU,mBAAO,CAAC,GAA6B;AAC/C,iBAAiB,mBAAO,CAAC,GAAiB;;AAE1C,cAAc;AACd;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,0BAA0B;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;AClIa;AACb,kBAAkB,mBAAO,CAAC,GAAY;;AAEtC,cAAc;;;;;;ACHD;;AAEb,cAAc;AACd;AACA,gDAAgD,cAAc;AAC9D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;ACda;;AAEb,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;ACfA;AACA;AACA;AACA;;AAEA,yCAAwC;AACxC,6CAAyC;;;;;;ACNzC;AACA;AACA;AACA;;AAEa;;AAEb,eAAe,mBAAO,CAAC,GAAU;AACjC,WAAW,mBAAO,CAAC,CAAM;;AAEzB,aAAa,mBAAO,CAAC,GAAU;AAC/B,UAAU,mBAAO,CAAC,GAAiB;;AAEnC,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;AC7DA;AACA;AACA;AACA;;AAEa;;AAEb,aAAa,mBAAO,CAAC,GAAQ;AAC7B,WAAW,mBAAO,CAAC,GAAM;AACzB,SAAS,mBAAO,CAAC,GAAI;;AAErB,cAAc,mBAAO,CAAC,GAAS;AAC/B,eAAe,mBAAO,CAAC,GAAU;AACjC,oBAAoB,4DAAuC;;AAE3D,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iBAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,mBAAmB;;AAEtD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;ACtMa;AACb,WAAW,mBAAO,CAAC,GAAI;AACvB,YAAY,mBAAO,CAAC,GAAK;AACzB,gBAAgB,mBAAO,CAAC,GAAU;;AAElC,OAAO,KAAK;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iCAAiC,GAAG;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;;;;;ACtIA,aAAa,mBAAO,CAAC,GAAQ;;AAE7B;AACA;AACA;AACA;;AAEA,OAAO,GAAG,cAAc;AACxB;;AAEA;;AAEA;AACA,qCAAqC;AACrC,6BAA6B;;AAE7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb,iBAAiB,mBAAO,CAAC,GAAW;;AAEpC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;;AAEA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uBAAuB,aAAa;AACpC,IAAI;AACJ,yBAAyB,aAAa;AACtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,YAAY;AAC9B;;AAEA;AACA;;AAEA,MAAM;AACN;;AAEA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,mBAAmB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,SAAS;;AAEnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,cAAc;AAChC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,EAAE,kCAAkC;AACjD;AACA;AACA;;AAEA;AACA,aAAa,EAAE,EAAE,yBAAyB,EAAE,EAAE;AAC9C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,IAAI;AAC5B;AACA,wBAAwB,IAAI,MAAM,OAAO,EAAE,MAAM;AACjD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wDAAwD;;AAExD;AACA;AACA;;AAEA,cAAc;;;;;AC/Rd,YAAY,mBAAO,CAAC,GAAuB;AAC3C,cAAc,mBAAO,CAAC,GAAc;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACrFA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACjDY;;AAEZ,eAAe,mBAAO,CAAC,GAAU;AACjC,gBAAgB,mBAAO,CAAC,GAAa;;AAErC;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;;AAEA,qBAAqB;AACrB,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;AClGA;AACA;AACA;;AAEA,aAAa,mBAAO,CAAC,CAAM;AAC3B,4BAA4B;AAC5B,cAAc,mBAAO,CAAC,GAAO;;AAE7B;AACA,wCAAwC,IAAI,MAAM,gBAAgB;;AAElE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,KAAK,KAAK;AAC5D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,+BAA+B;AACzC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA,UAAU,+BAA+B;AACzC;;AAEA,kBAAkB,oBAAoB;AACtC;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,oBAAoB;AACxC;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd;;;;;AC5HA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;;;;;AChCa;AACb,aAAa,mBAAO,CAAC,CAAM;AAC3B,WAAW,mBAAO,CAAC,GAAa;AAChC,wBAAwB,mBAAO,CAAC,GAAmB;AACnD,iBAAiB,mBAAO,CAAC,GAAW;AACpC,gBAAgB,mBAAO,CAAC,GAAU;AAClC,aAAa,mBAAO,CAAC,GAAM;AAC3B,qBAAqB,mBAAO,CAAC,GAAe;;AAE5C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,+EAA+E;;AAE/E;AACA;AACA;AACA;AACA;;AAEA,6CAA6C,KAAK,MAAM,mBAAmB;AAC3E,GAAG;AACH;;AAEA;AACA,MAAM,QAAQ;;AAEd;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0CAA0C,KAAK,MAAM,mBAAmB;AACxE;;AAEA;AACA,yCAAyC,GAAG;AAC5C;AACA;;AAEA,cAAc;AACd;AACA,yBAAsB;AACtB,mBAAmB;AACnB,uCAAuC,GAAG;AAC1C;AACA;;;;;;AC3Ea;AACb,WAAW,mBAAO,CAAC,GAAI;AACvB,aAAa,mBAAO,CAAC,CAAM;AAC3B,aAAa,mBAAO,CAAC,GAAM;AAC3B,eAAe,mBAAO,CAAC,GAAQ;;AAE/B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gEAAgE,IAAI;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4DAA4D,IAAI;AAChE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN,IAAI;AACJ;;AAEA;AACA,CAAC;;AAED,cAAc;AACd,yBAAsB;;AAEtB,mBAAmB;AACnB;AACA,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;AC1IY;AACZ,cAAc;AACd,mBAAmB;AACnB,0BAA0B;AAC1B,6BAA6B;;AAE7B,SAAS,mBAAO,CAAC,GAAa;AAC9B,kBAAkB,mBAAO,CAAC,GAAa;AACvC,aAAa,mBAAO,CAAC,GAAa;AAClC,WAAW,mBAAO,CAAC,CAAM;AACzB;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,mBAAO,CAAC,GAAgB;;AAEhD;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,kBAAkB;AAClB;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;;AAEtC;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,MAAM;AACN,GAAG;AACH;;AAEA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC7Oa;AACb,aAAa,mBAAO,CAAC,CAAM;AAC3B,sBAAsB,mBAAO,CAAC,GAAiB;AAC/C,iBAAiB,mBAAO,CAAC,GAAW;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;;;;;AChEY;AACZ,cAAc;AACd;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;;;;;;ACPY;AACZ,cAAc;;AAEd;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ,0CAA0C,OAAO;AACjD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;;AAEA;AACA;AACA,oDAAoD,iBAAiB;AACrE;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,0BAA0B;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,0BAA0B;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,gBAAgB;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,gBAAgB;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;;AAEA,gCAAgC,iBAAiB;AACjD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6BAA6B;AACnE;AACA;AACA,SAAS,2BAA2B;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,2BAA2B;AAC3E;AACA;AACA,SAAS,6BAA6B;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,8BAA8B;AACpE;AACA;;AAEA;AACA,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,EAAE,mBAAO,CAAC,GAAe;AACzB,EAAE;;;;;;ACzaW;AACb;;;CAGC,GACDA,8CAA6C;IAAE,OAAO;AAAK,CAAC,EAAC;AAC7D,IAAME,UAAUC,mBAAOA,CAAC,EAAO;AAC/BD,QAAQ,YAAY,CAACC,mBAAOA,CAAC,GAAQ,GAAGF,OAAOA;AAC/CC,QAAQ,YAAY,CAACC,mBAAOA,CAAC,GAAW,GAAGF,OAAOA;AAClDC,QAAQ,YAAY,CAACC,mBAAOA,CAAC,GAAa,GAAGF,OAAOA;;;;;;ACTvC;AACb;;;CAGC,GACDD,8CAA6C;IAAE,OAAO;AAAK,CAAC,EAAC;AAC7DC,yBAAyB,GAAGA,yBAAyB,GAAGA,oBAAoB,GAAGA,oBAAoB,GAAGA,8BAA8B,GAAGA,8BAA8B,GAAGA,6BAA6B,GAAGA,6BAA6B,GAAGA,8BAA8B,GAAGA,+BAA+B,GAAGA,mBAAmB,GAAGA,wBAAwB,GAAG,KAAK;AACjW,IAAMG,kBAAkBD,mBAAOA,CAAC,GAAe;AAC/C,IAAME,SAASF,mBAAOA,CAAC,CAAM;AAC7B,IAAMG,OAAOH,mBAAOA,CAAC,GAAI;AACzBF,wBAAwB,GAAGM,QAAQ,QAAQ,KAAK,UAAU,YAAY;AACtE;;;;;;CAMC,GACD,IAAMC,cAAc,SAACC;QAAMC,4EAAW,MAAMC,sFAAqB,MAAMC,6EAAY;QAI3EC;IAHJ,gCAAgC;IAChC,IAAMC,SAAU,IAAGT,OAAO,SAAQ,EAAGI;IACrC,+DAA+D;IAC/D,IAAII,EAAAA,WAAAA,qBAAAA,+BAAAA,SAAS,QAAQ,MAAK,SACtB,OAAOC;IACX,IAAIJ,UACA,OAAOI,OAAO,OAAO,CAAC,OAAO;SAC5B,IAAIH,oBACL,OAAOG,OAAO,OAAO,CAAC,OAAO;SAC5B,IAAIF,WACL,OAAO,YAAYE;IACvB,OAAOA;AACX;AACAb,mBAAmB,GAAGO;AACtB;;;;CAIC,GACD,IAAMO,kBAAkB,SAACN;IACrB,IAAIF,QAAQ,QAAQ,KAAK,SACrB,OAAOE;IACX,IAAI;YACiBO,OAAAA;QAAjB,IAAMC,YAAWD,QAAC,IAAGZ,gBAAgB,QAAO,EAAI,wCAA2C,OAALK,MAAK,kBAAe;YACtG,UAAU;QACd,gBAFiBO,6BAAAA,QAAAA,MAEb,IAAI,cAFSA,4BAAAA,WAAAA;QAGjB,kCAAkC;QAClC,IAAIC,CAAAA,qBAAAA,+BAAAA,SAAU,MAAM,IAAG,GACnB,OAAOA;IACf,EACA,OAAOC,IAAI;IACP,aAAa;IACjB;IACA,OAAOT;AACX;AACA;;;;CAIC,GACD,IAAMU,mBAAmB,SAACV;IACtB,IAAIF,QAAQ,QAAQ,KAAK,SACrB,OAAOE;IACX,IAAI;YACkBO,OAAAA;QAAlB,IAAMI,aAAYJ,QAAC,IAAGZ,gBAAgB,QAAO,EAAI,sGAAyG,OAALK,MAAK,uHAAoH;YAC1Q,UAAU;QACd,gBAFkBO,6BAAAA,QAAAA,MAEd,IAAI,cAFUA,4BAAAA,WAAAA;QAGlB,kCAAkC;QAClC,IAAII,CAAAA,sBAAAA,gCAAAA,UAAW,MAAM,IAAG,GACpB,OAAOA;IACf,EACA,OAAOF,IAAI;IACP,aAAa;IACjB;IACA,OAAOT;AACX;AACA;;;CAGC,GACD,IAAMY,0BAA0B;QAACZ,wEAAO;IACpC,IAAIF,QAAQ,QAAQ,KAAK,SACrB,OAAO;IACX,IAAMe,eAAe;IACrB,IAAMC,OAAQ,IAAGlB,OAAO,OAAM,EAAGI,MAAMa;IACvC,yCAAyC;IACzC,IAAI,CAAE,IAAGhB,KAAK,UAAS,EAAGiB,OACrB,IAAGjB,KAAK,SAAQ,EAAI,IAAGA,KAAK,QAAO,EAAGiB,MAAM;IACjD,uGAAuG;IACvG,IAAMC,iBAAkB,IAAGnB,OAAO,QAAO,EAAGc,iBAAiBI,WAAWD;IACxE,UAAU;IACT,IAAGhB,KAAK,UAAS,EAAGiB;IACrB,OAAOC;AACX;AACAvB,+BAA+B,GAAGoB;AAClC;;CAEC,GACDpB,8BAA8B,GAAGA,+BAA+B;AAChE;;;CAGC,GACD,IAAMwB,wBAAwB,SAAChB;WAASM,gBAAiB,IAAGV,OAAO,OAAM,EAAGI;;AAC5ER,6BAA6B,GAAGwB;AAChC;;CAEC,GACDxB,6BAA6B,GAAGA,6BAA6B;AAC7D;;;CAGC,GACD,IAAMyB,yBAAyB,SAACjB;WAASU,iBAAkB,IAAGd,OAAO,OAAM,EAAGI;;AAC9ER,8BAA8B,GAAGyB;AACjC;;CAEC,GACDzB,8BAA8B,GAAGA,8BAA8B;AAC/D;;;CAGC,GACD,IAAM0B,eAAe,SAAClB;WAASM,gBAAiB,IAAGT,KAAK,YAAW,EAAGG,MAAM;;AAC5ER,oBAAoB,GAAG0B;AACvB;;CAEC,GACD1B,oBAAoB,GAAGA,oBAAoB;AAC3C;;;CAGC,GACD,IAAM2B,oBAAoB,SAACnB;WAASU,iBAAkB,IAAGb,KAAK,YAAW,EAAGG,MAAM;;AAClFR,yBAAyB,GAAG2B;AAC5B;;CAEC,GACD3B,yBAAyB,GAAGA,yBAAyB;;;;;;ACzIxC;AACb;;;CAGC,GACDD,8CAA6C;IAAE,OAAO;AAAK,CAAC,EAAC;AAC7DC,iCAAiC,GAAGA,2BAA2B,GAAG,KAAK;AACvE,IAAMI,SAASF,mBAAOA,CAAC,GAAQ;AAC/B;;;;CAIC,GACDF,2BAA2B,GAAI,IAAGI,OAAO,qBAAoB,EAAGE,QAAQ,GAAG;AAC3E;;;;CAIC,GACDN,iCAAiC,GAAI,IAAGI,OAAO,WAAU,EAAGJ,2BAA2B;;;;;;ACnB1E;AACb;;;;;;;;;CASC,GACDD,8CAA6C;IAAE,OAAO;AAAK,CAAC,EAAC;AAC7DC,0BAA0B,GAAGA,mBAAmB,GAAGA,uBAAuB,GAAGA,uBAAuB,GAAGA,qBAAqB,GAAGA,iBAAiB,GAAG,KAAK;AACxJ,IAAMC,UAAUC,mBAAOA,CAAC,EAAO;AAC/B;;;;;;;;;;;;;;;;;CAiBC,GACD,IAAME,SAASF,mBAAOA,CAAC,CAAM;AAC7B,IAAM0B,mBAAmB3B,QAAQ,eAAe,CAACC,mBAAOA,CAAC,GAAgB;AACzE,IAAM2B,SAAS3B,mBAAOA,CAAC,GAAQ;AAC/B,IAAM4B,kCAAkC,SAACC;IACrC,IAAI;QACA,IAAMvB,OAAQ,IAAGJ,OAAO,OAAM,EAAG2B,KAAK;QACtC,IAAMC,OAAOJ,gBAAiB,WAAO,CAAC,IAAI,CAACpB;QAC3C,IAAIwB,CAAAA,iBAAAA,2BAAAA,KAAM,IAAI,MAAK,yBAAyB;YACxC,OAAOA;QACX;IACJ,EACA,OAAOC,OAAO;QACV,IAAIA,CAAAA,kBAAAA,4BAAAA,MAAO,IAAI,MAAK,UAAU;YAC1B;QACJ;QACA,MAAMA;IACV;AACJ;AACA,IAAMC,sCAAsC;IACxC,2FAA2F;IAC3F,uEAAuE;IACvE,oBAAoB;IACpB,IAAMC,WAAY,IAAGN,OAAO,YAAW,EAAGO;IAC1C,IAA0BC,OAAC,IAAGjC,OAAO,KAAI,EAAG+B,WAA9BG,UAAYD,KAAlB;IACR,IAAIE,SAASJ;IACb,MAAO,KAAM;QACT,IAAMK,8BAA8BV,gCAAgCS;QACpE,IAAIC,6BAA6B;YAC7B,OAAO;gBACH,yBAAyBD;gBACzB,6BAA6BC;YACjC;QACJ;QACA,IAAMC,SAAU,IAAGrC,OAAO,OAAM,EAAGmC;QACnC,IAAIE,WAAWH,SAAS;YACpB,MAAM,IAAII,MAAO,uDAA+D,OAATP;QAC3E;QACAI,SAASE;IACb;AACJ;AACA,IAAkEE,uCAAAA,uCAA1DC,0BAA0DD,qCAA1DC,yBAAyBJ,8BAAiCG,qCAAjCH;AACjCxC,iBAAiB,GAAI,IAAG6B,OAAO,qBAAoB,EAAGe;AACtD5C,qBAAqB,GAAI,IAAG6B,OAAO,sBAAqB,EAAGe;AAC3D5C,uBAAuB,GAAGwC,4BAA4B,MAAM;AAC5D,IAAMK,kBAAkB,SAACrC,MAAMsC;IAC3B,IAAMC,iBAAiBC,MAAM,OAAO,CAACF,aAAaA,YAAY;QAACA;KAAU;IACzE,sEAAsE;IACtE,IAAItC,QAAS,IAAGJ,OAAO,UAAS,EAAGI,OAAO;QACtC,iEAAiE;QACjE,OAAOuC,eAAe,IAAI,CAAC,SAACE;mBAASzC,KAAK,UAAU,CAACyC;;IACzD;IACA,OAAOC;AACX;AACAlD,uBAAuB,GAAG6C;AAC1B,IAAMM,cAAc,SAAC3C;WAAU,IAAGR,uBAAsB,EAAGQ,MAAM;QAACR,iBAAiB;QAAEA,qBAAqB;KAAC;;AAC3GA,mBAAmB,GAAGmD;AACtB,IAAMC,qBAAqB,SAAC5C;IACxB,IAAM6C,WAAY,IAAGrD,mBAAkB,EAAGQ;IAC1C,OAAO6C,WAAY,IAAGjD,OAAO,QAAO,EAAGiD,UAAU7C,QAAQ;AAC7D;AACAR,0BAA0B,GAAGoD;;;;;;AC5FhB;AACb;;;;;;;;;CASC,GACDrD,8CAA6C;IAAE,OAAO;AAAK,CAAC,EAAC;AAC7DC,kCAAkC,GAAGA,qBAAqB,GAAGA,0BAA0B,GAAGA,4BAA4B,GAAGA,kBAAkB,GAAG,KAAK;AACnJ;;;;;;;;;;;;;;;;;CAiBC,GACD,IAAIsD,gBAAgBpD,mBAAOA,CAAC,CAAe;AAC3CH,8CAA6C;IAAE,YAAY;IAAMwD,KAAK,SAALA;QAAmB,OAAOD,cAAc,UAAU;IAAE;AAAE,CAAC,EAAC;AACzH,IAAIE,4BAA4BtD,mBAAOA,CAAC,GAA2B;AACnEH,wDAAuD;IAAE,YAAY;IAAMwD,KAAK,SAALA;QAAmB,OAAOC,0BAA0B,oBAAoB;IAAE;AAAE,CAAC,EAAC;AACzJ,IAAIC,eAAevD,mBAAOA,CAAC,GAAc;AACzCH,sDAAqD;IAAE,YAAY;IAAMwD,KAAK,SAALA;QAAmB,OAAOE,aAAa,kBAAkB;IAAE;AAAE,CAAC,EAAC;AACxI1D,iDAAgD;IAAE,YAAY;IAAMwD,KAAK,SAALA;QAAmB,OAAOE,aAAa,aAAa;IAAE;AAAE,CAAC,EAAC;AAC9H,IAAIC,kCAAkCxD,mBAAOA,CAAC,GAAiC;AAC/EH,8DAA6D;IAAE,YAAY;IAAMwD,KAAK,SAALA;QAAmB,OAAOG,gCAAgC,0BAA0B;IAAE;AAAE,CAAC,EAAC;;;;;;ACvC9J;AACb;;;;;;;;;CASC,GACD3D,8CAA6C;IAAE,OAAO;AAAK,CAAC,EAAC;AAC7DC,qBAAqB,GAAGA,0BAA0B,GAAG,KAAK;AAC1D,IAAM2D,SAAS;IAAC;IAAU;IAAS;IAAW;IAAQ;IAAS;CAAU;AACzE,SAASC,mBAAmBC,KAAK;QAAEC,UAAAA,iEAAU,CAAC;IAC1C,IAAID,MAAM,OAAO,EACb,OAAO;IACX,IAAIA,MAAM,KAAK,EACX,OAAO;IACX,IAAIA,MAAM,KAAK,EACX,OAAO;IACX,IAAIA,MAAM,MAAM,EACZ,OAAO;IACX,OAAOC,OAAQ,WAAO,IAAI;AAC9B;AACA9D,0BAA0B,GAAG4D;AAC7B,SAASG,cAAcC,IAAI;IACvB,IAAMC,IAAIN,OAAO,OAAO,CAACK;IACzB,IAAIC,MAAM,CAAC,GAAG;QACV,IAAMC,MAAO,sBAA0B,OAALF,MAAK,QAAO,oBAAoC,OAAjBL,OAAO,IAAI,CAAC,MAAK;QAClF,MAAM,IAAIjB,MAAMwB;IACpB;IACA,IAAML,QAAQ,CAAC;IACfF,OAAO,OAAO,CAAC,SAACQ,OAAOC;QACnBP,KAAK,CAACM,MAAM,GAAGC,UAAUH;IAC7B;IACA,OAAO;QACHD,MAAAA;QACA,OAAOH;IACX;AACJ;AACA7D,qBAAqB,GAAG+D;;;;;;ACzCX;;;;AACb;;;;;;;;;CASC,GACDhE,8CAA6C;IAAE,OAAO;AAAK,CAAC,EAAC;AAC7DC,kBAAkB,GAAG,KAAK;AAC1B,IAAMC,UAAUC,mBAAOA,CAAC,EAAO;AAC/B;;;;;;;;;;;;;;;;;CAiBC,GACD,IAAMmE,KAAKpE,QAAQ,YAAY,CAACC,mBAAOA,CAAC,EAAM;AAC9C,IAAMsD,4BAA4BtD,mBAAOA,CAAC,GAA2B;AACrE,IAAMoE,2BAAN;aAAMA,WACUC,YAAY;kCADtBD;QAEE,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,OAAO,GAAGC,eAAe;YAAC,IAAIf,0BAA0B,oBAAoB,CAACe;SAAc,GAAG,EAAE;QACrG,IAAI,CAAC,QAAQ,GAAG,IAAIF,GAAG,OAAO;;oBAJhCC;;YAMFE,KAAAA;mBAAAA,SAAAA;oBAAOC,QAAAA,iEAAQ;gBACX,IAAI,CAAC,UAAU,GAAGC,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,GAAGD,OAAO;gBACpD,OAAO,IAAI,CAAC,UAAU;YAC1B;;;YACAE,KAAAA;mBAAAA,SAAAA;gBAAQC,IAAAA,IAAAA,OAAAA,UAAAA,QAAGC,OAAHD,UAAAA,OAAAA,OAAAA,GAAAA,OAAAA,MAAAA;oBAAGC,KAAHD,QAAAA,SAAAA,CAAAA,KAAO;;gBACX,IAAI,CAAC,aAAa,CAAC,WAAWC;YAClC;;;YACAC,KAAAA;mBAAAA,SAAAA;gBAAMF,IAAAA,IAAAA,OAAAA,UAAAA,QAAGC,OAAHD,UAAAA,OAAAA,OAAAA,GAAAA,OAAAA,MAAAA;oBAAGC,KAAHD,QAAAA,SAAAA,CAAAA,KAAO;;gBACT,IAAI,CAAC,aAAa,CAAC,SAASC;YAChC;;;YACAE,KAAAA;mBAAAA,SAAAA;gBAAKH,IAAAA,IAAAA,OAAAA,UAAAA,QAAGC,OAAHD,UAAAA,OAAAA,OAAAA,GAAAA,OAAAA,MAAAA;oBAAGC,KAAHD,QAAAA,SAAAA,CAAAA,KAAO;;gBACR,IAAI,CAAC,aAAa,CAAC,QAAQC;YAC/B;;;YACAG,KAAAA;mBAAAA,SAAAA;gBAAQJ,IAAAA,IAAAA,OAAAA,UAAAA,QAAGC,OAAHD,UAAAA,OAAAA,OAAAA,GAAAA,OAAAA,MAAAA;oBAAGC,KAAHD,QAAAA,SAAAA,CAAAA,KAAO;;gBACX,IAAI,CAAC,aAAa,CAAC,WAAWC;YAClC;;;YACAI,KAAAA;mBAAAA,SAAAA;gBAAQL,IAAAA,IAAAA,OAAAA,UAAAA,QAAGC,OAAHD,UAAAA,OAAAA,OAAAA,GAAAA,OAAAA,MAAAA;oBAAGC,KAAHD,QAAAA,SAAAA,CAAAA,KAAO;;gBACX,IAAI,CAAC,aAAa,CAAC,WAAWC;YAClC;;;YACA5C,KAAAA;mBAAAA,SAAAA,MAAMiD,MAAK;gBACP,IAAI,CAAC,aAAa,CAAC,SAAS;oBAACA;iBAAM;YACvC;;;YACAC,KAAAA;mBAAAA,SAAAA;gBAAMP,IAAAA,IAAAA,OAAAA,UAAAA,QAAGC,OAAHD,UAAAA,OAAAA,OAAAA,GAAAA,OAAAA,MAAAA;oBAAGC,KAAHD,QAAAA,SAAAA,CAAAA,KAAO;;gBACT,IAAI,CAAC,aAAa,CAAC,SAASC;YAChC;;;YACAO,KAAAA;mBAAAA,SAAAA;gBACI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC9B;;;YACAC,KAAAA;mBAAAA,SAAAA,WAAWC,OAAO;gBACd,IAAI,CAAC,OAAO,GAAI,uBAAGA;YACvB;;;YACAC,KAAAA;mBAAAA,SAAAA;gBACI,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY;YACrC;;;YACAC,KAAAA;mBAAAA,SAAAA,cAAcC,IAAI,EAAEZ,IAAI;gBACpB,IAAMX,MAAM;oBACRuB,MAAAA;oBACA,QAAQ,IAAI,CAAC,UAAU;oBACvBZ,MAAAA;gBACJ;gBACA,IAAIa,UAAU;oBACTC,kCAAAA,2BAAAA;;oBAAL,QAAKA,YAAgB,IAAI,CAAC,OAAO,qBAA5BA,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAA8B;wBAA9BA,IAAMC,SAAND;wBACD,IAAIC,OAAO,KAAK,CAAC1B,MAAM;4BACnBwB,UAAU;wBACd;oBACJ;;oBAJKC;oBAAAA;;;6BAAAA,6BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;gBAKL,IAAID,SAAS;oBACT,IAAI,CAAC,QAAQ,CAAC,IAAI,CAACxB;gBACvB;YACJ;;;WAvDEI;;AAyDNtE,kBAAkB,GAAGsE;;;;;;AC3FR;;;;;AACb;;;;;;;;;CASC,GACDvE,8CAA6C;IAAE,OAAO;AAAK,CAAC,EAAC;AAC7DC,kCAAkC,GAAG,KAAK;AAC1C;;;;;;;;;;;;;;;;;CAiBC,GACD,IAAMwD,4BAA4BtD,mBAAOA,CAAC,GAA2B;AACrE,IAAM2F,2CAAN;gBAAMA;aAAAA;YACU1B,QAAAA,iEAAQ;kCADlB0B;;gBAEE,oBAFFA;YAEQ;gBACF1B,OAAAA;gBACA,SAAS;oBACL,OAAO,SAACD;wBACJ,yBAAyB;wBACzB,kCAAK,QAAQ,CAAC,IAAI,CAACA,IAAI,KAAK,CAAC,GAAG,CAAC;oBACrC;gBACJ;YACJ;;QACA,MAAK,QAAQ,GAAG,EAAE;;;WAXpB2B;EAAmCrC,0BAA0B,oBAAoB;AAcvFxD,kCAAkC,GAAG6F;;;;;;AC9CxB;;;;;AACb;;;;;;;;;CASC,GACD9F,8CAA6C;IAAE,OAAO;AAAK,CAAC,EAAC;AAC7DC,4BAA4B,GAAG,KAAK;AACpC,IAAMC,UAAUC,mBAAOA,CAAC,EAAO;AAC/B;;;;;;;;;;;;;;;;;CAiBC,GACD,IAAM4F,SAAS5F,mBAAOA,CAAC,GAAM;AAC7B,IAAM6F,UAAU9F,QAAQ,eAAe,CAACC,mBAAOA,CAAC,GAAO;AACvD,IAAMuD,eAAevD,mBAAOA,CAAC,GAAc;AAC3C,IAAyD8F,mBAAAA,OAAQ,WAAO,EAAhEC,gBAAiDD,iBAAjDC,eAAeC,SAAkCF,iBAAlCE,QAAQC,MAA0BH,iBAA1BG,KAAKC,OAAqBJ,iBAArBI,MAAMC,QAAeL,iBAAfK,OAAOC,MAAQN,iBAARM;AACjD,IAAMC,gBAAgB,IAAI,MAAM,CAAC;AACjC,IAAMC,eAAe;IACjB,SAAU,IAAyB,OAAtBP,cAAc,SAAQ;IACnC,OAAQ,IAAe,OAAZK,IAAI,SAAQ;IACvB,MAAO,IAAgB,OAAbF,KAAK,SAAQ;IACvB,SAAU,IAAiB,OAAdC,MAAM,SAAQ;IAC3B,SAAU,IAAkB,OAAfH,OAAO,SAAQ;IAC5B,OAAQ,GAAe,OAAbC,IAAI,UAAS;AAC3B;AACA,IAAMM,MAAM,SAACC,KAAKC;WAAQD,IAAI,cAAc,CAACC;;AAC7C,SAASC,gBAAgBzC,KAAK,EAAEsB,IAAI;IAChC,IAAIA,SAAS,SAAS;QAClB,OAAOtB,MAAM,IAAI,KAAK;IAC1B;IACA,OAAO0C,QAAQ1C,MAAM,KAAK,CAACsB,SAAS,YAAY,SAASA,KAAK;AAClE;AACA,SAASqB,eAAe7E,KAAK;IACzB,IAAI,OAAOA,UAAU,YAAY,CAAO,aAAYS,CAAjBT,OAAiBS,QAAQ;QACxDT,QAAQ,IAAIS,MAAO,IAAS,OAANT,OAAM;IAChC;IACA,IAAI,OAAOA,UAAU,UAAU;QAC3B,OAAOA;IACX;IACA,OAAOA,MAAM,KAAK,IAAIA,MAAM,OAAO,IAAIA;AAC3C;AACA,IAAM8E,qCAAN;aAAMA,qBACUC,MAAM;kCADhBD;QAEE,IAAI,CAAC,KAAK,GAAI,IAAGtD,aAAa,aAAY,EAAGuD,OAAO,KAAK;QACzD,IAAI,CAAC,OAAO,GAAGA,OAAO,OAAO;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,YAAY;YAC3D,MAAM,IAAItE,MAAM;QACpB;;oBANFqE;;YAQF5B,KAAAA;mBAAAA,SAAAA,MAAMjB,GAAG;gBACL,IAAI,CAAC0C,gBAAgB,IAAI,CAAC,KAAK,EAAE1C,IAAI,IAAI,GAAG;oBACxC,OAAO;gBACX;gBACA,IAAM+C,SAASR,IAAID,cAActC,IAAI,IAAI,IAAIsC,YAAY,CAACtC,IAAI,IAAI,CAAC,GAAG;gBAZxE6C,qBAauB,KAAK,CAAC,IAAI,CAAC,OAAO,EAAEE,QAAQ/C;gBACjD,OAAO;YACX;;;;YACOiB,KAAAA;mBAAP,SAAOA,MAAM+B,OAAO,EAAED,MAAM,EAAE/C,GAAG;gBAC7B,IAAMiD,MAAMjD,IAAI,IAAI,KAAK,UACnB4C,eAAe5C,IAAI,IAAI,CAAC,EAAE,IACzB,IAAG4B,OAAO,MAAK,QAAf,IAAgB,EAAjB;oBAAmB5B,IAAI,IAAI,CAAC,EAAE;iBAAuB,CAArD,OAAgC,uBAAGA,IAAI,IAAI,CAAC,KAAK,CAAC;gBACvD+C,CAAAA,SAASE,GAAE,EAAG,KAAK,CAAC,MAAM,OAAO,CAAC,SAACC,MAAMnD;oBACtC,IAAIoD,aAAa;oBACjB,IAAInD,IAAI,MAAM,GAAG,GAAG;wBAChB,6DAA6D;wBAC7DmD,cAAc,IAAI,MAAM,CAACnD,IAAI,MAAM,GAAG;wBACtCmD,cAAcD,KAAK,UAAU,CAAC,OAAO,MAAM;oBAC/C;oBACA,IAAIA,QAAQH,UAAUhD,IAAI,GAAG;wBACzB,8CAA8C;wBAC9C,0CAA0C;wBAC1CoD,cAAcd;oBAClB;oBACAW,QAAQ,KAAK,CAAE,GAAeE,OAAbC,YAAkB,OAALD,MAAK;gBACvC;YACJ;;;WAlCEL;;AAoCN/G,4BAA4B,GAAG+G;;;;;;;;;;;;;;;;;;;;;;ACjG/B;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;;;;;;;;;;;;AAE2B;AACE;AACC;AACiC;AAE1B;AACH;AACD;AAElC,SAASa;IACPD,gDAAQ,CACNL,6CAAMA,oBAQAvH,OAAO,MAAM,CAAC0H,+CAAQA,EACrB,GAAG,CAAC,SAACI;eAAa,GAAoBA,OAAlBA,QAAQ,IAAI,EAAC,OAAyB,OAApBA,QAAQ,WAAW;OACzD,IAAI,CAAC,iBAaR;AAER;AAEO,SAAeC,IAAIC,IAAc;;YAiBhCjE,SAaAe,MASAmD,UAEAC,aACAC,WAEAC,gBAEAN;;;;oBA7CNF,uDAAe,CACb/D,8EAAkBA,CAChB2D,mDAAOA,CAACQ,MAAM;wBACZ,OAAO;4BAAG;4BAAW;4BAAS;4BAAS;;oBACzC;oBAIJ,wEAAwE;oBACxE,0DAA0D;oBAC1D,2GAA2G;oBAC3G,IAAIA,KAAK,QAAQ,CAAC,OAAO;wBACvBJ,iDAAS,CAAC;wBACVrH,QAAQ,IAAI,CAAC;oBACf;oBAEMwD,UAAUyD,mDAAOA,CAACQ,MAAM;wBAC5B,OAAO;4BACL,GAAG;4BACH,GAAG;4BACH,GAAG;wBACL;wBACA,WAAS;4BACP,OAAO;wBACT;wBACA,OAAO;4BAAG;4BAAkB;4BAAmB;;wBAC/C,MAAM;4BAAG;;oBACX;oBAEMlD,OAAOf,QAAQ,CAAC;oBAEtB,IAAIA,QAAQ,IAAI,IAAIe,KAAK,MAAM,KAAK,GAAG;wBACrC+C;wBACA;;;oBACF;oBAEA,yEAAyE;oBACzE,8BAA8B;oBACxBI,WAAWR,6CAAOA,CAACpF,WAAW;oBAE9B6F,cAAcpD,IAAI,CAAC,EAAE;oBACrBqD,YAAYrD,KAAK,KAAK,CAAC;oBAEvBsD,iBAAiB;wBAAErE,SAAAA;wBAASoE,WAAAA;wBAAWF,UAAAA;oBAAS;oBAEhDH,UAAUJ,+CAAQ,CAACQ,YAAY;oBACrC,IAAIJ,YAAY3E,WAAW;wBACzByE,iDAAS,CAAE,IAAe,OAAZM,aAAY;wBAC1B3H,QAAQ,IAAI,CAAC;oBACf;oBAEA;;wBAAMoH,gDAAUA,CAACG,SAASM;;;oBAA1B;;;;;;IACF;;;;;;;;;;;;;;;;;;;;;;;;;ACzHA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;;AAEmB;AACuD;AACxC;AACuB;AACK;AAGF;AACM;AACjB;AACiD;AAM3D;AAEjC,IAAMc,mBAA6B;IACxC,aAAa;IACb,MAAM;IAEAnB,KAAN,SAAMA;4FAAIoB,QAAQ,EAAEC,YAAY,EAAEC,KAAgB;gBAAdtF,SAASuF,KAmGDC,oCAAAA,wBA3FpCC,kBASEC,UACAC,SAEAC,aAQEC,UACAC,WAEFC,cACClE,2BAAAA,mBAAAA,gBAAAA,WAAAA,OAAMmE,SASDC,WAmBcC,qCAAAA,yBAAhBC,eAcNC,4BAGAC,iBAEAjC,WAKDkC,4BAAAA,oBAAAA,iBAAAA,YAAAA,QAAMC,OACJC,4BAAAA,oBAAAA,iBAAAA,YAAAA,QAAMC,oBAYPC,WAMAC,YACAC,QACFC,oBAECC,4BAAAA,oBAAAA,iBAAAA,YAAAA,QAAMC,UAEDvJ,MACAwJ;;;;wBA9GwBhH,UAAFsF,MAAEtF,SAASuF,MAAXD,MAAWC;wBAC3C,0EAA0E;wBAC1E,uEAAuE;wBACvE,uEAAuE;wBACvE,uEAAuE;wBACvE,qEAAqE;wBACrE,uEAAuE;wBACvE,0EAA0E;wBACpEE,mBACJzF,QAAQ,KAAK,KAAK,SAClB,CAACA,OAAO,CAAC,kBAAkB,IAC3B,CAACA,QAAQ,OAAO,IAChB,CAACA,QAAQ,OAAO,IAChB,CAACA,OAAO,CAAC,qCAAqC,IAC9C,CAACA,QAAQ,GAAG;6BAEVyF,kBAAAA;;;;wBACIC,WAAWT,6EAAeA,CAACM;wBAC3BI,UAAUZ,gFAAkBA,CAACQ,KAAKH;wBAElCQ,cAActB,oDAAa,CAACiB,IAAI,WAAW,CAAC;wBAClD1B,mDAAW,CACR,0BACC6B,OADwBA,WAAW,YAAY,UAAS,WAE5CE,OADZF,WAAWV,+EAAiBA,CAACU,UAAUC,WAAW,OACnD,eAAyB,OAAZC;6BAGZF,CAAAA,YAAYV,+EAAiBA,CAACU,UAAUC,YAAYC,WAAU,GAA9DF;;;;wBACe;;4BAAMd,8DAAYA,CAACW;;;wBAA9BM,WAAW;wBACC;;4BAAMnB,yEAAeA,CAACa,KAAK1B,2CAAGA,EAAEgC;;;wBAA5CC,YAAY;wBAGbjE,kCAAAA,2BAAAA;;4BAAL,IAAKA,YAAiBuD,SAAS,MAAM,yBAAhCvD,6BAAAA,QAAAA,yBAAAA,iCAAoC;gCAA9BmE,UAANnE;gCACH,8DAA8D;gCAC9D,6DAA6D;gCAC7D,gEAAgE;gCAChE,2DAA2D;gCAC3D,4CAA4C;gCAC5C,IAAImE,QAAQ,eAAe,EAAE;gCAE7B,IAAIA,QAAQ,SAAS,CAAC,oBAAoBA,QAAQ,eAAe,IAAI;oCAC7DC,YAAY,IAAItB,2EAAkBA,CAACY,KAAKS,SAASF;oCACvD,IAAI,CAACG,UAAU,OAAO,IAAI;wCACxBF,eAAeC,QAAQ,IAAI;wCAC3B;oCACF;gCACF;4BACF;;4BAfKnE;4BAAAA;;;qCAAAA,6BAAAA;oCAAAA;;;oCAAAA;0CAAAA;;;;6BAiBD,CAACkE,cAAD;;;;wBACF,kEAAkE;wBAClE,8DAA8D;wBAC9D,8CAA8C;wBAC9C;;4BAAMxB,uFAAsBA,CAACa,UAAUC;;;wBAAvC;wBAEA,+DAA+D;wBAC/D,0DAA0D;wBAC1D,0DAA0D;wBAC1D,+DAA+D;wBAC/D,8DAA8D;wBACxDc,iBAAgBD,0BAAAA,OAAO,CAAC,iBAAiB,cAAzBA,+CAAAA,sCAAAA,wBAA2B,WAAW,cAAtCA,0DAAAA,yCAAAA;6BAClB,CAACpB,yFAA2BA,CAACqB,gBAA7B;;;;wBACF;;4BAAMtB,kFAAoBA,CAACU,KAAKM,UAAUM;;;wBAA1C;;;wBAGFtC,mDAAW,CACT;wBAEF;;;;wBAEFA,mDAAW,CAAE,0CAAsD,OAAbkC;;;wBAIpDK,6BAA6B3B,2EAA0BA,CAACW,UAAUC,cAAc;4BACpF,kBAAkB;wBACpB;wBACMgB,kBAAkB5B,2EAA0BA,CAACW,UAAUC;wBAEvDjB,YACJ,qEAAIpE,OAAO,CAAC,kBAAkB,KAAK;4BAAQ;uCAC3C,qEAAIA,OAAO,CAAC,iBAAiB,KAAK;4BAAQ;;wBAGvCsG,mCAAAA,4BAAAA;;;;;;;;;wBAAAA,aAAeF;;;+BAAfE,8BAAAA,SAAAA;;;;wBAAMC,QAAND;wBACEE,mCAAAA,4BAAAA;;;;;;;;;wBAAAA,aAAiBD;;;+BAAjBC,8BAAAA,SAAAA;;;;wBAAMC,WAAND;wBACH,IAAIC,SAAQ,kBAAkB,EAAE;4BAC9B5C,mDAAW,CAAE,+BAA2C,OAAb4C,SAAQ,IAAI;4BACvD;;;;wBACF;6BAEIA,SAAQ,eAAe,IAAvBA;;;;wBACF;;4BAAMA,SAAQ,mBAAmB,CAAC;gCAAErC,WAAAA;4BAAU;;;wBAA9C;;;wBAPCoC;;;;;;;;;;;;wBAAAA;wBAAAA;;;;;;;iCAAAA,8BAAAA;gCAAAA;;;gCAAAA;sCAAAA;;;;;;;wBADFF;;;;;;;;;;;;wBAAAA;wBAAAA;;;;;;;iCAAAA,8BAAAA;gCAAAA;;;gCAAAA;sCAAAA;;;;;;;wBAaY;;4BAAM1B,8DAAYA,CAACW;;;wBAA9BmB,YAAW;wBAEjB;;4BAAM7B,kFAAoBA,CAACU,KAAKmB,YAAUlB,yBAAAA,OAAO,CAAC,iBAAiB,cAAzBA,8CAAAA,qCAAAA,uBAA2B,WAAW,cAAtCA,yDAAAA,wCAAAA;;;wBAA1C;wBAEA;;4BAAMjB,uFAAsBA,CAACa,UAAUC;;;wBAAvC;wBAEkB;;4BAAMX,yEAAeA,CAACa,KAAK1B,2CAAGA,EAAE6C;;;wBAA5CC,aAAY;wBACZC,SAAS,IAAIK;wBACfJ,qBAAqB;wBAEpBC,mCAAAA,4BAAAA;;4BAAL,IAAKA,aAAiB1B,SAAS,MAAM,yBAAhC0B,8BAAAA,SAAAA,0BAAAA,kCAAoC;gCAA9BC,WAAND;gCACH,IAAIC,SAAQ,SAAS,CAAC,oBAAoBA,SAAQ,eAAe,IAAI;oCAC7DvJ,OAAO,IAAImH,2EAAkBA,CAACY,KAAKwB,UAASJ;oCAC5CK,QAAQhH,QAAQ,KAAK,IAAIxC,KAAK,OAAO;oCAE3C,IAAIwJ,OAAO;wCACTnD,iDAAS,CAAE,IAAgB,OAAbkD,SAAQ,IAAI,EAAC;wCAC3BF,sBAAsB;oCACxB;oCAEAD,OAAO,GAAG,CAACG,UAAS;wCAAEvJ,MAAAA;wCAAMwJ,OAAAA;oCAAM;gCACpC;4BACF;;4BAZKF;4BAAAA;;;qCAAAA,8BAAAA;oCAAAA;;;oCAAAA;0CAAAA;;;;wBAcL,IAAID,qBAAqB,GAAG;4BAC1BhD,mDAAW,CAAE,GAAqB,OAAnBgD,oBAAmB;wBACpC;wBAEA;;4BAAMrC,sEAAkBA,CAAC6B,iBAAiB,SAAOL;;wCACzCkB;;;;gDAAAA,QAAQN,OAAO,GAAG,CAACZ;qDACrBkB,CAAAA,SAAS,CAACA,MAAM,KAAI,GAApBA;;;;qDAEElB,QAAQ,eAAe,IAAvBA;;;;gDACF,IAAIA,QAAQ,SAAS,CAAC,kBAAkB;oDACtCnC,iDAAS,CACN,IAAgB,OAAbmC,QAAQ,IAAI,EAAC;gDAErB;gDAEAnC,gDAAQ,CAAE,IAAgB,OAAbmC,QAAQ,IAAI,EAAC;gDAE1BkB,MAAM,IAAK,UAAM;gDACjB;;oDAAMlB,QAAQ,eAAe,CAAC;wDAAE,YAAY;oDAAK;;;gDAAjD;;;;;;gDAEAnC,gDAAQ,CAAE,IAAgB,OAAbmC,QAAQ,IAAI,EAAC;gDAE1BkB,MAAM,IAAK,UAAM;gDACjB;;oDAAMlB,QAAQ,kBAAkB,CAAC;;;gDAAjC;;;gDAGFkB,MAAM,IAAI,CAAC,KAAK;gDAChBrD,mDAAW,CAAE,IAAgB,OAAbmC,QAAQ,IAAI,EAAC;;;;;;;;gCAEjC;;;;wBAzBA;wBA2BA,0EAA0E;wBAC1E,0EAA0E;wBAC1E,wBAAwB;wBACxB,IAAIP,kBAAkB;4BACpBP,8EAAgBA,CAACK,KAAKR,gFAAkBA,CAACQ,KAAKH;wBAChD;;;;;;QACF;;AACF,EAAE;;;;;;;;;;;;;;;;;;;;;ACnNF;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;AAEqB;AACA;AACgB;AAEI;AACP;AACgC;AAG5D,IAAMqC,eAAyB;IACpC,aAAa;IACb,MAAM;IAEAzD,KAAN,SAAMA;2FAAIoB,QAAQ,EAAEsC,aAAa,EAAEpC,KAAO;gBAALC,KAM7BoC,UACD9F,2BAAAA,mBAAAA,gBAAAA,WAAAA,OAAMmE,SAeD4B,oBAqBFC,aAECvB,4BAAAA,oBAAAA,iBAAAA,YAAAA,qBAAQwB,SAASC,KAEdC;;;;wBA/CuBzC,MAAFD,MAAEC;wBACnC,qEAAqE;wBACrE,qEAAqE;wBACrE,+BAA+B;wBAC/BiC,+EAAiBA,CAACjC;wBAEZoC;wBACD9F,kCAAAA,2BAAAA;;;;;;;;;wBAAAA,YAAiBuD,SAAS,MAAM;;;+BAAhCvD,6BAAAA,QAAAA;;;;wBAAMmE,UAANnE;wBACC;;4BAAM0F,sDAAWA,CAACvB,QAAQ,mBAAmB;;;wBAAjD,IAAI,eAAgD;4BAClD2B,SAAS,IAAI,CAAC;gCACZ,KAAK3B,QAAQ,IAAI;gCACjB,SAASsB,8CAAQA,CAACtB,QAAQ,IAAI,EAAEA,QAAQ,mBAAmB;4BAC7D;wBACF;wBAEI;;4BAAMuB,sDAAWA,CAACvB,QAAQ,cAAc;;;wBAA5C,IAAI,eAA2C;4BAC7C2B,SAAS,IAAI,CAAC;gCACZ,KAAK3B,QAAQ,IAAI;gCACjB,SAASsB,8CAAQA,CAACtB,QAAQ,IAAI,EAAEA,QAAQ,cAAc;4BACxD;wBACF;wBAEQ4B,gBAAkB5B,QAAQ,cAAc,GAAxC4B;wBACR,IAAIA,eAAe;4BACjBD,SAAS,IAAI,CAAC;gCACZ,KAAK3B,QAAQ,IAAI;gCACjB,SAAS4B;4BACX;wBACF;;;wBArBG/F;;;;;;;;;;;;wBAAAA;wBAAAA;;;;;;;iCAAAA,6BAAAA;gCAAAA;;;gCAAAA;sCAAAA;;;;;;;6BAwBD8F,CAAAA,SAAS,MAAM,KAAK,IAApBA;;;;wBACF9D,mDAAW,CAAC;;;;;;wBAEZ;;;;;;;;OAQC,GACKgE,cAAcrL,QAAQ,GAAG;;;;;;;;;wBAExB8J,mCAAAA,4BAAAA;;;;;;;;;wBAAAA,aAA0BqB;;;+BAA1BrB,8BAAAA,SAAAA;;;;sCAAAA,cAAQwB,sBAAAA,SAASC,kBAAAA;wBACpBvL,QAAQ,KAAK,CAACuL;wBACRC,UAAUb,0CAAGA,CAACW;wBAEpB,IAAIjE,yDAAiB,CAAC,SAAS;4BAC7BuD,kDAAW,CAACY,SAASV,8CAAQA,CAACO,aAAaR,0CAAIA,CAACU,KAAKE,OAAOH;wBAC9D;wBAEA;;4BAAME;;;wBAAN;;;wBARG1B;;;;;;;;;;;;wBAAAA;wBAAAA;;;;;;;iCAAAA,8BAAAA;gCAAAA;;;gCAAAA;sCAAAA;;;;;;;;;;;;wBAWL9J,QAAQ,KAAK,CAACqL;;;;;;;;;;QAGpB;;AACF,EAAE;;;;;;;;;;;;;;ACvGF;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC,GAkB8C;AACR;AACJ;AACI;AAGhC,IAAMlE,WAAwC;IACnD,WAAWwB,wDAAgBA;IAC3B,OAAOsC,gDAAYA;IACnB,KAAKS,4CAAUA;IACf,OAAOC,gDAAYA;AACrB,EAAE;;;;;;;;;;;;;;;;ACzDF;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;AAE0C;AACR;AACuB;AACK;AAGxD,IAAMD,aAAuB;IAClC,aAAa;IACb,MAAM;IAEAlE,KAAN,SAAMA;2FAAIoB,QAAQ,EAAEC,YAAY,EAAEC,KAAa;gBAAXlB,WAC5BiC,iBAMAgC,YACAC;;;;wBAR4BlE,YAAFkB,MAAElB;wBAC5BiC,kBAAkB5B,2EAA0BA,CAACW,UAAUC;wBAE7D,IAAIjB,UAAU,MAAM,KAAK,GAAG;4BAC1B,MAAM,IAAIgE,mDAAQA,CAAC;wBACrB;wBAEMC,aAAajE,SAAS,CAAC,EAAE;wBACzBkE,aAAalE,UAAU,KAAK,CAAC;wBAEnC;;4BAAMI,sEAAkBA,CAAC6B,iBAAiB,SAAOL;;;;;qDAC3CA,QAAQ,SAAS,CAACqC,aAAlBrC;;;;gDACFnC,gDAAQ,CAAE,IAA6BwE,OAA1BrC,QAAQ,IAAI,EAAC,eAAwB,OAAXqC,YAAW;gDAClD;;oDAAMrC,QAAQ,kBAAkB,CAACqC,YAAY;wDAC3C,MAAMC;oDACR;;;gDAFA;gDAGAzE,mDAAW,CAAE,IAAgB,OAAbmC,QAAQ,IAAI,EAAC;;;;;;;;gCAEjC;;;;wBARA;;;;;;QASF;;AACF,EAAE;;;;;;;;;;;;;;;;;AC5DF;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;AAE0C;AACR;AACuB;AACiB;AACpB;AAGvD;;CAEC,GACD,IAAMwC,kBAAkB;AAExB;;CAEC,GACD,IAAMC,kCAAkC;AAExC;;;;;;;;;CASC,GACM,IAAMN,eAAyB;IACpC,aAAa;IACb,MAAM;IAEAnE,KAAN,SAAMA,IAAIoB,QAAQ,EAAEC,YAAY;;gBACxBqD,iBACD7G,2BAAAA,mBAAAA,gBAAAA,WAAAA,OAAMmE,SAaL2C,cAKAC,wCAIAvC;;;;wBAvBAqC,kBAA8B,IAAIzB;wBACnCpF,kCAAAA,2BAAAA;;4BAAL,IAAKA,YAAiBuD,SAAS,MAAM,yBAAhCvD,6BAAAA,QAAAA,yBAAAA,iCAAoC;gCAA9BmE,UAANnE;gCACH,+DAA+D;gCAC/D,IAAImE,QAAQ,SAAS,CAACwC,kBAAkB;oCACtCE,gBAAgB,GAAG,CAAC1C,QAAQ,IAAI,EAAEA;gCACpC;4BACF;;4BALKnE;4BAAAA;;;qCAAAA,6BAAAA;oCAAAA;;;oCAAAA;0CAAAA;;;;wBAOL,IAAI6G,gBAAgB,IAAI,KAAK,GAAG;4BAC9B,MAAM,IAAIN,mDAAQA,CAChB;wBAEJ;wBAEMO,eAAezJ,MAAM,IAAI,CAACwJ,gBAAgB,IAAI;wBACpD7E,gDAAQ,CAAE,WAA0C8E,OAAhCH,iBAAgB,kBAAwC,OAAxBG,aAAa,IAAI,CAAC,OAAM;wBAE5E,qFAAqF;wBACrF,yEAAyE;wBACnEC,yCAAyCF,eAAgB,UAAM,CACnED;wBAGIpC,kBAAkB5B,2EAA0BA,CAACiE,iBAAiBrD;wBAEpE,IAAIuD,wCAAwC;4BAC1CvC,gBAAgB,IAAI;gCAAEjB,SAAS,GAAG,CAACqD;;wBACrC;wBAEA;;4BAAMjE,sEAAkBA,CAAC6B,iBAAiB,SAAOwC;;wCACzCC;;;;gDAAiB;;oDAAMP,mEAAqBA,CAChD,gDAAgD;oDAChDM,IAAI,kBAAkB,CAACL,iBAAiB;wDACtC,OAAO;oDACT,GAAG,MAAM;;;gDAJLM,iBAAiB;gDAOvBjF,mDAAW,CAAE,IAAyCiF,OAAtCD,IAAI,IAAI,EAAC,+BAA4C,OAAfC,gBAAe;;;;;;gCACvE;;;;wBATA;;;;;;QAUF;;AACF,EAAE;;;;;;;;;;;;ACtGF;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC,GAE8B;AAQ/B;;CAEC,GACM,SAASC,gBAAgBzD,KAA+D;QAA7DpB,WAAFoB,MAAEpB,UAAU8E,UAAZ1D,MAAY0D,SAASC,kCAArB3D,MAAqB2D;IACnD,IAAMC,eAAe;QAAChF;QAAUR,6CAAOA,CAACQ,UAAU;KAAc;IAEhE,uEAAuE;IACvE,2DAA2D;IAC3D,0EAA0E;IAC1E,oEAAoE;IACpE,yEAAyE;IACzE,2EAA2E;IAC3E,yCAAyC;IACzC,mEAAmE;IACnE,mCAAmC;IACnCgF,aAAa,IAAI,CAACxF,6CAAOA,CAACQ,UAAU;IACpCgF,aAAa,IAAI,CAACxF,6CAAOA,CAACQ,UAAU;IACpCgF,aAAa,IAAI,CAACxF,6CAAOA,CAACQ,UAAU;IAEpC,IAAI,CAAC+E,iCAAiC;QACpCC,aAAa,IAAI,CAACxF,6CAAOA,CAACQ,UAAU;QACpCgF,aAAa,IAAI,CAACxF,6CAAOA,CAACQ,UAAU;QACpCgF,aAAa,IAAI,CAACxF,6CAAOA,CAACQ,UAAU;QACpCgF,aAAa,IAAI,CAACxF,6CAAOA,CAACQ,UAAU;QACpCgF,aAAa,IAAI,CAACxF,6CAAOA,CAACQ,UAAU;QACpCgF,aAAa,IAAI,CAACxF,6CAAOA,CAACQ,UAAU;IACtC;IAEA,OAAOgF;AACT;;;;;;;;;;;;;;;;;;;;;;;;ACnEA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;;AAEsB;AACD;AACyB;AAEH;AACM;AACf;AACuC;AAO/C;AAEpB,SAAeQ;uFAAwBpE,KAM7C;YALCqE,0BACAC,WAKMxE,UACAC,cACAgB,iBAEAsC,cAGD9G,2BAAAA,mBAAAA,gBAAAA,WAAAA,OAAM0E,OACJD,4BAAAA,oBAAAA,iBAAAA,YAAAA,QAAMN;;;;oBAdb2D,2BAD4CrE,MAC5CqE,0BACAC,YAF4CtE,MAE5CsE;oBAKiB;;wBAAMC,sBAAsBF;;;oBAAvCvE,WAAW;oBACXC,eAAekE,kEAAiBA,CAACnE;oBACjCiB,kBAAkB5B,2EAA0BA,CAACW,UAAUC;oBAEvDsD,eAAgB,qEAAGvD,SAAS,MAAM,IAAI,GAAG,CAAC,SAACY;+BAAYA,QAAQ,IAAI;;oBACzEnC,gDAAQ,CAAE,mCAA0D,OAAxB8E,aAAa,IAAI,CAAC,OAAM;oBAE/D9G,kCAAAA,2BAAAA;;;;;;;;;oBAAAA,YAAewE;;;2BAAfxE,6BAAAA,QAAAA;;;;oBAAM0E,QAAN1E;oBACEyE,mCAAAA,4BAAAA;;;;;;;;;oBAAAA,aAAiBC;;;2BAAjBD,8BAAAA,SAAAA;;;;oBAAMN,UAANM;oBACH;;wBAAMwD,aAAa9D;;;oBAAnB;oBACA;;wBAAM+D,aAAa/D;;;oBAAnB;oBACA;;wBAAMgE,YAAYhE,SAAS2D,0BAA0BC;;;oBAArD;;;oBAHGtD;;;;;;;;;;;;oBAAAA;oBAAAA;;;;;;;6BAAAA,8BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;;;;oBADFzE;;;;;;;;;;;;oBAAAA;oBAAAA;;;;;;;6BAAAA,6BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;;;;;;;;;IAOP;;AAEA;;;;;;CAMC,GACD,SAAegI,sBAAsB3F,QAAgB;;YAC7CgF,cACA9D,UACA6E,gBAEAC;;;;oBAJAhB,eAAeH,wDAAeA,CAAC;wBAAE7E,UAAAA;oBAAS;oBAC/B;;wBAAMsF,4DAAWA,CAACtF,UAAUgF;;;oBAAvC9D,WAAW;oBACX6E;wBAAkB7E,SAAS,GAAG,CAAC;;oBAE/B8E,qBAAqBT,0EAAyBA,CAACQ,gBAAgB7E,UAAU;wBAC7E,4BAA4B;oBAC9B;oBAEA,oFAAoF;oBACpF8E,kBAAmB,UAAM,CAAC;oBAE1BA,mBAAmB,OAAO,CAAC,SAAClE;wBAC1B,IAAIA,QAAQ,cAAc,GAAG,GAAG,KAAK,OAAO;4BAC1CkE,kBAAmB,UAAM,CAAClE,QAAQ,IAAI,CAAC,IAAI;wBAC7C;oBACF;oBACA;;wBAAOkE;;;;IACT;;AAEA,SAAeJ,aAAa9D,OAAgB;;YACpCmE;;;;oBAAAA,YAAYnE,QAAQ,cAAc;oBAEpC;;wBAAMuB,sDAAWA,CAAC4C;;;yBAAlB;;;;oBACF;;wBAAMhD,0CAAGA,CAACgD,WAAW;4BAAE,OAAO;wBAAK;;;oBAAnC;;;;;;;;IAEJ;;AAEA,SAAeJ,aAAa/D,OAAgB;;;;;yBAEtCA,QAAQ,eAAe,IAAvBA;;;;oBACF;;wBAAMA,QAAQ,eAAe;;;oBAA7B;;;;;;yBACSA,QAAQ,SAAS,CAAC,UAAlBA;;;;oBACT;;wBAAMA,QAAQ,SAAS,CAAC;;;oBAAxB;;;;;;;;IAEJ;;AAEA;;;;;;;;;;CAUC,GACD,SAAegE,YAAYhE,OAAgB,EAAE2D,wBAAgC,EAAEC,SAAiB;;YAExFQ,qBACAC,kBAeAC;;;;oBAjBN,0EAA0E;oBACpEF,sBAAsB9C,8CAAQA,CAACqC,0BAA0B3D,QAAQ,IAAI;oBACrEqE,mBAAmB3G,6CAAOA,CAACkG,WAAWQ;oBAE5C;;wBAAMjB,0CAAIA;4BAAE;4BAAQ;2BAAqBkB,kBAAkB;4BACzD,KAAKrE,QAAQ,6BAA6B;4BAC1C,KAAK;4BACL,SAAS;wBACX;;;oBAJA;oBAaqB;;wBAAMoD,iDAAMA,CAAC/B,0CAAIA,CAACgD,kBAAkB;;;yBAApC;;;;oBACjB;;wBAAMhB,oEAAeA,CAACgB;;;2BAAtB;;;;;;2BACArE,QAAQ,IAAI;;;oBAFVsE;oBAIN;;wBAAMhB,qEAAgBA,CAACe,kBAAkBC;;;oBAAzC;;;;;;IACF;;;;;;;;;;;;ACnJA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC,GAEqE;;;;;;;;;;;;;;;;;;;;;AC9BtE;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;;;;;AAGyC;AACR;AACmB;AACM;AACU;AAE9D,SAAe1G,WAAWG,OAAiB,EAAEb,MAAmC;;YAI7EqC,KACAH,UAgBAC,cASClH,OAMCsM;;;;;;;;;;oBAlCR5G,iDAAS,CAAE,YAA0CX,OAA/Ba,QAAQ,IAAI,EAAC,oBAAkC,OAAhBb,OAAO,QAAQ,EAAC;oBAEzD;;wBAAMsH,uFAA6B,CAACtH,OAAO,QAAQ;;;oBAAzDqC,MAAM;oBACNH,WAAWG,IAAI,mBAAmB,CAAC;wBACvC,iCAAiCxC,QAC/BG,OAAO,OAAO,CAAC,qCAAqC;wBAEtD,SAASH,QAAQG,OAAO,OAAO,CAAC,GAAG;wBACnC,SAASwH,QAAQxH,OAAO,OAAO,CAAC,OAAO;wBACvC,SAASwH,QAAQxH,OAAO,OAAO,CAAC,OAAO;oBACzC;oBAEA,IAAIkC,SAAS,IAAI,KAAK,GAAG;wBACvBvB,iDAAS,CACP;wBAEF;;4BAAOrH,QAAQ,IAAI,CAAC;;oBACtB;oBAEM6I,eAAekE,kEAAiBA,CAACnE;oBAEvCvB,iDAAS,CAAE,SAAiC,OAAzBuB,SAAS,IAAI,CAAC,QAAQ,IAAG;oBAC5CvB,iDAAS,CAAC0G,wEAAkBA,CAACrH,OAAO,QAAQ,EAAEkC;oBAE9C;;wBAAMrB,QAAQ,GAAG,CAACqB,UAAUC,cAAc,sIACrCnC;4BACHqC,KAAAA;;;;oBAFF;;;;;;oBAIOpH;oBACP0F,iDAAS,CAAE,IAAgB,OAAbE,QAAQ,IAAI,EAAC;oBAE3B,IAAS4G,0DAAAA,CAALxM,OAAiBiK,mDAAQA,GAAE;wBAC7BvE,iDAAS,CAAC1F,MAAM,OAAO;wBAEjBsM,aAAaxO,OAAO,OAAO,CAACkC,MAAM,IAAI,EACzC,GAAG,CAAC;qHAAE0E,iBAAK+H;mCAAY,GAAUA,OAAR/H,KAAI,MAAU,OAAN+H;2BACjC,IAAI,CAAC;wBAER,IAAIH,YAAY;4BACd5G,gDAAQ,CAAC;4BACTA,kDAAU,CAAC;4BACXA,gDAAQ,CAAC4G;4BACT5G,kDAAU,CAAC,CAAC;wBACd;oBACF,OAAO;wBACLA,iDAAS,CAAC1F;oBACZ;oBAEA3B,QAAQ,IAAI,CAAC;;;;;;;;;;;IAEjB;;AAEA,SAASkO,QAAWE,KAAe;IACjC,IAAIA,SAAS,MAAM;QACjB,OAAO,EAAE;IACX;IAEA,OAAO1L,MAAM,OAAO,CAAC0L,SAASA,QAAQ;QAACA;KAAM;AAC/C;;;;;;;;;;;;;;;;;;ACjGA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;;;AAEmB;AACI;AAMjB,IAAMjG,mCAAN;;aAAMA,mBAICY,GAAyB,EAAES,OAAgB,EAAEF,SAA8B;+EAJ5EnB;QACX,sEAAiB,QAAjB;QACA,sEAAiB,iBAAjB;QAGE,IAAI,CAAC,IAAI,GAAGkG,mDAAY,CAAC7E,QAAQ,cAAc,EAAE;QAEjD,IAAI,CAACF,WAAW;YACd;QACF;QAEA,IAAMgF,yBAAyB5L,MAAM,IAAI,CAACqG,IAAI,iBAAiB,CAACS,QAAQ,IAAI,EAAE,MAAM,GAClF,8CAA8C;SAC7C,IAAI,CAAC,SAAC+E,GAAGC;mBAAMD,EAAE,IAAI,CAAC,aAAa,CAACC,EAAE,IAAI;UAC3C,8FAA8F;SAC7F,GAAG,CAAC,SAACC;YACJ,IAAMC,WAAWpF,UAAU,GAAG,CAACmF,EAAE,IAAI;YACrC,IAAIC,UAAU;gBACZ,OAAQ,GAAYA,OAAVD,EAAE,IAAI,EAAC,KAAY,OAATC;YACtB;QACF;QAEF,uFAAuF;QACvF,IAAI,CAAC,aAAa,GAAGJ,uBAAuB,IAAI,CAAC,SAACK;mBAAM,CAACA;aACrD/L,YACA;YACE;SAED,CAHD,OAEE,oEAAG0L,yBACH,IAAI,CAAC;;iEA5BFnG;;YA+BXyG,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACvB,OAAO;gBACT;gBAEA,IAAI;oBACF,OAAO9G,sDAAe,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC,aAAa;gBAClE,EAAE,OAAOnG,OAAO;oBACd,IAAIA,MAAM,IAAI,KAAK,UAAU;wBAC3B,OAAO;oBACT;oBAEA,MAAMA;gBACR;YACF;;;YAEAkN,KAAAA;mBAAAA,SAAAA;gBACE,IAAI;oBACF/G,oDAAa,CAAC,IAAI,CAAC,IAAI;gBACzB,EAAE,OAAOnG,OAAO;oBACd,IAAIA,MAAM,IAAI,KAAK,UAAU;wBAC3B,MAAMA;oBACR;gBACF;YACF;;;YAEAkD,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACvB;gBACF;gBAEAiD,mDAAY,CAACuG,mDAAY,CAAC,IAAI,CAAC,IAAI,GAAG;oBAAE,WAAW;gBAAK;gBACxDvG,uDAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa;YAChD;;;WAhEWK;IAiEZ;;;;;;;;;;;;;;;;;;;;;ACtGD;;;CAGC;AAE2B;AACR;AACI;AAKxB,IAAM4G,sBAAsB;AAC5B,IAAMC,uBAAuB;AAa7B,IAAMC,gBAA0C;IAC9C;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,2EAA2E;AAC3E,8EAA8E;AAC9E,8EAA8E;AAC9E,oBAAoB;AACpB,IAAMC,iBAAiB;IACrB,IAAMC,KAAKnP,QAAQ,GAAG,CAAC,qBAAqB,IAAI;IAChD,IAAMoP,IAAID,GAAG,KAAK,CAAC;IACnB,OAAOC,IAAIA,CAAC,CAAC,EAAE,GAAG;AACpB;AAEA,IAAMC,OAAO,SAACC;WAAyBR,wDAAiB,CAAC,QAAQ,MAAM,CAACQ,KAAK,MAAM,CAAC;;AAEpF,4EAA4E;AAC5E,8EAA8E;AAC9E,IAAMC,wBAAwB,SAACC;WAAgBA,IAAI,OAAO,CAAC,OAAO;;AAElE,IAAMC,cAAc,SAAChB;IACnB,IAAI;QACF,OAAO3G,sDAAe,CAAC2G;IACzB,EAAE,OAAOiB,GAAQ;QACf,IAAIA,CAAAA,cAAAA,wBAAAA,EAAG,IAAI,MAAK,UAAU,OAAOC,OAAO,KAAK,CAAC;QAC9C,MAAMD;IACR;AACF;AAEA,IAAME,kBAAkB,SAAC7G;WACvBsF,gDAAS,CAACtF,IAAI,WAAW,IAAIiG;;AAExB,SAASzG,mBAAmBQ,GAAyB,EAAEH,QAAoB;IAChF,IAAMjG,OAAOoG,IAAI,WAAW;IAE5B,IAAM8G,iBAAiBnN,MAAM,IAAI,CAACkG,SAAS,MAAM,IAAI,IAAI,CAAC,SAAC2F,GAAGC;eAAMD,EAAE,IAAI,CAAC,aAAa,CAACC,EAAE,IAAI;;IAE/F,IAAMsB,gBAA0B,EAAE;IAClC,IAAMC,YAAsB,EAAE;QACzB1K,kCAAAA,2BAAAA;;QAAL,QAAKA,YAAiBwK,mCAAjBxK,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAAiC;YAAjCA,IAAMmE,UAANnE;YACH,IAAMmK,MAAMD,sBAAsBxG,IAAI,WAAW,CAACS,QAAQ,IAAI;YAC9DsG,cAAc,IAAI,CAAE,GAAST,OAAPG,KAAI,KAAkD,OAA/CH,KAAKI,YAAYjG,QAAQ,mBAAmB;YACzE,uEAAuE;YACvE,uEAAuE;YACvE,yEAAyE;YACzE,yEAAyE;YACzE,qEAAqE;YACrE,qEAAqE;YACrE,2DAA2D;YAC3D,IAAI,CAACA,QAAQ,kBAAkB,IAAI,CAACA,QAAQ,eAAe,EAAE;gBAC3D,IAAMwG,UAAUP,YAAYpB,gDAAS,CAAC7E,QAAQ,IAAI,EAAE;gBACpD,IAAIwG,QAAQ,MAAM,GAAG,GAAG;oBACtBD,UAAU,IAAI,CAAE,GAASV,OAAPG,KAAI,KAAiB,OAAdH,KAAKW;gBAChC;YACF;QACF;;QAhBK3K;QAAAA;;;iBAAAA,6BAAAA;gBAAAA;;;gBAAAA;sBAAAA;;;;IAkBL,OAAO;QACL,SAAS0J;QACT,cAAcM,KAAKI,YAAYpB,gDAAS,CAAC1L,MAAM;QAC/C,iBAAiB0M,KAAKI,YAAYpB,gDAAS,CAAC1L,MAAM;QAClD,kBAAkB0M,KAAKS,cAAc,IAAI,CAAC;QAC1C,yBAAyBT,KAAKU,UAAU,IAAI,CAAC;QAC7C,WAAWV,KAAKI,YAAYpB,gDAAS,CAAC1L,MAAM;QAC5C,aAAa3C,QAAQ,OAAO;QAC5B,aAAakP;IACf;AACF;AAEO,SAASzG,gBAAgBM,GAAyB;IACvD,IAAI;QACF,IAAMkH,MAAMnI,sDAAe,CAAC8H,gBAAgB7G,MAAM;QAClD,IAAMmH,SAASC,KAAK,KAAK,CAACF;QAC1B,IACE,CAACC,UACDE,CAAAA,OAAOF,uCAAPE,uDAAAA,CAAOF,OAAK,MAAM,YAClBA,OAAO,OAAO,KAAKnB,uBACnB,CAACE,cAAc,KAAK,CAAC,SAACN;mBAAM,OAAOuB,MAAM,CAACvB,EAAE,KAAK;YACjD;YACA,OAAO;QACT;QACA,OAAOuB;IACT,EAAE,UAAM;QACN,OAAO;IACT;AACF;AAEO,SAASxH,iBAAiBK,GAAyB,EAAEsH,EAAe;IACzE,IAAI;QACF,uEAAuE;QACvE,wEAAwE;QACxE,0BAA0B;QAC1B,IAAMC,YAAYV,gBAAgB7G;QAClC,IAAMwH,UAAW,GAAY,OAAVD,WAAU;QAC7BxI,uDAAgB,CAACyI,SAASJ,KAAK,SAAS,CAACE,IAAI,MAAM;QACnDvI,oDAAa,CAACyI,SAASD;IACzB,EAAE,UAAM;IACN,qDAAqD;IACvD;AACF;AAEO,SAAStF,kBAAkBjC,GAAyB;IACzD,IAAI;QACFjB,oDAAa,CAAC8H,gBAAgB7G;IAChC,EAAE,OAAO2G,GAAQ;QACf,IAAIA,CAAAA,cAAAA,wBAAAA,EAAG,IAAI,MAAK,UAAU,MAAMA;IAClC;AACF;AAEO,SAASlH,kBAAkB+F,CAAc,EAAEC,CAAc;IAC9D,OACED,EAAE,OAAO,KAAKC,EAAE,OAAO,IACvBD,EAAE,YAAY,KAAKC,EAAE,YAAY,IACjCD,EAAE,eAAe,KAAKC,EAAE,eAAe,IACvCD,EAAE,gBAAgB,KAAKC,EAAE,gBAAgB,IACzCD,EAAE,uBAAuB,KAAKC,EAAE,uBAAuB,IACvDD,EAAE,SAAS,KAAKC,EAAE,SAAS,IAC3BD,EAAE,WAAW,KAAKC,EAAE,WAAW,IAC/BD,EAAE,WAAW,KAAKC,EAAE,WAAW;AAEnC;;;;;;;;;;;;;;;;;;;;;ACxJA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;AAEiC;AAER;AACA;AAC0B;AAExB;AAE5B,IAAMoC,aAAa;IAACH,mDAAU;IAAEA,sDAAa;IAAEA,mDAAU;IAAEA,qDAAY;IAAEA,oDAAW;CAAC;AACrF,IAAMI,WAAW;IACf,IAAMC,QAAQF,WAAW,KAAK;IAC9BA,WAAW,IAAI,CAACE;IAChB,OAAOA;AACT;AAEO,SAASC,MAAMxJ,OAAe,EAAEhD,IAAc,EAAEyM,IAAmB;IACxE,OAAON,4CAAKA,CAACnJ,SAAShD,MAAM;QAC1B,OAAO;QACP,aAAa;OACVyM;AAEP;AAEA,SAASC;QAAYzM,QAAAA,iEAAiB;IACpC,OAAO,IAAIgM,4CAAQA,CAAC;QAClB,YAAY;QACZ3L,OAAAA,SAAAA,MAAMiC,IAAI,EAAEoK,CAAC,EAAEC,EAAE;YACf,IAAIrK,KAAK,QAAQ,CAAC,OAAO;gBACvBO,qCAAG,CAAC7C,QAAQ,UAAU,QAAQ,CAACsC,KAAK,KAAK,CAAC,GAAG,CAAC;YAChD,OAAO;gBACLO,qCAAG,CAAC7C,QAAQ,UAAU,QAAQ,CAACsC;YACjC;YAEAqK;QACF;IACF;AACF;AAEO,SAASC,eACd7J,OAAe,EACfhD,IAAc,EACdyM,IAAmB,EACnBlI,KAAsD;QAApDnC,SAAFmC,MAAEnC,QAAQnC,QAAVsE,MAAUtE;IAEV,IAAM6M,UAAUX,4CAAKA,CAACnJ,SAAShD,MAAM;QACnC,OAAO;YAAC;YAAU;YAAQ;SAAO;QACjC,aAAa;OACVyM;IAGL,IAAMF,QAAQD;IACd,IAAMS,iBAAiBX,6DAAcA,CAAC;QAAE,KAAKG,MAAM,IAAI,CAACnK;IAAQ;IAChE,IAAM4K,iBAAiBZ,6DAAcA,CAAC;QAAE,gBAAgB;QAAM,KAAKG,MAAM,IAAI,CAACnK;IAAQ;IAEtF,gDAAgD;IAChD0K,QAAQ,MAAM,CAAC,IAAI,CAACC,gBAAgB,IAAI,CAACL,YAAYzM;IACrD,gDAAgD;IAChD6M,QAAQ,MAAM,CAAC,IAAI,CAACE,gBAAgB,IAAI,CAACN,YAAYzM;IAErD,OAAO6M;AACT;;;;;;;;;;;;;;;AC1FA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;;;;AAEM,IAAMzF,yBAAN;;6DAAMA;aAAAA,SACC4F,OAAe;YAAkBC,OAAhB,iEAAuB,CAAC;+EAD1C7F;;gBAET,iEAFSA;YAEH4F;0GADqCC,OAAAA;;;WADlC7F;oEAAiBxJ,QAI7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClCD;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;AAEgC;AAE2B;AAClC;AACe;AACR;AAEgC;AAEjE,IAAMiQ,UAAUJ,+CAASA,CAAiBP,iDAASA;AAC5C,IAAMY,SAAS,SAAOpS;;;;;oBAAiB;;wBAAM2R,kDAAKA,CAAC3R,MAAM;4BAAE,WAAW;wBAAK;;;;;wBAApC;;;;;EAAuC;AAC9E,IAAMqS,gBAAgBN,+CAASA,CAACF,oCAAGA,EAAE;AAE5C,SAAeS,SAAStS,IAAY,EAAEuS,KAAmC;;YAG9D/C;;;;;;;;;;oBADM;;wBAAMiC,kDAAKA,CAACzR;;;oBAAzB;;wBAAOuS;4BAAM;;;;oBACN/C;oBACP,IAAIA,EAAE,IAAI,KAAK,UAAU;wBACvB;;4BAAO;;oBACT;oBACA,MAAMA;;;;;;;IAEV;;AAEA;;;CAGC,GACM,SAAegD,UAAUxS,IAAY;;;;;oBACnC;;wBAAMsS,SAAStS,MAAM,SAACyS;mCAAUA,MAAM,cAAc;;;;oBAA3D;;wBAAO;;;;IACT;;AAEA;;;CAGC,GACM,SAAe5H,YAAY7K,IAAY;;;;;oBACrC;;wBAAMsS,SAAStS,MAAM,SAACyS;mCAAUA,MAAM,WAAW;;;;oBAAxD;;wBAAO;;;;IACT;;AAEA;;;CAGC,GACM,SAAe/F,OAAO1M,IAAY;;;;;oBAChC;;wBAAMsS,SAAStS,MAAM,SAACyS;mCAAUA,MAAM,MAAM;;;;oBAAnD;;wBAAO;;;;IACT;;AAEA;;;;;;;;;CASC,GACM,SAAeC,cAAcC,GAAW,EAAEC,IAAY,EAAE3N,IAAY;;YAQjE4N,WACAC;;;;yBARJhT,CAAAA,QAAQ,QAAQ,KAAK,OAAM,GAA3BA;;;;yBACEmF,CAAAA,SAAS,MAAK,GAAdA;;;;oBACF;;wBAAMkN,QAAQQ,KAAKC;;;oBAAnB;;;;;;oBAEA;;wBAAMG,YAAYJ,KAAKC,MAAM3N;;;oBAA7B;;;;;;;;oBAGI4N,YAAY5N,SAAS,SAAS,SAASA;oBACvC6N,iBAAiBlI,8CAAQA,CAACkH,6CAAOA,CAACc,OAAOD;oBAC/C;;wBAAMI,YAAYD,gBAAgBF,MAAMC;;;oBAAxC;;;;;;;;IAEJ;;AAEA,SAAeE,YAAYJ,GAAW,EAAEC,IAAY,EAAE3N,IAAY;;YAIvDxD;;;;;;;;;;oBAFP,4DAA4D;oBAC5D;;wBAAMmQ,mDAAMA,CAACgB;;;oBAAb;;;;;;oBACOnR;oBACP,IAAIA,MAAM,IAAI,KAAK,UAAU;wBAC3B,MAAMA;oBACR;;;;;;oBAGF;;wBAAMiQ,oDAAOA,CAACiB,KAAKC,MAAM3N;;;oBAAzB;;;;;;IACF;;;;;;;;;;;;;;;;;;ACjHA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;;AAEsD;AAEK;AAChC;AAG5B;;;;;;;CAOC,GACM,SAAe4C,uBACpBoL,cAA0B,EAC1BtK,YAA0B;;YAGrBxD,2BAAAA,mBAAAA,gBAAAA,WAAAA,oBAAO+N,aAAaC,aACjB7J,SACA8J,SAEDxJ,4BAAAA,oBAAAA,iBAAAA,YAAAA,QAAMyJ,YACHC,aACDxJ,4BAAAA,oBAAAA,iBAAAA,YAAAA,QAAMtG,MACH+P,SAQAX,MAGAY;;;;oBAnBZrM,2CAAS,CAAC;oBACLhC,kCAAAA,2BAAAA;;;;;;;;;oBAAAA,YAAoCwD;;;2BAApCxD,6BAAAA,QAAAA;;;;kGAAAA,iBAAO+N,8BAAaC;oBACjB7J,UAAU2J,eAAe,GAAG,CAACC;oBAC7BE,UAAUpM,6CAAOA,CAACsC,QAAQ,mBAAmB,EAAE;oBAEhDM,mCAAAA,4BAAAA;;;;;;;;;oBAAAA,aAAoBuJ;;;2BAApBvJ,8BAAAA,SAAAA;;;;oBAAMyJ,aAANzJ;oBACG0J,cAAcD,WAAW,cAAc;oBACxCvJ,mCAAAA,4BAAAA;;;;;;;;;oBAAAA,aAAcvK,OAAO,IAAI,CAAC+T;;;2BAA1BxJ,8BAAAA,SAAAA;;;;oBAAMtG,OAANsG;oBACGyJ,UAAUD,WAAW,CAAC9P,KAAK;oBAI3B;;wBAAMkJ,2CAAMA,CAAC6G;;;oBAFnB,mEAAmE;oBACnE,+BAA+B;oBAC/B,IAAI,CAAE,eAAwB;wBAC5B;;;;oBACF;oBAEMX,OAAO5L,6CAAOA,CAACoM,SAAS5P;oBAE9B,6DAA6D;oBACvDgQ,sBAAsB5I,8CAAQA,CAACtB,QAAQ,IAAI,EAAEiK,SAAS,KAAK,CAACP,qCAAGA,EAAE,IAAI,CAAC;oBAE5E7L,2CAAS,CAAE,IAAoB3D,OAAjB8F,QAAQ,IAAI,EAAC,MAAekK,OAAXhQ,MAAK,QAA0B,OAApBgQ;oBAE1C;;wBAAMpB,2CAAMA,CAACN,6CAAOA,CAACc;;;oBAArB;oBACA;;wBAAMF,kDAAaA,CAACa,SAASX,MAAM;;;oBAAnC;oBACA;;wBAAMV,0CAAKA,CAACU,MAAM;;;oBAAlB;;;oBAlBG9I;;;;;;;;;;;;oBAAAA;oBAAAA;;;;;;;6BAAAA,8BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;;;;oBAFFF;;;;;;;;;;;;oBAAAA;oBAAAA;;;;;;;6BAAAA,8BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;;;;oBAJFzE;;;;;;;;;;;;oBAAAA;oBAAAA;;;;;;;6BAAAA,6BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;;;;;;;;;IA4BP;;;;;;;;;;;;;;;;;;;AC7EA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;;;;AAQmC;AAEpC,IAAMuO,oBAAN;;6DAAMA;aAAAA;+EAAAA;;gBAIF,iEAJEA,MACJ,uEAAQ,YAAR;QAIE,MAAK,WAAW,CAAC;;;iEALfA;;YAQJC,KAAAA;mBAAAA,SAAAA,YAAYhQ,KAAe;gBACzB,IAAI,CAAC,QAAQ,GAAGJ,yEAAaA,CAACI;gBAC9B,IAAI,CAAC,UAAU,CAAC;oBACd,IAAI4C,4EAAoBA,CAAC;wBACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI;wBACzB,SAASzG,QAAQ,MAAM;oBACzB;iBACD;YACH;;;YAEA8T,KAAAA;mBAAAA,SAAAA,cAAcjQ,KAAe;gBAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAACA,MAAM;YACnC;;;WApBI+P;EAAY5P,kEAAUA;AAuBrB,IAAMqD,MAAM,IAAIuM,MAAM;AACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9DzB;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;;;;;;;AAEuB;AAEY;AACM;AAEoB;AAEkB;AAEpC;AAE5C;;;;;;;;;;CAUC,GACM,IAAM5F,qCAAN;;aAAMA,qBAOkBkG,oBAAgC;+EAPlDlG;;QAKX,sEAAiB,+BAAjB;aAE6BkG,uBAAAA;QAC3B,IAAMC,8BAA8BD,qBAAqB,GAAG,CAAC;QAE7D,IAAI,CAACC,6BAA6B;YAChC,MAAM,IAAIC,UACR;QAEJ;QAEA,IAAI,CAAC,2BAA2B,GAAGD;;iEAhB1BnG;;YAmBX,0FAA0F,GAC1FqG,KAAAA;mBAAAA,SAAAA;gBAAY/P,IAAAA,IAAAA,OAAAA,UAAAA,QAAGgQ,UAAHhQ,UAAAA,OAAAA,OAAAA,GAAAA,OAAAA,MAAAA;oBAAGgQ,QAAHhQ,QAAAA,SAAAA,CAAAA,KAAoB;;oBACvBiQ;gBAAP,OAAOA,CAAAA,QAAAA,6CAAIA,EAAC,OAAO,OAAZA,OAAAA;oBAAa,IAAI,CAAC,2BAA2B,CAAC,IAAI;iBAAa,CAA/DA,OAAoD,oEAAGD;YAChE;;;YAEA,4FAA4F,GAC5FE,KAAAA;mBAAAA,SAAAA,YAAYC,QAAgB;gBAC1B,OAAOpG,oDAAa,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAEoG;YAC9D;;;YAEA,iFAAiF,GACjFC,KAAAA;mBAAAA,SAAAA;gBACE,OAAO,IAAIjK,IAAI,IAAI,CAAC,oBAAoB;YAC1C;;;YAEA,sDAAsD,GACtDkK,KAAAA;mBAAAA,SAAAA,WAAWjR,IAAY;gBACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAACA;YACvC;;;YAEA,qFAAqF,GACrFkR,KAAAA;mBAAAA,SAAAA,WAAWlR,IAAY;gBACrB,IAAM8F,UAAU,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC9F;gBAE9C,IAAI,CAAC8F,SAAS;oBACZ,MAAM,IAAIpH,MAAO,yBAA6B,OAALsB,MAAK;gBAChD;gBAEA,OAAO8F;YACT;;;YAEA,wEAAwE,GACxEqL,KAAAA;mBAAAA,SAAAA,kBAAkBnR,IAAY;gBAC5B,IAAM8F,UAAU,IAAI,CAAC,UAAU,CAAC9F;gBAChC,OAAOuJ,oEAAyBA,CAAC;oBAACzD;iBAAQ,EAAE,IAAI,CAAC,oBAAoB;YACvE;;;YAEA,kFAAkF,GAClFsL,KAAAA;mBAAAA,SAAAA,oBAAoBtR,OAKnB;gBACC,IAAMuR,cAAc,IAAI,CAAC,cAAc;gBACvC,IAAMC,mBAA+B,IAAIvK;gBAEzC,IAAMwK,eAAevS,MAAM,IAAI,CAACqS,YAAY,MAAM,IAAI,GAAG,CAAC,SAACtG;2BAAMA,EAAE,mBAAmB;;gBACtF,IAAMyG,uBAAuB3I,wDAAeA,CAAC,wIACxC/I;oBACH,UAAU,IAAI,CAAC,2BAA2B,CAAC,IAAI;oBAC9C,GAAG,CAAC,SAAC2R;2BAAM9G,mDAAY,CAAC8G,GAAG;;gBAC9B,IAAMC,uBAAuBrB,iDAAUA,CAACkB,cAAcC;oBAEjD7P,kCAAAA,2BAAAA;;oBAAL,QAAKA,YAAiB0P,YAAY,MAAM,uBAAnC1P,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAAuC;wBAAvCA,IAAMmE,UAANnE;wBACH,IAAMgQ,cAAcD,qBAAqB,QAAQ,CAAC5L,QAAQ,mBAAmB;wBAC7E,IAAM8L,cAAc,CAAC9R,QAAQ,OAAO,CAAC,QAAQ,CAACgG,QAAQ,IAAI;wBAC1D,IAAM+L,aAAa,CAAC/R,QAAQ,OAAO,CAAC,MAAM,IAAIA,QAAQ,OAAO,CAAC,QAAQ,CAACgG,QAAQ,IAAI;wBAEnF,IAAI6L,eAAeC,eAAeC,YAAY;4BAC5CP,iBAAiB,GAAG,CAACxL,QAAQ,IAAI,EAAEA;wBACrC;oBACF;;oBARKnE;oBAAAA;;;6BAAAA,6BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;gBAUL,OAAO2P;YACT;;;YAEAQ,KAAAA;mBAAAA,SAAAA,aAAahM,OAAgB;gBAC3B,OACEA,QAAQ,IAAI,KAAK,IAAI,CAAC,2BAA2B,CAAC,IAAI,IACtDwK,qDAAYA,CAACxK,QAAQ,IAAI,EAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI;YAEpE;;;YAEAiM,KAAAA;mBAAAA,SAAAA,cAAcjM,OAAgB;gBAC5B,OAAO,CAAC,IAAI,CAAC,YAAY,CAACA;YAC5B;;;YAEAkM,KAAAA;mBAAAA,SAAAA,iCAAiCrM,QAAkB,EAAEhC,GAAQ;gBAC3D,IAAMsO,2BAA2B1B,iEAAqBA,CAAC;oBACrD,SAAS,IAAI,CAAC,2BAA2B;oBACzC5K,UAAAA;oBACA,KAAK,IAAI;oBACT,yBAAyB;oBACzB,oBAAoB;oBACpBhC,KAAAA;gBACF;gBAEA,OAAO,IAAIoD,IAAK,oEAAGkL,yBAAyB,OAAO;YACrD;;;;YA3GaC,KAAAA;mBAAb,SAAaA,SAASlO,QAAgB;;;;;;oCAD3BsG;gCAEuB;;oCAAMhB,sDAAWA,CAACtF,UAAU6E,wDAAeA,CAAC;wCAAE7E,UAAAA;oCAAS;;;gCAAvF;;oCAAO,aAFEsG;;wCAEuB;sCAA0D;;;;gBAC5F;;;;WAHWA;IA6GZ;;;;;;;;;;;;;;;;ACjKD;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC,GAE8B;AACE;AAgB1B,SAASnB,gBAAgBtB,GAAW;IACzC,OAAOsK,+CAAOA,CAAC;QAAEtK,KAAAA;QAAK,WAAW;IAAM;AACzC;AAEO,SAASuB,iBAAiB5M,IAAY,EAAEwB,IAAkB;IAC/D,OAAOoU,gDAAQA,CAAC5V,MAAMwB;AACxB;AAEO,IAAMqU,mBAAmB,SAACC;WAAuBA,WAAW,UAAU,CAAC;EAAS;;;;;;;;;;;;;ACvDvF;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;AAEM,SAAehO,mBAAsBiO,OAAc,EAAEC,EAA8B;;YACnF7Q,2BAAAA,mBAAAA,gBAAAA,WAAAA,OAAM0E;;;;oBAAN1E,kCAAAA,2BAAAA;;;;;;;;;oBAAAA,YAAe4Q;;;2BAAf5Q,6BAAAA,QAAAA;;;;oBAAM0E,QAAN1E;oBACH,4EAA4E;oBAC5E,oBAAoB;oBACpB;;wBAAM8Q,YAAYpM,OAAOmM;;;oBAAzB;;;oBAHG7Q;;;;;;;;;;;;oBAAAA;oBAAAA;;;;;;;6BAAAA,6BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;;;;;;;;;IAKP;;AAEO,SAAe8Q,YAAeC,KAAU,EAAEF,EAA8B;QAAEG,cAAAA,iEAAc;;;YAC7F,IAAID,MAAM,MAAM,KAAK,GAAG;gBACtB;;;YACF;YAEA;;gBAAO,IAAIE,QAAc,SAACpP,SAASqP;oBACjC,IAAIC,iBAAiB;oBACrB,IAAMC,SAASL,MAAM,KAAK,CAAC;oBAE3B,SAAeM,aAAaC,IAAO;;gCAgBxBhV;;;;wCAfT6U;;;;;;;;;wCAGE;;4CAAMN,GAAGS;;;wCAAT;wCAEAH;wCAEA,IAAIC,OAAO,MAAM,GAAG,GAAG;4CACrB,2DAA2D;4CAC3DC,aAAaD,OAAO,KAAK;wCAC3B,OAAO,IAAID,mBAAmB,GAAG;4CAC/B,sEAAsE;4CACtE,0BAA0B;4CAC1BtP;wCACF;;;;;;wCACOvF;wCACP4U,OAAO5U;;;;;;;;;;;wBAEX;;oBAEA8U,OAAO,MAAM,CAAC,GAAGJ,aAAa,GAAG,CAACK;gBACpC;;;IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtEA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;;;;;;AAE2C;AACH;AACV;AAEK;AACR;AAOJ;AAOL;AACqE;AAYjF,IAAMY,wBAAN;;aAAMA,QAkCCxJ,WAAyB,EAAEyJ,WAAmB;+EAlC/CD;QAMX,wBAAwB,GACxB,sEAAgB,QAAhB;QACA,0DAA0D,GAC1D,sEAAgB,uBAAhB;QACA,gFAAgF,GAChF,sEAAgB,uBAAhB;QACA,oFAAoF,GACpF,sEAAgB,kBAAhB;QACA,0DAA0D,GAC1D,sEAAgB,QAAhB;QACA,+BAA+B,GAC/B,sEAAgB,WAAhB;QACA,uEAAuE,GACvE,sEAAgB,mBAAhB;QACA,iEAAiE,GACjE,sEAAgB,0BAAhB;QACA,qEAAqE,GACrE,sEAAgB,mBAAhB;QACA,4EAA4E,GAC5E,sEAAgB,WAAhB;QACA,gEAAgE,GAChE,sEAAgB,qBAAhB;QACA,kFAAkF,GAClF,sEAAgB,gBAAhB;QAEA,sEAAO,mBAAkB;QACzB,sEAAO,sBAAqB;QAG1B,IAAI,CAAC,IAAI,GAAG7X,OAAO,MAAM,CAACqO;QAC1B,IAAI,CAAC,IAAI,GAAGyJ;QAEZ,IAAI,CAAC,mBAAmB,GAAGrQ,6CAAOA,CAAC,IAAI,CAAC,IAAI,EAAE;QAC9C,IAAI,CAAC,mBAAmB,GAAGA,6CAAOA,CAAC,IAAI,CAAC,IAAI,EAAE;QAC9C,IAAI,CAAC,cAAc,GAAGA,6CAAOA,CAAC,IAAI,CAAC,IAAI,EAAE;QAEzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;QAChC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC;QACzD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC;QACrD,IAAI,CAAC,eAAe,GAAG,mEAClB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,sBAAsB;QAEhC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAEhD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC;QACrC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC;QAElD,IAAI,CAAC,YAAY,GAAG,EAAE;YACjB7B,kCAAAA,2BAAAA;;YAAL,QAAKA,YAAgBgS,yDAAYA,qBAA5BhS,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAA8B;gBAA9BA,IAAMmS,SAANnS;gBACH,IAAI,IAAI,CAAC,iBAAiB,CAACmS,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAACA;YAC7D;;YAFKnS;YAAAA;;;qBAAAA,6BAAAA;oBAAAA;;;oBAAAA;0BAAAA;;;;;kEAvDIiS;;YA4DA;iBAAX;gBACE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI;YACvB;;;YAEOG,KAAAA;mBAAP,SAAOA,6BAA6BjO,OAAgB,EAAEkO,6BAAsC;gBAC1F,IAAMC,uBAAuB,IAAI,CAAC,eAAe,CAACnO,QAAQ,IAAI,CAAC;gBAE/D,IAAIoO;gBACJ,IAAIF,+BAA+B;oBACjCE,+BAA+BpO,QAAQ,IAAI,CAAC,OAAO;gBACrD,OAAO;oBACL,IAAMqO,wBAAwBC,cAAchN,8CAAQA,CAAC,IAAI,CAAC,IAAI,EAAEtB,QAAQ,IAAI;oBAC5EoO,+BAAgC,QAA6B,OAAtBC;gBACzC;gBAEA,aAAa;gBACb,IAAIF,yBAAyBC,8BAA8B;oBACzD;gBACF;gBAEA,IAAIG;gBACJ,IAAIhC,+DAAgBA,CAAC4B,yBAAyBD,+BAA+B;oBAC3EK,aAAa;gBACf,OAAO,IAAIhC,+DAAgBA,CAAC4B,uBAAuB;oBACjDI,aAAa;gBACf,OAAO;oBACLA,aAAa;gBACf;gBAEA,MAAM,IAAInM,6CAAQA,CACf,IAA6BpC,OAA1B,IAAI,CAAC,IAAI,EAAC,kBAAiCuO,OAAjBvO,QAAQ,IAAI,EAAC,MAAe,OAAXuO,YAAW,2DAC1D;oBACE,QAAS,IAAsBJ,OAAnBnO,QAAQ,IAAI,EAAC,QAA2B,OAArBmO,sBAAqB;oBACpD,UAAW,IAAsBC,OAAnBpO,QAAQ,IAAI,EAAC,QAAmC,OAA7BoO,8BAA6B;oBAC9D,WAAU,GAAgB,OAAd,IAAI,CAAC,IAAI,EAAC,MAA6B,OAAzB,IAAI,CAAC,mBAAmB,EAAC;gBACrD;YAEJ;;;YAEOI,KAAAA;mBAAP,SAAOA;gBACL,OAAQ,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAK,CAAC;YACtF;;;YAOOC,KAAAA;mBALP;;;;GAIC,GACD,SAAOA;gBACL,OAAO/Q,6CAAOA,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,GAAG,0BAA0B,IAAI;YAChF;;;YAEOgR,KAAAA;mBAAP,SAAOA;gBACL,OAAQ,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAK,CAAC;YACtF;;;YAEOC,KAAAA;mBAAP,SAAOA;gBACL,OAAO,CAAC,CAAE,KAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAM;YACnF;;;YAEOC,KAAAA;mBAAP,SAAOA,UAAU1U,IAAY;gBAC3B,OAAOA,QAAQ,IAAI,CAAC,OAAO;YAC7B;;;YAEO2U,KAAAA;mBAAP,SAAOA;gBACL,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG;YACpC;;;YAEOC,KAAAA;mBAAP,SAAOA;gBACL,IAAMrI,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG;gBAEzB,IAAI,CAACA,KAAK;oBACR,OAAO,CAAC;gBACV;gBAEA,IAAI,OAAOA,QAAQ,UAAU;oBAC3B,OACE,oEAAC,IAAI,CAAC,IAAI,EAAG/I,6CAAOA,CAAC,IAAI,CAAC,IAAI,EAAE+I;gBAEpC;gBAEA,IAAIG,CAAAA,OAAOH,oCAAPG,wDAAAA,CAAOH,IAAE,MAAM,UAAU;oBAC3B,IAAMsI,aAAsC,CAAC;wBACxClT,kCAAAA,2BAAAA;;wBAAL,QAAKA,YAAiB5F,OAAO,IAAI,CAACwQ,yBAA7B5K,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAAmC;4BAAnCA,IAAMmT,UAANnT;4BACHkT,UAAU,CAACC,QAAQ,GAAGtR,6CAAOA,CAAC,IAAI,CAAC,IAAI,EAAE+I,GAAG,CAACuI,QAAQ;wBACvD;;wBAFKnT;wBAAAA;;;iCAAAA,6BAAAA;gCAAAA;;;gCAAAA;sCAAAA;;;;oBAGL,OAAOkT;gBACT;gBAEA,MAAM,IAAI3M,6CAAQA,CACf,IAAa,OAAV,IAAI,CAAC,IAAI,EAAC,wDACZ,kCACF;oBACE,WAAWkL,6CAAOA,CAAC7G;oBACnB,WAAU,GAAgB,OAAd,IAAI,CAAC,IAAI,EAAC,MAA6B,OAAzB,IAAI,CAAC,mBAAmB,EAAC;gBACrD;YAEJ;;;YAEawI,KAAAA;mBAAb,SAAaA;oGAAU5M,UAAkB;wBAAEtH;;;wBAAAA,OAAAA;wBACzC8C,0CAAQ,CAAE,mBAAqC,OAAnBwE,YAAW,UAAkB,OAAV,IAAI,CAAC,IAAI,EAAC;wBACzD;;4BAAOoL,4DAAkBA,CAACpL,YAAYtH,MAAM,IAAI;;;gBAClD;;;;YAEOmU,KAAAA;mBAAP,SAAOA,mBACL7M,UAAkB;oBAClBrI,UAAAA,iEAAgD,CAAC;gBAEjD,OAAO0T,qEAA2BA,CAAC;oBACjC,QAAQrL;oBACR,MAAMrI,QAAQ,IAAI,IAAI,EAAE;oBACxB,KAAK,IAAI;oBACT,OAAOA,QAAQ,KAAK;gBACtB;YACF;;;YAEOmV,KAAAA;mBAAP,SAAOA;oBAAgBnV,UAAAA,iEAAoC,CAAC;gBAC1D,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI;oBAC3B6D,6CAAW,CAAE,2CAAoD,OAAV,IAAI,CAAC,IAAI,EAAC;oBACjE,OAAO;gBACT;gBAEA,OAAO+P,qEAAoBA,CAAC;oBAC1B,KAAK,IAAI;oBACT,YAAY5T,QAAQ,UAAU;gBAChC;YACF;;;YAEOoV,KAAAA;mBAAP,SAAOA;gBACL,OAAOnZ,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG;YACpD;;;YAEaoZ,KAAAA;mBAAb,SAAaA;oGAAoB/P,KAAsC;wBAApClB;;;;gCAAAA,YAAFkB,MAAElB;gCACjCP,0CAAQ,CAAE,IAAa,OAAV,IAAI,CAAC,IAAI,EAAC;gCAEvBA,2CAAS,CAAC;gCACV;;oCAAM0P,sDAAYA,CAAC,IAAI,CAAC,IAAI,EAAEnP;;;gCAA9B;gCACAP,2CAAS,CAAC;gCAEV;;oCAAM,IAAI,CAAC,2BAA2B;;;gCAAtC;;;;;;gBACF;;;;YAOayR,KAAAA;mBALb;;;;GAIC,GACD,SAAaA,yBACXC,OAAe,EACfC,OAAe;oBACfC,MAAAA,iEAAe,OACfC;;wBAMMC,YAEAvR;;;;gCANNP,0CAAQ,CAAE,IAAyC0R,OAAtC,IAAI,CAAC,IAAI,EAAC,8BAAuCC,OAAXD,SAAQ,KAAW,OAARC;gCAE9D3R,2CAAS,CAAC;gCAEJ8R,aAAaD,SAAU,IAAW,OAARF;gCAE1BpR;oCAAc,GAAaoR,OAAXD,SAAQ,KAAW,OAARC;;gCACjC,IAAIC,KAAKrR,UAAU,IAAI,CAAC;qCAEpB,IAAI,CAAC,kBAAkB,EAAvB;;;;gCACF;;oCAAMmP,sDAAYA,CAAC,IAAI,CAAC,IAAI;;;gCAA5B;;;;;;gCAEA;;oCAAMA,sDAAYA,CAAC,IAAI,CAAC,IAAI,EAAEnP,WAAW;;;gCAAzC;;;gCAGFP,0CAAQ,CAAE,IAAyC0R,OAAtC,IAAI,CAAC,IAAI,EAAC,8BAAuCI,OAAXJ,SAAQ,KAAc,OAAXI;gCAE9D;;oCAAMnC,mDAASA,CACb,IAAI,CAAC,mBAAmB,EACvB,IAAiBgC,OAAdD,SAAQ,QAAc,OAARC,SAAQ,MACzB,IAAiBG,OAAdJ,SAAQ,QAAiB,OAAXI,YAAW;;;gCAH/B;gCAKA,sHAAsH;gCACtH;;oCAAMnC,mDAASA,CACb9P,6CAAOA,CAAC,IAAI,CAAC,IAAI,EAAE,cAClB,GAAa8R,OAAXD,SAAQ,KAAW,OAARC,UACb,GAAaG,OAAXJ,SAAQ,KAAc,OAAXI;;;gCAHhB;gCAMA9R,2CAAS,CAAC;gCAEV;;oCAAM,IAAI,CAAC,2BAA2B;;;gCAAtC;;;;;;gBACF;;;;YAOa+R,KAAAA;mBALb;;;;GAIC,GACD,SAAaA;;+BAMLC,gBACAC,kBAGDjU,2BAAAA,mBAAAA,gBAAAA,WAAAA,OAAM3B,MACH6V;;;;;gCAVR,+CAA+C;gCAC/C,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;oCACzB;;;gCACF;gCAEuB;;oCAAMpC,4DAAkBA,CAAC,IAAI,CAAC,IAAI;;;gCAAnDkC,iBAAiB;gCACjBC,mBAAmB,IAAIE,IAAI/Z,OAAO,IAAI,CAAC4Z;gCAGxChU,kCAAAA,2BAAAA;;oCADL,yCAAyC;oCACzC,IAAKA,YAAc5F,OAAO,IAAI,CAAC4Z,sCAA1BhU,6BAAAA,QAAAA,yBAAAA,iCAA2C;wCAArC3B,OAAN2B;wCACGkU,YAAYF,cAAc,CAAC3V,KAAK;wCACtC6V,UAAU,qBAAqB,CAAC,OAAO,CAAC,SAACE;mDAAMH,gBAAiB,UAAM,CAACG;;oCACzE;;oCAHKpU;oCAAAA;;;6CAAAA,6BAAAA;4CAAAA;;;4CAAAA;kDAAAA;;;;gCAKLiU,iBAAiB,OAAO,CAAC,SAAC5V;oCACxB,IAA0CgW,aAAAA,MAAK,IAAI,EAA3CC,eAAkCD,WAAlCC,cAAcC,kBAAoBF,WAApBE;oCACtB,IAAMC,kBAAkB3S,6CAAOA,CAAC,MAAK,mBAAmB,EAAExD;oCAC1D,IAAMoW,eAAeH,gBAAgBA,aAAa,cAAc,CAACjW;oCACjE,IAAMqW,kBAAkBH,mBAAmBA,gBAAgB,cAAc,CAAClW;oCAE1E,IAAI,CAACoW,gBAAgB,CAACC,mBAAmBnD,8CAAUA,CAACiD,kBAAkB;wCACpExS,2CAAS,CAAE,oBAAwB,OAAL3D,MAAK;wCACnCmT,8CAAUA,CAACgD;oCACb;gCACF;;;;;;gBACF;;;;;YArRoBG,KAAAA;mBAApB,SAAoBA,SAAS9Z,IAAY;;wBACjC+Z;;;;gCAAU;;oCAAMpN,8DAAeA,CAAC3M;;;gCAAhC+Z,UAAU;gCAChB;;oCAAO,IAHE3C,QAGU2C,SAAS/Z;;;;gBAC9B;;;;WAJWoX;IAuRZ;AAED,6DAA6D;AAC7D,SAASQ,cAAc5X,IAAY;IACjC,OAAOA,KAAK,OAAO,CAAC,YAAY;AAClC;;;;;;;;;;;;;;;;;;;;;;AC1VA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;;;;AAEkC;AACP;AAEF;AAEoC;AAU9D,IAAMia,6BAA6B,SAAC5L,GAAYC;WAAeA,EAAE,IAAI,CAAC,MAAM,GAAGD,EAAE,IAAI,CAAC,MAAM;;AAE5F,gDAAgD,GAChD,SAAe6L,sBAAsBxR,QAAoB,EAAEG,GAAyB,EAAE1B,GAAQ;;YAGxFgT,QAiBK3K,GAMH4K,QACAC,mBAGClV,2BAAAA,mBAAAA,gBAAAA,WAAAA,OAAMyB,MACmB0T,kBAArBC,KAAQC,WACTxa,MA+BJya,wBACAC,kBAED9Q,4BAAAA,oBAAAA,iBAAAA,YAAAA,QAAMN,SAMHqR,YACAlU,QAEDqD,4BAAAA,oBAAAA,iBAAAA,YAAAA,qBAAO8Q,OAAM3V;;;;oBA1EpBkC,IAAI,OAAO,CAAC;;;;;;;;;oBAII;;wBAAMqJ,4CAAKA,CACvB,OACA;4BACE;4BACA;4BACA;4BACA;0BAJF,OAKE,oEAAGhO,MAAM,IAAI,CAACkG,SAAS,MAAM,IAC1B,MAAM,CAAC,SAAC6F;mCAAM1F,IAAI,YAAY,CAAC0F;2BAC/B,GAAG,CAAC,SAACA;mCAAMA,EAAE,IAAI;8BAEtB;4BACE,KAAK1F,IAAI,WAAW;wBACtB;;;oBAbCsR,SAAW,cAAXA;;;;;;oBAeI3K;oBACP,sEAAsE;oBACtErI,IAAI,OAAO,CAAC;oBACZ;;wBAAO,IAAIoD;;;oBAGP6P,SAASD,OAAO,IAAI;oBACpBE,oBAA6B,IAAI9P;oBAEvC,IAAI6P,QAAQ;wBACLjV,kCAAAA,2BAAAA;;4BAAL,IAAKA,YAAciV,OAAO,KAAK,CAAC,4BAA3BjV,6BAAAA,QAAAA,yBAAAA,iCAAkC;gCAA5ByB,OAANzB;gCACyBmV,mBAAAA,wDAAAA,CAAAA,KAAK,IAAI,GAAG,KAAK,CAAC,OAAvCC,MAAqBD,qBAAbE,YAAaF,uBAAhB;gCACNta,OAAOwa,UAAU,IAAI,CAAC;gCAC5B,OAAQD;oCACN,KAAK;oCACL,KAAK;wCACH,iEAAiE;wCACjE,8DAA8D;wCAC9D,uBAAuB;wCACvB,IAAIF,kBAAkB,GAAG,CAACra,UAAU,WAAW;4CAC7Cqa,kBAAkB,GAAG,CAACra,MAAM;wCAC9B;wCACA;oCAEF,KAAK;wCACHqa,kBAAkB,GAAG,CAACra,MAAM;wCAC5B;oCAEF,KAAK;wCACHqa,kBAAkB,GAAG,CAACra,MAAM;wCAC5B;oCAEF,KAAK;oCACL,KAAK;oCACL,KAAK;oCACL;wCACEmH,IAAI,OAAO,CAAE,mCAA8CnH,OAAZua,KAAI,UAAa,OAALva,MAAK;wCAChEqa,kBAAkB,GAAG,CAACra,MAAM;wCAC5B;gCACJ;4BACF;;4BA9BKmF;4BAAAA;;;qCAAAA,6BAAAA;oCAAAA;;;oCAAAA;0CAAAA;;;;oBA+BP;oBAEMsV,yBAAyBjY,MAAM,IAAI,CAACkG,SAAS,MAAM,IAAI,IAAI,CAACuR;oBAC5DS,mBAAmB,IAAInQ;oBAExBX,mCAAAA,4BAAAA;;wBAAL,IAAKA,aAAiB6Q,6CAAjB7Q,8BAAAA,SAAAA,0BAAAA,kCAAyC;4BAAnCN,UAANM;4BACH,IAAIf,IAAI,aAAa,CAACS,UAAU;gCAC9BoR,iBAAiB,GAAG,CAACpR,SAAS5G;gCAC9B;4BACF;4BAEMiY,aAAsB,IAAIpQ;4BAC1B9D,SAASoC,IAAI,WAAW,CAACS,QAAQ,IAAI;4BAEtCQ,mCAAAA,4BAAAA;;gCAAL,IAAKA,aAAsBuQ,wCAAtBvQ,8BAAAA,SAAAA,0BAAAA,kCAAyC;kHAAzCA,kBAAO8Q,wBAAM3V;oCAChB,IAAI2V,MAAK,UAAU,CAACnU,SAAS;wCAC3BkU,WAAW,GAAG,CAACC,OAAM3V;wCACrBoV,iBAAkB,UAAM,CAACO;oCAC3B;gCACF;;gCALK9Q;gCAAAA;;;yCAAAA,8BAAAA;wCAAAA;;;wCAAAA;8CAAAA;;;;4BAOL3C,IAAI,OAAO,CAAE,IAA0BwT,OAAvBrR,QAAQ,IAAI,EAAC,YAA0B,OAAhBqR,WAAW,IAAI,EAAC;4BACvDD,iBAAiB,GAAG,CAACpR,SAASqR;wBAChC;;wBAlBK/Q;wBAAAA;;;iCAAAA,8BAAAA;gCAAAA;;;gCAAAA;sCAAAA;;;;oBAoBL,IAAIyQ,kBAAkB,IAAI,EAAE;wBAC1B,MAAM,IAAInY,MACP,mDAEC,OAFiD+N,KAAK,SAAS,CAC/DzN,MAAM,IAAI,CAAC6X,kBAAkB,OAAO;oBAG1C;oBAEA;;wBAAOK;;;;IACT;;AAEA,4CAA4C,GAC5C,SAAeG,aAAavR,OAAgB,EAAET,GAAyB;;YAM3DsR;;;;oBALV,IAAItR,IAAI,aAAa,CAACS,UAAU;wBAC9B;;;oBACF;;;;;;;;;oBAGqB;;wBAAMkH,4CAAKA,CAC5B;4BACC;4BAAO;4BAAM;4BAAK;4BAAsB;4BAAMlH,QAAQ,IAAI;2BAC3D;4BACE,KAAKT,IAAI,WAAW;wBACtB;;;oBALMsR,SAAW,cAAXA;oBAQR;;wBAAOA,OAAO,IAAI,MAAMzX;;;;oBAExB,gDAAgD;oBAChD;;wBAAOA;;;;;;;;IAEX;;AAEA;;CAEC,GACD,SAAeoY,YACbxR,OAAgB,EAChByR,OAA4B,EAC5B5R,QAAkB,EAClBN,GAAyB,EACzB1B,GAAQ;;YAEF6T,KAUAC,gBAcAC,QAYAC,MAMAC,UAcAC;;;;oBAxDM;;wBAAMR,aAAavR,SAAST;;;oBAAlCmS,MAAM;oBACZ,IAAIA,KAAK;wBACP7T,IAAI,OAAO,CAAE,IAAgB,OAAbmC,QAAQ,IAAI,EAAC,iBAAe0R;oBAC9C;oBAEA,IAAI,CAACD,WAAWvY,MAAM,IAAI,CAACuY,QAAQ,MAAM,IAAI,QAAQ,CAAC,YAAY;wBAChE5T,IAAI,OAAO,CAAE,IAAgB,OAAbmC,QAAQ,IAAI,EAAC;wBAC7B;;;oBACF;oBAEuB;;wBAAM8M,QAAQ,GAAG,CACtC5T,MAAM,IAAI,CAACuY,SACR,IAAI,CAAC,SAAC1M,GAAGC;mCAAMD,CAAC,CAAC,EAAE,CAAC,aAAa,CAACC,CAAC,CAAC,EAAE;2BACtC,GAAG,CAAC;oHAAQtO,kBAAMiF;;oCAKXwN;;;;4CAJN,IAAIxN,SAAS,WAAW;gDACtB;;oDAAQ,GAAO,OAALjF,MAAK;;4CACjB;4CAEc;;gDAAMga,iDAAIA,CAACnR,IAAI,WAAW,CAAC7I;;;4CAAnCyS,QAAQ;4CACdtL,IAAI,OAAO,CAAE,IAAkCsL,OAA/BnJ,QAAQ,IAAI,EAAC,oBAAuCtJ,OAArByS,MAAM,OAAO,EAAC,SAAY,OAALzS;4CACpE;;gDAAQ,GAAUyS,OAARzS,MAAK,KAAiB,OAAdyS,MAAM,OAAO;;;;4BACjC;;;;oBAXEwI,iBAAiB;oBAcjBC,SAASnH,iEAAqBA,CAAC;wBACnCzK,SAAAA;wBACAH,UAAAA;wBACAN,KAAAA;wBACA1B,KAAAA;wBACA,yBAAyB;wBACzB,oBAAoB;oBACtB;oBACA,IAAI,CAAC+T,QAAQ;wBACX;;;oBACF;oBAEMC,OAAO3Y,MAAM,IAAI,CAAC0Y,OAAO,MAAM,IAClC,GAAG,CAAC;4BAAG1X,aAAAA,MAAMsV,gBAAAA;+BAAe,GAAUA,OAARtV,MAAK,KAAW,OAARsV;uBACtC,IAAI,CAAC,SAACzK,GAAGC;+BAAMD,EAAE,aAAa,CAACC;;oBAElCnH,IAAI,OAAO,CAAE,IAAgB,OAAbmC,QAAQ,IAAI,EAAC,uBAAqB6R,KAAK,MAAM;oBAEvDC,WAAWnL,KAAK,SAAS,CAC7B;wBACE+K,KAAAA;wBACA,SAASC;wBACTE,MAAAA;oBACF,GACA,MACA;oBAGF,IAAIrb,QAAQ,GAAG,CAAC,8BAA8B,EAAE;wBAC9C;;4BAAOsb;;oBACT;oBAEMC,OAAOzM,wDAAiB,CAAC;oBAC/ByM,KAAK,MAAM,CAACD;oBACZ;;wBAAOC,KAAK,MAAM,CAAC;;;;IACrB;;AAEA;;;;;CAKC,GACM,SAAerT,gBAAgBa,GAAyB,EAAE1B,GAAQ,EAAEgC,QAAkB;;YACrFT,UACAgS,kBAGAY;;;;oBAJA5S,WAAWG,IAAI,cAAc;oBACV;;wBAAMqR,sBAAsBxR,UAAUG,KAAK1B;;;oBAA9DuT,mBAAmB;oBAEzB,oCAAoC,GAC9BY,YAAyB,IAAI/Q;oBAEnC;;wBAAM6L,QAAQ,GAAG,CACf5T,MAAM,IAAI,CAACkG,SAAS,MAAM,IAAI,GAAG,CAAC,SAAOY;;;;;;gDACvCgS,UAAU,GAAG;;gDACXhS,QAAQ,IAAI;;4CACZ;;gDAAMwR,YAAYxR,SAASoR,iBAAiB,GAAG,CAACpR,UAAUH,UAAUN,KAAK1B;;;4CAF3EmU,QAAAA;gDAEE;;;;;;;4BAEJ;;;;oBANF;oBASA;;wBAAOA;;;;IACT;;;;;;;;;;;;;;;;;;;;;;;;;;ACrQA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;;AAE2B;AACJ;AACS;AAEG;AACA;AACiB;AAErD,IAAMG,OAAO1J,+CAASA,CAACwJ,6CAAQA;AAUxB,SAAezO;uFACpBtF,QAAgB,EAChBkU,qBAA+B;YAC/B7Z,oBAAE8Z,uBAAcC,SAEVlT,UAEAmT,wBAED1W,2BAAAA,mBAAAA,gBAAAA,WAAAA,OAAMiG,SACH0Q,gBAEDlS,4BAAAA,oBAAAA,iBAAAA,YAAAA,QAAMmS,UACHC,mBACAC,YACA3S,SAMA4S;;;;;oBAlBVra,OAAAA,oEAAmD,CAAC,kBAApDA,KAAE8Z,SAAAA,sEAAF9Z,KAAgB+Z,SAAAA;oBAEVlT,WAAuB,IAAI6B;oBAEF;;wBAAMiR,kEAAqBA,CAAChU;;;oBAArDqU,yBAAyB;oBAE1B1W,kCAAAA,2BAAAA;;;;;;;;;oBAAAA,YAAiBuW;;;2BAAjBvW,6BAAAA,QAAAA;;;;oBAAMiG,UAANjG;oBACoB;;wBAAMgX,wBAAwB;4BAAE/Q,SAAAA;4BAAS5D,UAAAA;wBAAS;;;oBAAnEsU,iBAAiB;oBAElBlS,mCAAAA,4BAAAA;;;;;;;;;oBAAAA,aAAkBkS;;;2BAAlBlS,8BAAAA,SAAAA;;;;oBAAMmS,WAANnS;oBACGoS,oBAAoBI,UAAUL;oBAC9BE,aAAajc,mDAAY,CAACgc;oBAChB;;wBAAM5E,sDAAgB,CAAC6E;;;oBAAjC3S,UAAU;oBAEhB,IAAIuS,uBAAuB,OAAO,CAACE,aAAa,GAAG;wBACjDzS,QAAQ,kBAAkB,GAAG;oBAC/B;oBAEM4S,iBACJN,QAAQ,QAAQ,CAACtS,QAAQ,IAAI,KAAMqS,QAAQ,MAAM,GAAG,KAAK,CAACA,QAAQ,QAAQ,CAACrS,QAAQ,IAAI;oBAEzF,IAAI4S,gBAAgB;wBAClB;;;;oBACF;oBAEA,IAAIxT,SAAS,GAAG,CAACY,QAAQ,IAAI,GAAG;wBAC9B,MAAM,IAAIoC,6CAAQA,CAAE,mDAA+D,OAAbpC,QAAQ,IAAI,EAAC,MAAI;4BACrF,MAAMA,QAAQ,IAAI;4BAClB,KAAK;gCAAGA,QAAQ,IAAI;gCAAEZ,SAAS,GAAG,CAACY,QAAQ,IAAI,EAAG,IAAI;;wBACxD;oBACF;oBAEAZ,SAAS,GAAG,CAACY,QAAQ,IAAI,EAAEA;;;oBAvBxBM;;;;;;;;;;;;oBAAAA;oBAAAA;;;;;;;6BAAAA,8BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;;;;oBAHFzE;;;;;;;;;;;;oBAAAA;oBAAAA;;;;;;;6BAAAA,6BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;;;;oBA8BL;;wBAAOuD;;;;IACT;;AAEA,SAASyT,wBAAwBvT,KAA4D;QAA1DwC,UAAFxC,MAAEwC,SAAS5D,WAAXoB,MAAWpB;IAC1C,IAAM6U,cAAc;QAClB,KAAK7U;QAEL,sEAAsE;QACtE,QAAQ;QAER,kDAAkD;QAClD,UAAU;QAEV,6CAA6C;QAC7C,0EAA0E;QAC1E,YAAY;IACd;IAEA,OAAOiU,KAAKzb,gDAAS,CAACoL,SAAS,iBAAiBiR;AAClD;AAEA,iEAAiE;AACjE,0DAA0D;AAC1D,qDAAqD;AACrD,SAASD,UAAU7a,GAAW;IAC5B,OAAOvB,qDAAc,CAACuB;AACxB;AAEO,SAASsL,kBAAkBnE,QAAoB;IACpD,IAAMC,eAA6B,IAAI4B;QAElCpF,kCAAAA,2BAAAA;;QAAL,QAAKA,YAAiBuD,SAAS,MAAM,uBAAhCvD,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAAoC;YAApCA,IAAMmE,UAANnE;YACH,IAAMgO,cAAc,EAAE;YACtB,IAAMsG,eAAenQ,QAAQ,eAAe;gBAEvCM,mCAAAA,4BAAAA;;gBAAL,QAAKA,aAAiBrK,OAAO,IAAI,CAACka,kCAA7B7P,UAAAA,8BAAAA,SAAAA,0BAAAA,kCAA4C;oBAA5CA,IAAMiP,UAANjP;oBACH,IAAIlB,SAAS,GAAG,CAACmQ,UAAU;wBACzB,IAAMyD,MAAM5T,SAAS,GAAG,CAACmQ;wBAEzB,IAAMrB,gCACJlO,QAAQ,kBAAkB,IAAIA,QAAQ,IAAI,CAAC,IAAI,KAAK;wBACtDA,QAAQ,4BAA4B,CAACgT,KAAK9E;wBAE1CrE,YAAY,IAAI,CAACmJ;oBACnB;gBACF;;gBAVK1S;gBAAAA;;;yBAAAA,8BAAAA;wBAAAA;;;wBAAAA;8BAAAA;;;;YAYLjB,aAAa,GAAG,CAACW,QAAQ,IAAI,EAAE6J;QACjC;;QAjBKhO;QAAAA;;;iBAAAA,6BAAAA;gBAAAA;;;gBAAAA;sBAAAA;;;;IAmBL,OAAOwD;AACT;AAEO,SAASZ,2BACdwU,eAA2B,EAC3B5T,YAA0B;QAC1B9G,OAAAA,iEAA+B,CAAC,2BAAhCA,KAAE2a,kBAAAA,sDAAmB;IAErB,iEAAiE;IACjE,IAAMC,sBAAsB,IAAInD,IAAIiD,gBAAgB,IAAI;IACxD,IAAMxG,UAAU,EAAE;IAElB,IAAIyG,kBAAkB;QACpB,IAAME,uBAAuBla,MAAM,IAAI,CAAC+Z,gBAAgB,MAAM,IAAI,IAAI,CACpE,SAAChO;mBAAMA,EAAE,eAAe;;QAG1B,IAAI,CAACmO,sBAAsB;YACzB,MAAM,IAAIhR,6CAAQA,CAAC;QACrB;QAEA,oCAAoC;QACpCqK,QAAQ,IAAI,CAAC;YAAC2G;SAAqB;QACnCD,mBAAoB,UAAM,CAACC,qBAAqB,IAAI;QAEpD,qDAAqD;QACrD,IAAMC,iBAAiB,EAAE;YACpBxX,kCAAAA,2BAAAA;;YAAL,QAAKA,YAAqBsX,wCAArBtX,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAA0C;gBAA1CA,IAAM+N,cAAN/N;gBACH,IAAMmE,UAAUiT,gBAAgB,GAAG,CAACrJ;gBAEpC,IAAI5J,QAAQ,kBAAkB,EAAE;oBAC9BqT,eAAe,IAAI,CAACrT;oBACpBmT,mBAAoB,UAAM,CAACvJ;gBAC7B;YACF;;YAPK/N;YAAAA;;;qBAAAA,6BAAAA;oBAAAA;;;oBAAAA;0BAAAA;;;;QASL4Q,QAAQ,IAAI,CAAC4G;IACf;IAEA,MAAOF,oBAAoB,IAAI,GAAG,EAAG;QACnC,uEAAuE;QACvE,gCAAgC;QAChC,IAAM5S,QAAQ,EAAE;YACXD,mCAAAA,4BAAAA;;YAAL,QAAKA,aAAqB6S,wCAArB7S,UAAAA,8BAAAA,SAAAA,0BAAAA,kCAA0C;gBAA1CA,IAAMgT,eAANhT;gBACH,IAAMuJ,cAAcxK,aAAa,GAAG,CAACiU;gBACrC,IAAMC,2BAA2B1J,YAAY,IAAI,CAAC,SAACmJ;2BAAQG,oBAAoB,GAAG,CAACH,IAAI,IAAI;;gBAE3F,IAAI,CAACO,0BAA0B;oBAC7BhT,MAAM,IAAI,CAAC0S,gBAAgB,GAAG,CAACK;gBACjC;YACF;;YAPKhT;YAAAA;;;qBAAAA,8BAAAA;oBAAAA;;;oBAAAA;0BAAAA;;;;QASL,uEAAuE;QACvE,0DAA0D;QAC1D,IAAMkT,YAAYjT,MAAM,MAAM,KAAK;QACnC,IAAIiT,WAAW;YACb,IAAMC,oBAAqB,oEAAGN;YAC9B,IAAMnL,UACJ,0EACAyL,kBAAkB,IAAI,CAAC;YAEzB,MAAM,IAAIrR,6CAAQA,CAAC4F;QACrB;QAEAyE,QAAQ,IAAI,CAAClM;QAEbA,MAAM,OAAO,CAAC,SAACP;mBAAYmT,mBAAoB,UAAM,CAACnT,QAAQ,IAAI;;IACpE;IAEA,OAAOyM;AACT;AAEO,SAAShJ,0BACdiQ,gBAA2B,EAC3BnI,WAAuB;QACvBhT,OAAAA,iEAAyC,CAAC,qCAA1CA,KAAEob,4BAAAA,0EAA6B;IAE/B,IAAMC,yBAAqC,IAAI3S;IAE/C,2EAA2E;IAC3E,IAAM4S,YAAa,oEAAGH;IAEtB,MAAOG,UAAU,MAAM,GAAG,EAAG;QAC3B,IAAM7T,UAAU6T,UAAU,KAAK;QAE/B,IAAM1D,eAAewD,6BACjB3T,QAAQ,sBAAsB,GAC9BA,QAAQ,eAAe;QAE3B/J,OAAO,IAAI,CAACka,cAAc,OAAO,CAAC,SAAC6C;YACjC,IAAIzH,YAAY,GAAG,CAACyH,MAAM;gBACxBa,UAAU,IAAI,CAACtI,YAAY,GAAG,CAACyH;YACjC;QACF;QAEAY,uBAAuB,GAAG,CAAC5T,QAAQ,IAAI,EAAEA;IAC3C;IAEA,OAAO4T;AACT;;;;;;;;;;;;;;;;;;;;AC5OA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;;;;;;;;;;;;;AAEyB;AACF;AAE0B;AAGlD,IAAME,aAAaC,OAAO;AAEnB,SAASxP,mBAAmBrG,QAAgB,EAAEkB,QAA8B;IACjF,IAAM4U,eAAeC,kBAAkB/V,UAAUkB;IACjD,OAAO8U,aAAaC,oBAAoBH;AAC1C;AAcO,SAASE,aAAaE,IAAW;IACtC,OAAO;QAACA,KAAK,IAAI;KAAC,CAAC,MAAM,CAACC,kBAAkBD,KAAK,QAAQ,EAAE,KAAK,IAAI,CAAC;AACvE;AAEA,SAASC,kBAAkBD,IAA+B,EAAEE,UAAkB;IAC5E,IAAIF,SAAShb,WAAW;QACtB,OAAO,EAAE;IACX;IAEA,IAAImb,UAAoB,EAAE;IAC1BH,KAAK,OAAO,CAAC,SAACI,MAAMC;QAClB,IAAMC,aAAaN,KAAK,MAAM,GAAG,MAAMK;QACvC,IAAME,aAAaD,aAAa,SAAS;QACzC,IAAME,cAAcF,aAAa,SAAS;QAC1C,IAAMG,iBAAiBP,aAAaM;QAEpCL,QAAQ,IAAI,CAAE,GAAeI,OAAbL,YAA0BE,OAAbG,YAAuB,OAAVH,KAAK,IAAI;QACnDD,UAAUA,QAAQ,MAAM,CAACF,kBAAkBG,KAAK,QAAQ,EAAEK;IAC5D;IACA,OAAON;AACT;AAEA,SAASJ,oBAAoBC,IAAmB;IAC9C,IAAIla;IACJ,IAAM4a,WAA0B,EAAE;QAE7BjZ,kCAAAA,2BAAAA;;QAAL,QAAKA,YAAwBuY,KAAK,OAAO,uBAApCvY,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAAwC;YAAxCA,kBAAAA,+DAAAA,CAAAA,iBAAO5D,sBAAK+H;YACf,sCAAsC;YACtC,IAAI,OAAOA,YAAY,UAAU;gBAC/B9F,OAAO+M,kDAAW,CAACjH;gBACnB;YACF;YAEA,yEAAyE;YACzE,0EAA0E;YAC1E,sEAAsE;YACtE,iCAAiC;YACjC,IAAIA,QAAQ,IAAI,KAAK,KAAKA,QAAQ,GAAG,CAAC8T,aAAa;gBACjD,IAAMlK,cAAc5J,QAAQ,GAAG,CAAC8T;gBAChCgB,SAAS,IAAI,CAAC;oBACZ,UAAU,EAAE;oBACZ,MAAMC,iBAAiB9c,KAAK2R;gBAC9B;gBACA;YACF;YAEA,IAAMoL,UAAUb,oBAAoBnU;YAEpC,2EAA2E;YAC3E,kBAAkB;YAClB,IAAIgV,QAAQ,IAAI,KAAK5b,WAAW;gBAC9B,IAAMka,eAAc0B,QAAQ,IAAI;gBAEhCF,SAAS,IAAI,CAAC;oBACZ,UAAUE,QAAQ,QAAQ;oBAC1B,MAAMD,iBAAiB9c,KAAKqb;gBAC9B;gBACA;YACF;YAEA,uEAAuE;YACvE,oEAAoE;YACpE,yBAAyB;YACzB,IAAI0B,QAAQ,QAAQ,IAAIA,QAAQ,QAAQ,CAAC,MAAM,KAAK,GAAG;gBACrD,IAAMC,QAAQD,QAAQ,QAAQ,CAAC,EAAE;gBACjC,IAAME,UAAUjO,gDAAS,CAACxQ,gEAAWA,CAACC,gDAAS,CAACuB,IAAI,QAAQ,IAAIgd,MAAM,IAAI,GAAI;gBAE9EH,SAAS,IAAI,CAAC;oBACZ,UAAUG,MAAM,QAAQ;oBACxB,MAAMC;gBACR;gBACA;YACF;YAEAJ,SAAS,IAAI,CAAC;gBACZ,UAAUE,QAAQ,QAAQ;gBAC1B,MAAM/N,gDAAS,CAAChP,IAAI,QAAQ;YAC9B;QACF;;QApDK4D;QAAAA;;;iBAAAA,6BAAAA;gBAAAA;;;gBAAAA;sBAAAA;;;;IAsDL,OAAO;QAAE3B,MAAAA;QAAM4a,UAAAA;IAAS;AAC1B;AAEA,SAASC,iBAAiB9c,GAAqB,EAAE2R,WAAmB;IAClE,OAAO3R,QAAQ2R,cACX3C,kDAAW,CAAChP,OACZgP,4CAAKA,oBAAQhP,IAAI,QAAQ,IAAoB2R;AACnD;AAEA,SAASqK,kBAAkB/V,QAAgB,EAAEkB,QAA8B;IACzE,IAAMgV,OAAsB,IAAInT;QAE3BpF,kCAAAA,2BAAAA;;QAAL,QAAKA,YAAiBuD,SAAS,MAAM,uBAAhCvD,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAAoC;YAApCA,IAAMmE,UAANnE;YACH,IAAIqC,aAAa8B,QAAQ,IAAI,EAAE;gBAC7BoU,KAAK,GAAG,CAACN,YAAY9T,QAAQ,IAAI;YACnC,OAAO;gBACL,IAAMoE,sBAAsB1N,oDAAa,CAACwH,UAAU8B,QAAQ,IAAI;gBAChEmV,iBAAiBf,MAAMhQ,oBAAoB,KAAK,CAAC1N,iDAAQ,GAAGsJ;YAC9D;QACF;;QAPKnE;QAAAA;;;iBAAAA,6BAAAA;gBAAAA;;;gBAAAA;sBAAAA;;;;IASL,OAAOuY;AACT;AAEA,SAASe,iBAAiBf,IAAmB,EAAElD,SAAmB,EAAElR,OAAgB;IAClF,IAAIkR,UAAU,MAAM,KAAK,GAAG;QAC1BkD,KAAK,GAAG,CAACN,YAAY9T,QAAQ,IAAI;IACnC,OAAO;QACL,IAA8BoV,aAAAA,wDAAAA,CAAAA,YAAvBC,aAAuBD,eAARE,OAAQF,iBAAX;QAEnB,IAAI,CAAChB,KAAK,GAAG,CAACiB,aAAa;YACzBjB,KAAK,GAAG,CAACiB,YAAY,IAAIpU;QAC3B;QAEA,IAAM+T,UAAUZ,KAAK,GAAG,CAACiB;QACzBF,iBAAiBH,SAASM,MAAMtV;IAClC;AACF;;;;;;;;;;;;;;;;;;;;;;;AC5KA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;;;AAEgF;AACtC;AACa;AAGxD,IAAM2V,YAAYnf,QAAQ,GAAG,CAAC,YAAY,IAAI;AAW9C;;CAEC,GACM,SAAe+W;uFAAaqI,SAAiB;YAAExX,WAA0ByX,QACxE7b;;;;;oBAD8CoE,YAAAA,wEAA0ByX,SAAAA,oEAAS;oBACjF7b,UAAU;wBAAC6b,SAAS,QAAQ;wBAAW;sBAA7B,OAAkD,oEAAGzX;oBAErE,yEAAyE;oBACzE,wCAAwC;oBACxC;;wBAAMmJ,qDAAKA,CAACoO,WAAW3b,SAAS;4BAC9B,KAAK4b;wBACP;;;oBAFA;;;;;;IAGF;;AAEA;;CAEC,GACM,SAASpI,UACdiF,QAAgB,EAChBqD,WAAmB,EACnBC,WAAmB;IAEnB,OAAO,IAAIjJ,QAAQ,SAAOpP,SAASqP;;gBAC3BiJ,aAGAC,oGAIW3Y;;;;wBAPX0Y,cAAcR,qDAAiBA,CAAE,GAAW,OAAT/C,UAAS,aAAW;4BAC3D,OAAO;wBACT;wBACMwD,aAAaP,yDAAeA,CAAC;4BACjC,OAAOH,oDAAgBA,CAAC9C;4BACxB,WAAWyD;wBACb;;;;;;;;;;mGACyBD;;;;;;;;;;;;;wBAAR3Y;wBACf,IAAIA,KAAK,QAAQ,CAACwY,cAAc;4BAC9BE,YAAY,KAAK,CAAC1Y,KAAK,OAAO,CAACwY,aAAaC,eAAe,MAAM;wBACnE,OAAO;4BACLC,YAAY,KAAK,CAAC1Y,OAAO,MAAM;wBACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAGF0Y,YAAY,EAAE,CAAC,UAAU;mCAAMtY;;wBAC/BsY,YAAY,EAAE,CAAC,SAASjJ;wBAExBkJ,WAAW,KAAK;wBAChBD,YAAY,GAAG;wBACf3I,8CAAUA,CAACoF;wBACXgD,8CAAUA,CAAE,GAAW,OAAThD,UAAS,aAAWA;;;;;;QACpC;;AACF;AAEA;;CAEC,GACM,SAAehF,mBAAmB0I,MAAc,EAAEpb,IAAc,EAAE8H,GAAY;;YAC7EuT;;;;oBAAAA,WAAW;wBACf,KAAKvT,IAAI,IAAI;oBACf;oBAEA;;wBAAM0E,qDAAKA,CAACoO,WAAW;4BAAC;4BAAOQ;0BAAR,OAAgB,oEAAGpb,QAAOqb;;;oBAAjD;;;;;;IACF;;AAEA;;CAEC,GACM,SAAS1I,4BAA4BpO,KAU3C;QATC6W,SAD0C7W,MAC1C6W,QACApb,OAF0CuE,MAE1CvE,MACA8H,MAH0CvD,MAG1CuD,KACA7H,QAJ0CsE,MAI1CtE;IAOA,IAAMob,WAAW;QACf,KAAKvT,IAAI,IAAI;IACf;IAEA,OAAO+E,8DAAcA,CAAC+N,WAAW;QAAC;QAAOQ;KAAgB,CAAxB,OAAgB,oEAAGpb,QAAOqb,UAAU;QACnE,QAAQvT,IAAI,IAAI;QAChB7H,OAAAA;IACF;AACF;AAEO,SAAe2S,mBAAmBiI,SAAiB;;YAChD/E;;;;oBAAW;;wBAAMtJ,qDAAKA,CAACoO;4BAAY;4BAAU;4BAAc;2BAAS;4BAC1E,KAAKC;4BACL,OAAO;wBACT;;;oBAHQ/E,SAAW,cAAXA;oBAKR,IAAI;wBACF;;4BAAOlK,KAAK,KAAK,CAACA,KAAK,KAAK,CAACkK,QAAQ,IAAI;;oBAC3C,EAAE,OAAO1Y,OAAO;wBACd,MAAM,IAAIS,MAAO,+DAAqE,OAAPiY;oBACjF;;;;;;IACF;;;;;;;;;;;;;;;;;;;;;AC3IA;;;CAGC;;;AAEgC;AACF;AACS;AAEZ;AAE5B,IAAMyF,qBAAqB;IACzB,KAAK;IACL,MAAM;AACR;AAGO,IAAMzI,eAAe5X,OAAO,IAAI,CAACqgB,oBAA0C;AAElF;;CAEC,GACM,SAAe1I;uFAAqBtO,KAM1C;YALCuD,KACA0T,YAeMC;;;;oBAhBN3T,MADyCvD,MACzCuD,KACA0T,aAFyCjX,MAEzCiX;oBAKA1Y,2CAAS,CAAE,IAAY,OAATgF,IAAI,IAAI,EAAC;oBACvB;;wBAAMwT,+CAAEA,CAACxT,IAAI,cAAc,EAAE;4BAAE,OAAO;4BAAM,WAAW;wBAAK;;;oBAA5D;oBAEAhF,2CAAS,CAAE,IAAY,OAATgF,IAAI,IAAI,EAAC;oBAEvB;;wBAAM0E,qDAAKA,CAAC,OAAQ,oEAAIgP;4BAAc;4BAAoB;iCAAgB;4BACxE,KAAK1T,IAAI,IAAI;wBACf;;;oBAFA;oBAIA,mDAAmD;oBAC7C2T,sBAAsB3T,IAAI,YAAY,CACzC,IAAI,CAAC,MACL,OAAO,CAAC,cAAcA,IAAI,YAAY,CAAC,MAAM,GAAG,IAAI,aAAa;oBACpEhF,2CAAS,CAAE,IAAgC2Y,OAA7B3T,IAAI,IAAI,EAAC,sBAAwC,OAApB2T;oBAE3C;;wBAAM1J,QAAQ,GAAG,CACf,oEAAGjK,IAAI,YAAY,CAAC,GAAG,CAAC,SAACmL;mCACvBzG,qDAAKA,CACH,SACA;gCACE;gCACA;gCACA;gCACA+O,kBAAkB,CAACtI,OAAO;gCAC1B;gCACAtQ,6CAAOA,CAACmF,IAAI,cAAc,EAAEmL;gCAC5B;gCACA;gCACA;gCACA;gCACA;6BAED,CAbD,OAYE,oEAAIuI,aAAa;gCAAC;gCAAiB;6BAAS,GAAG,EAAE,IAEnD;gCACE,KAAK;oCACH,WAAWvI;gCACb;gCACA,KAAKnL,IAAI,IAAI;4BACf;;;;oBAvBN;;;;;;IA2BF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvEA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC,GAED,+CAA+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAC4C;AAC/D;AACF;AACF;AACU;AACW;AAEZ;AAGL;AAE0B;AAEtD,IAAKmU,iDAAAA;;;;;;WAAAA;EAAAA;AAQL,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,QAAQ;AACR,IAAMC,gCAAqD,IAAIjH,IAAI;;;;CAIlE;AAEM,SAASlR,4BAA4BoY,IAAwB;IAClE,OAAO,CAAC,CAACA,QAAQD,8BAA8B,GAAG,CAACC;AACrD;AAEO,SAAerY,qBACpBU,GAAyB,EACzBM,QAAkB;QAClB;;;;;;;;;;;;;;;;;;;;;;GAsBC,GACDsX,0BAAAA;;YAIMC,iBACAC,aACDxb,2BAAAA,mBAAAA,gBAAAA,WAAAA,oBAAOyb,KAAKtE,KAWV1S,4BAAAA,oBAAAA,iBAAAA,YAAAA,QAAMiX,MA0BPC,kBACAC,iBACDjX,4BAAAA,oBAAAA,iBAAAA,YAAAA,QAAMkX,MAyBPC,WAGEC,WACD9W,4BAAAA,oBAAAA,iBAAAA,YAAAA,QAAMd,SACJ6X,4BAAAA,oBAAAA,wBAAAA,YAAAA,QA8BDC,iBACAC,iCAIcC,4BAAAA,oBAAAA,iBAAAA,YAAAA,sBAAOzI,SAAS0I,QAI5BC,mBACAC,2BACAC,eAEWC,4BAAAA,oBAAAA,iBAAAA,YAAAA,sBAAQ3I,OAAOtQ,UACzBkZ,4BAAAA,oBAAAA,iBAAAA,YAAAA,QAAM7X,UAQL8X,QADqBC,sBAAT3G,MA6CZ4G,wBACAC,eAEDC,4BAAAA,oBAAAA,yBAAAA,YAAAA,mBAqDCC,yBAIAC,iBACAC,eAGDC,4BAAAA,oBAAAA,iBAAAA,YAAAA,QAAQC,WACNC,6BAAAA,qBAAAA,kBAAAA,aAAAA,SAAMlY,oBAUPmY,wBAqBFC,iBAkCFC;;;;oBA3SN,gEAAgE;oBAChE,6DAA6D;oBACvDhC,kBAAkB,IAAIpH;oBACtBqH,cAAc,IAAIrH;oBACnBnU,kCAAAA,2BAAAA;;wBAAL,IAAKA,YAAoB5F,OAAO,OAAO,CAAC4J,gCAAnChE,6BAAAA,QAAAA,yBAAAA,iCAA8C;2GAA9CA,iBAAOyb,sBAAKtE;4BACf,IAAIsE,IAAI,UAAU,CAAC,cAActE,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO;gCAC7DqE,YAAY,GAAG,CAACC;gCAChBF,gBAAgB,GAAG,CAACpE,IAAI,OAAO;4BACjC;wBACF;;wBALKnX;wBAAAA;;;iCAAAA,6BAAAA;gCAAAA;;;gCAAAA;sCAAAA;;;;yBAUDub,CAAAA,gBAAgB,IAAI,GAAG,IAAvBA;;;;oBACG9W,mCAAAA,4BAAAA;;wBAAL,IAAKA,aAAa+W,kCAAb/W,8BAAAA,SAAAA,0BAAAA,kCAA0B;4BAApBiX,OAANjX;4BACH,OAAOT,QAAQ,CAAC0X,KAAI;wBACtB;;wBAFKjX;wBAAAA;;;iCAAAA,8BAAAA;gCAAAA;;;gCAAAA;sCAAAA;;;;oBAIL;;wBAAMqI,8CAASA,CAACpJ,IAAI,WAAW,CAAC,cAAcmX,4DAAiBA,CAAC7W,WAAW;;;oBAA3E;oBAEAhC,2CAAS,CAACL,6CAAMA;oBAchBhH,QAAQ,IAAI,CAAC;;;oBAGf,0EAA0E;oBAC1E,6EAA6E;oBAC7E,oCAAoC;oBAC9BghB,mBAAmBjY,IAAI,gCAAgC,CAACM,UAAUhC,qCAAGA;oBACrE4Z,kBAAkB,IAAIzH;oBACvBxP,mCAAAA,4BAAAA;;wBAAL,IAAKA,aAAagX,iBAAiB,MAAM,yBAApChX,8BAAAA,SAAAA,0BAAAA,kCAAwC;4BAAlCkX,OAANlX;4BACH,IAAIkX,KAAI,IAAI,KAAK,YAAYA,KAAI,OAAO,CAAC,UAAU,CAAC,OAAO;gCACzDD,gBAAgB,GAAG,CAACC,KAAI,OAAO;4BACjC;wBACF;;wBAJKlX;wBAAAA;;;iCAAAA,8BAAAA;gCAAAA;;;gCAAAA;sCAAAA;;;;oBAML,gFAAgF;oBAChF,IAAIiX,gBAAgB,IAAI,EAAE;wBACxB5Z,2CAAS,CAACL,6CAAMA;wBAchBhH,QAAQ,IAAI,CAAC;oBACf;oBAEImhB,YAAY;oBAEhB,gGAAgG;oBAC1FC,YAAY,IAAI3W;oBACjBH,mCAAAA,4BAAAA;;wBAAL,IAAKA,aAAiBvB,IAAI,cAAc,GAAG,MAAM,yBAA5CuB,8BAAAA,SAAAA,0BAAAA,kCAAgD;4BAA1Cd,UAANc;4BACE+W,mCAAAA,4BAAAA;;;oCAAAA,kBAAAA,gEAAAA,CAAAA,kBAAO7E,sBAAKtD;oCAMf,IAAM2J,cAAczB,UAAU,GAAG,CAAC5E;oCAClC,IAAI,CAACqG,aAAa;wCAChBzB,UAAU,GAAG,CAAC5E,KAAK;4CACjB;gDACEtD,OAAAA;gDACA,UAAU;oDAAC1P;iDAAQ;4CACrB;yCACD;wCACD;oCACF;oCAEA,IAAMsZ,gBAAgBD,YAAY,IAAI,CAAC,SAACE;+CAAaA,SAAS,KAAK,KAAK7J;;oCACxE,IAAI,CAAC4J,eAAe;wCAClBD,YAAY,IAAI,CAAC;4CACf3J,OAAAA;4CACA,UAAU;gDAAC1P;6CAAQ;wCACrB;wCACA;oCACF;oCAEAsZ,cAAc,QAAQ,CAAC,IAAI,CAACtZ;gCAC9B;gCA3BA,IAAK6X,aAAsB5hB,OAAO,OAAO,CACvC,oFAAoF;gCACpFkhB,sCACInX,QAAQ,sBAAsB,GAC9BA,QAAQ,eAAe,wBAJxB6X,8BAAAA,SAAAA,0BAAAA;;gCAAAA;gCAAAA;;;yCAAAA,8BAAAA;wCAAAA;;;wCAAAA;8CAAAA;;;;wBA4BP;;wBA7BK/W;wBAAAA;;;iCAAAA,8BAAAA;gCAAAA;;;gCAAAA;sCAAAA;;;;oBA+BCgX,kBAAkB,IAAI7W;oBACtB8W,kCAAkC,IAAI9W;oBAIxB+W,mCAAAA,4BAAAA;;;;;;;;;oBAAAA,aAA2BJ;;;2BAA3BI,8BAAAA,SAAAA;;;;oGAAAA,kBAAOzI,2BAAS0I;oBAClC,8DAA8D;oBAC9D,IAAIA,OAAO,MAAM,KAAK,GAAG;;;;oBAEnBC,oBAAoB,IAAIlI;oBACxBmI,4BAA4B,IAAIlX;oBAChCmX,gBAAgB,IAAInX;oBAEToX,mCAAAA,4BAAAA;;wBAAjBmB,YAAY,IAAKnB,aAA6BJ,6BAA7BI,8BAAAA,SAAAA,0BAAAA,kCAAqC;2CAArCA,cAAQ3I,qBAAAA,OAAOtQ,wBAAAA;4BACzBkZ,mCAAAA,4BAAAA;;gCAAL,IAAKA,aAAiBlZ,+BAAjBkZ,8BAAAA,SAAAA,0BAAAA,kCAA2B;oCAArB7X,WAAN6X;;oCACH,IAAI,CAACR,gBAAgB,GAAG,CAACrX,SAAQ,IAAI,GACnCqX,gBAAgB,GAAG,CACjBrX,SAAQ,IAAI,EACZ,8FAA8F;oCAC9FmW,wDAAaA,CAACC,gDAAYA,CAACngB,gDAAS,CAAC+J,SAAQ,IAAI,EAAE,cAAc;oCAE5C+X,uBAAAA,gBAAgB,GAAG,CAAC/X,SAAQ,IAAI,GAAzCoR,OAAS2G,qBAAjB;oCACR,IAAID,iBAAAA,4BAAAA,SAAAA,IAAM,CAAE,GAAa7I,OAAXH,SAAQ,KAAS,OAANG,OAAQ,cAA7B6I,6BAAAA,OAA+B,OAAO,EAAE;wCAC1CL,kBAAkB,GAAG,CAACrG,IAAI,CAAE,GAAanC,OAAXH,SAAQ,KAAS,OAANG,OAAQ,CAAC,OAAO;wCACzDyI,0BAA0B,GAAG,CAC1B,GAAkB5I,OAAhB9O,SAAQ,IAAI,EAAC,KAAW,OAAR8O,UACnBsC,IAAI,CAAE,GAAanC,OAAXH,SAAQ,KAAS,OAANG,OAAQ,CAAC,OAAO;oCAEvC,OAAO;wCACL7R,6CAAW,CAAE,4CAAsD6R,OAAXH,SAAQ,KAAS,OAANG;wCACnE,4GAA4G;wCAC5GwI,kBAAkB,KAAK;wCACvBE,cAAc,KAAK;wCACnB,MAAMoB;oCACR;gCACF;;gCArBKlB;gCAAAA;;;yCAAAA,8BAAAA;wCAAAA;;;wCAAAA;8CAAAA;;;;4BAuBLF,cAAc,GAAG,CAAC1I,OAAOtQ;wBAC3B;;wBAzBiBiZ;wBAAAA;;;iCAAAA,8BAAAA;gCAAAA;;;gCAAAA;sCAAAA;;;;oBA2BjB,8FAA8F;oBAC9F,IAAIH,kBAAkB,IAAI,KAAK,GAAG;wBAChCH,gCAAgC,GAAG,CAACxI,SAAS0I;wBAC7C;;;2BAAU,0BAA0B;oBACtC;yBAGEd,CAAAA,uCACA,8CAA8C;oBAC9CA,mCAAwD,GAFxDA;;;;oBAIA,IAAIe,kBAAkB,IAAI,KAAK,GAAG;wBAChCP,YAAY;wBAEZ;;SAEC,GACD9Z,0CAAQ,CACL,0CACCqa,OADwC3I,SAAQ,qCAEjD,OADC2I,kBAAkB,MAAM,GAAG,IAAI,GAAG,KAAK,EACxC;wBAGH;;;2BAAU,0BAA0B;oBACtC;oBAEMO,yBAAyBvf,MAAM,IAAI,CAACgf,mBAAmB,IAAI,CAACnB,4CAAQA;oBACpE2B,gBAAgBxf,MAAM,IAAI,CAACkf,cAAc,IAAI;oBAE9CO,mCAAAA,4BAAAA;;;;;;;;;;4BAAMc,kBAGF5d,2BAAAA,mBAAAA,gBAAAA,WAAAA,oBAAQ6T,OAAOtQ,UACbkB,4BAAAA,oBAAAA,iBAAAA,YAAAA,QAAMN,mBAiBPkZ;;;;oCArBCO,mBAANd;yCACCD,cAAc,KAAK,CAAC,SAAChJ;+CAAUoH,iDAASA,CAAC2C,kBAAkB/J;wCAA3DgJ;;;;oCAEG7c,kCAAAA,2BAAAA;;;;;;;;;oCAAAA,YAA6Boc;;;2CAA7Bpc,6BAAAA,QAAAA;;;;kDAAAA,aAAQ6T,oBAAAA,OAAOtQ,uBAAAA;oCACbkB,mCAAAA,4BAAAA;;;;;;;;;oCAAAA,aAAiBlB;;;2CAAjBkB,8BAAAA,SAAAA;;;;oCAAMN,UAANM;oCACH,6EAA6E;oCAC7E,IAAI6X,0BAA0B,GAAG,CAAE,GAAkB5I,OAAhBvP,QAAQ,IAAI,EAAC,KAAW,OAARuP,cAAekK,kBAClE;;;;oCAEF;;wCAAMzZ,QAAQ,wBAAwB,CACpCuP,SACAkK,kBACAlK,WAAWvP,QAAQ,eAAe,EAClC,sGAAsG;wCACtG0P;;;oCALF;;;oCALGpP;;;;;;;;;;;;oCAAAA;oCAAAA;;;;;;;6CAAAA,8BAAAA;4CAAAA;;;4CAAAA;kDAAAA;;;;;;;oCADFzE;;;;;;;;;;;;oCAAAA;oCAAAA;;;;;;;6CAAAA,6BAAAA;4CAAAA;;;4CAAAA;kDAAAA;;;;;;;oCAgBL8b,YAAY;oCAENuB,oBAAoBjB,OACvB,GAAG,CAAC;4CAAGvI,cAAAA,OAAOtQ,iBAAAA;+CAAgB,GAAcA,OAAZsQ,OAAM,QAA6C,OAAvCtQ,SAAS,GAAG,CAAC,SAAC6F;mDAAMA,EAAE,IAAI;2CAAE,IAAI,CAAC;uCAC7E,IAAI,CAAC;oCACRpH,6CAAW,CAACL,6CAAMA,qBAEqD+R,SACEkK,kBAInEP;oCAGN,yEAAyE;oCACzE;;wCAAA,yBAAwB,0BAA0B;;;;;;;;oBAEtD;oBArCKP,aAA0BF;;;2BAA1BE,8BAAAA,SAAAA;;;;;;;;;;;;;;;;;;;oBAAAA;;;;;;;;;;;;oBAAAA;oBAAAA;;;;;;;6BAAAA,8BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;;;;oBAuCL;;OAEC,GACD,IAAIxB,qCAA2D;wBAC7DY,gCAAgC,GAAG,CAACxI,SAAS0I;wBAC7C;;;2BAAU,0BAA0B;oBACtC;;;yBAIAd,CAAAA,6CACA,gFAAgF;oBAChFA,mCAAwD,GAFxDA;;;;oBAIMyB,0BAAyB1f,MAAM,IAAI,CAACgf,mBAAmB,IAAI,CAACnB,4CAAQA;oBAE1EY,YAAY;oBAENkB,kBAAkBD,uBAAsB,CAAC,EAAE;oBAC3CE,gBAAiB,IAAmB,OAAhBD;oBAGrBE,mCAAAA,4BAAAA;;;;;;;;;oBAAAA,aAAsBd;;;2BAAtBc,8BAAAA,SAAAA;;;;oBAAQC,YAARD,aAAQC;oBACNC,oCAAAA,6BAAAA;;;;;;;;;oBAAAA,cAAiBD;;;2BAAjBC,+BAAAA,UAAAA;;;;oBAAMlY,WAANkY;oBACH;;wBAAMlY,SAAQ,wBAAwB,CACpCwO,SACAsJ,iBACAtJ,WAAWxO,SAAQ,eAAe,EAClC+X;;;oBAJF;;;oBADGG;;;;;;;;;;;;oBAAAA;oBAAAA;;;;;;;6BAAAA,+BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;;;;oBADFF;;;;;;;;;;;;oBAAAA;oBAAAA;;;;;;;6BAAAA,8BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;;;;oBAWCG,oBAAoBjB,OACvB,GAAG,CAAC;4BAAGvI,cAAAA,OAAOtQ,iBAAAA;+BAAgB,GAAcA,OAAZsQ,OAAM,QAA6C,OAAvCtQ,SAAS,GAAG,CAAC,SAAC6F;mCAAMA,EAAE,IAAI;2BAAE,IAAI,CAAC;uBAC7E,IAAI,CAAC;oBACRpH,6CAAW,CAACL,6CAAMA,qBAEyD+R,SACPsJ,iBAC0CtJ,SAAWuJ,eAG/GI;oBAGV;;;uBAAU,0BAA0B;;oBAGtC,8FAA8F;oBAC9FnB,gCAAgC,GAAG,CAACxI,SAAS0I;;;oBAzJ3BD;;;;;;;;;;;;oBAAAA;oBAAAA;;;;;;;6BAAAA,8BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;;;;oBA4JpB,IAAID,gCAAgC,IAAI,GAAG,GAAG;wBACtCoB,kBAAkBjgB,MAAM,IAAI,CAAC6e,gCAAgC,OAAO,IACvE,MAAM,CACL,SAAC2B;qHAAgB1G,iBAAKiF;mCACpB,qEAAGyB,YAD6B;gCAEhC1G;6BAID,EAHC,qEAAGiF,OAAO,GAAG,CACX;oCAAGvI,cAAAA,OAAOtQ,iBAAAA;uCAAgB,KAAgBA,OAAZsQ,OAAM,QAA6C,OAAvCtQ,SAAS,GAAG,CAAC,SAAC6F;2CAAMA,EAAE,IAAI;mCAAE,IAAI,CAAC;;+BAKhF,IAAI,CAAC;wBAERpH,2CAAS,CAACL,6CAAMA,qBAWV2b;wBAGN,IAAIhC,sCAA4D;4BAC9D3gB,QAAQ,IAAI,CAAC;wBACf;oBACF;oBAEA,4FAA4F;oBAC5F,6FAA6F;oBACvF4iB,8BAA8BO,6BAA6Bpa,KAAK;oBACtE,IAAI6Z,6BAA6B;wBAC/Bvb,2CAAS,CAACL,6CAAMA,qBAOV0W,4DAAYA,CAACkF,6BAA6B,KAAK,CAAC,MAAM,IAAI,CAAC;wBAGjE5iB,QAAQ,IAAI,CAAC;oBACf;oBAEAqH,6CAAW,CACT8Z,YAAY,iCAAiC;;;;;;IAEjD;;AAEA,SAASgC,6BAA6Bpa,GAAyB,EAAEqK,WAAmB;IAClF,IAAM5J,UAAUT,IAAI,UAAU,CAACqK;IAC/B,IAAMgQ,oBACJ,qEAAG3jB,OAAO,IAAI,CAAC+J,QAAQ,sBAAsB,EAAE,MAAM,CAAC,SAAC9F;eAASqF,IAAI,UAAU,CAACrF;;IAGjF,IAAM4a,WAAW8E,kBACd,GAAG,CAAC,SAACC;eAAMF,6BAA6Bpa,KAAKsa;OAC7C,MAAM,CAAC,SAACC;eAAkB,CAAC,CAACA;;IAE/B,IAAI,CAAChF,SAAS,MAAM,IAAI,CAAC9U,QAAQ,kBAAkB,IAAI;QACrD;IACF;IAEA,IAAMoU,OAAc;QAClB,MAAMpU,QAAQ,kBAAkB,KAAKiH,qDAAc,CAAC2C,eAAeA;QACnEkL,UAAAA;IACF;IAEA,OAAOV;AACT;;;;;;;;;;;;;;;;;;;;;ACnbA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC,GAE0B;AACwE;AAEnG;;CAEC,GACD,IAAMmG,sBAAsB;AAE5B;;;CAGC,GACD,IAAMC,iCAAiC;AAmBvC,SAASC,iBACPC,YAAmC,EACnCpb,KAGgB;8BAHhBA,MACEqb,cAAAA,gDAAeJ,4EADjBjb,MAEEsb,yBAAAA,sEAA0BJ;IAG5B,IAAMK,oBAAoBH,aAAa,IAAI,CACzCR,qDAAKA,CAAC,SAACY;eAASA,KAAK,QAAQ,CAAC;QAC9BX,mDAAGA,CAAC;eACFO,aAAa,IAAI,CACfR,qDAAKA,CAAC,SAACY;mBAASA,KAAK,QAAQ,CAAC;YAC9BV,qDAAKA,CAAC;;IAKZ,IAAMW,iBAAiBL,aAAa,IAAI,CACtCR,qDAAKA,CAAC,SAACY;eAASA,KAAK,QAAQ,CAAC;QAC9BX,mDAAGA,CAAC;eACFO,aAAa,IAAI,CACfR,qDAAKA,CAAC,SAACY;mBAASA,KAAK,QAAQ,CAAC;YAC9BV,qDAAKA,CAAC;;IAKZ,IAAMY,iBAAiBzgB,oCAAK,CAACnB,WAAW,IAAI,CAC1C4gB,qDAAKA,CAACY,0BACNT,mDAAGA,CAAC;eACFO,aAAa,IAAI,CACfJ,uDAAOA,CAACK,eACRZ,0DAAUA,CAAC;mBAAMxf,oCAAK,CAAC;;;IAK7B,OAAO;QAACsgB;QAAmBE;QAAgBC;KAAe;AAC5D;AAEO,SAASzY,sBAAsB0Y,MAA2B;QAAEzT,OAAAA,iEAAsB,CAAC;IACxF,IAAMkT,eAAe,IAAIngB,yCAAU;IACnC,IAAM2gB,iBAAiB,SAACJ;eAAiBJ,aAAa,IAAI,CAACI,KAAK,QAAQ,CAAC;;IACzE,IAAMK,gBAAgB;eAAMT,aAAa,QAAQ;;IACjD,IAAMU,kBAAkB,SAAClV;eAAawU,aAAa,KAAK,CAACxU;;IAEzD+U,OAAO,IAAI,CAAC,OAAOE;IACnBF,OAAO,IAAI,CAAC,SAASG;IACrBH,OAAO,EAAE,CAAC,QAAQC;IAElB,OAAO3gB,sCAAO,CAACkgB,iBAAiBC,cAAclT,OAC3C,IAAI,CACH6S,wDAAQA,CAAC,SAACgB;eAAcA;QACxBpB,yDAAQA,CAAC;QACPgB,OAAO,cAAc,CAAC,QAAQC;QAC9BD,OAAO,cAAc,CAAC,OAAOE;QAC7BF,OAAO,cAAc,CAAC,SAASG;QAE/BV,aAAa,QAAQ;IACvB,IAED,SAAS;AACd;;;;;;;;;;;;;;;;;;;;;;;AC3HA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC;;AAE2B;AACJ;AACS;AAEW;AACY;AACP;AACR;AAEzC,IAAMvI,OAAO1J,+CAASA,CAACwJ,6CAAQA;AAExB,SAAeC,sBAAsBhU,QAAgB;;YACpDod,aAMAC,yBACFhJ,wBAEC1W,2BAAAA,mBAAAA,gBAAAA,WAAAA,OAAMiG,iBAONxB,4BAAAA,oBAAAA,wBAAAA,YAAAA;;;;oBAhBe;;wBAAM+C,8DAAeA,CAACnF;;;oBAApCod,cAAc;oBAEpB,IAAI,CAACA,YAAY,UAAU,EAAE;wBAC3B;;;;oBACF;oBAEMC,0BAAoCD,YAAY,UAAU,CAAC,QAAQ;oBACrE/I;oBAEC1W,kCAAAA,2BAAAA;;;;;;;;;oBAAAA,YAAiB0f;;;2BAAjB1f,6BAAAA,QAAAA;;;;oBAAMiG,UAANjG;wBACsB0W,uBAAuB,MAAM;oBACpD;;wBAAMM,wBAAwB;4BAAE/Q,SAAAA;4BAAS5D,UAAAA;wBAAS;;;oBADpDqU,yBAAyBA,QAAAA;wBACvB;;;;oBAFC1W;;;;;;;;;;;;oBAAAA;oBAAAA;;;;;;;6BAAAA,6BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;;;;oBAOAyE,mCAAAA,4BAAAA;;;4BAAAA,IAAMwB,UAANxB;4BACH,IAAIwB,QAAQ,UAAU,CAAC,MAAM;gCAC3B,IAAM0Z,eAAe9kB,gDAAS,CAACwH,UAAU4D,QAAQ,KAAK,CAAC,IAAI;gCAC3DyQ,yBAAyBA,uBAAuB,MAAM,CAAC,SAACtN;2CAAMA,MAAMuW;;4BACtE;wBACF;wBANA,mCAAmC;wBACnC,IAAKlb,aAAiBib,8CAAjBjb,8BAAAA,SAAAA,0BAAAA;;wBAAAA;wBAAAA;;;iCAAAA,8BAAAA;gCAAAA;;;gCAAAA;sCAAAA;;;;oBAOL;;wBAAOiS;;;;IACT;;AAEO,SAAekJ,sBAAsBvd,QAAgB;;YACpDgF,cACA9D,UAEDvD,2BAAAA,mBAAAA,gBAAAA,WAAAA,OAAMmE,SACHsJ;;;;oBAJFpG,eAAeH,wDAAeA,CAAC;wBAAE7E,UAAAA;oBAAS;oBAC/B;;wBAAMsF,sDAAWA,CAACtF,UAAUgF;;;oBAAvC9D,WAAW;oBAEZvD,kCAAAA,2BAAAA;;;;;;;;;oBAAAA,YAAiBuD,SAAS,MAAM;;;2BAAhCvD,6BAAAA,QAAAA;;;;oBAAMmE,UAANnE;oBACGyN,OAAO5S,mDAAY,CAACwH,UAAU,gBAAgB8B,QAAQ,IAAI;oBAE3D;;wBAAMkJ,8CAASA,CAACI;;;oBAArB,IAAK,kBAA2B,OAAO;wBACrC;;;;oBACF;oBAEA,qBAAqB;oBACrB;;wBAAMhB,2CAAMA,CAACgB;;;oBAAb;oBAEA,sBAAsB;oBACtB;;wBAAMP,kDAAaA,CAAC/I,QAAQ,IAAI,EAAEsJ;;;oBAAlC;;;oBAXGzN;;;;;;;;;;;;oBAAAA;oBAAAA;;;;;;;6BAAAA,6BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;;;;;;;;;IAaP;;AAEA,SAASgX,wBAAwBvT,KAA4D;QAA1DwC,UAAFxC,MAAEwC,SAAS5D,WAAXoB,MAAWpB;IAC1C,IAAM6U,cAAc;QAClB,KAAK7U;QAEL,sEAAsE;QACtE,QAAQ;QAER,kDAAkD;QAClD,UAAU;QAEV,6CAA6C;QAC7C,0EAA0E;QAC1E,YAAY;IACd;IAEA,OAAOiU,KAAKzb,gDAAS,CAACoL,SAAS,iBAAiBiR;AAClD;;;;;;;;;;;;;;;;;;;;;;;;ACvGA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC,GAED,iDAAiD;;;;;;;AACU;AACT;AACP;AAEJ;AAyBhC,SAAenU,aAAaW,GAAyB;;YAElDqc,UACA/b,UAOC1H;;;;;;;;;;oBARU;;wBAAMuQ,mDAAQA,CAACnJ,IAAI,WAAW,CAAC,cAAc;;;oBAAxDqc,WAAW;oBACX/b,WAAW6b,wDAAaA,CAACE;oBAE/B,IAAI/b,SAAS,IAAI,KAAK,WAAW;wBAC/B;;4BAAOgc,aAAahc,SAAS,MAAM,EAAEN,IAAI,WAAW;;oBACtD;oBAEA,MAAM,IAAI3G,MAAM;;oBACTT;oBACP,IAAIA,MAAM,IAAI,KAAK,UAAU;wBAC3B,MAAMA;oBACR;;;;;;oBAGF;;wBAAO,CAAC;;;;IACV;;AAEA;;;;;CAKC,GACD,SAAS0jB,aAAahc,QAAkB,EAAEic,WAAmB;IAC3D,IAAMC,oBAAoB;IAE1B,IAAMC,aAAa/lB,OAAO,IAAI,CAAC4J,UAAU,MAAM,CAAC,SAAChD;eAAQA,IAAI,QAAQ,CAACkf;;IAEtE,IAAIC,WAAW,MAAM,KAAK,GAAG,OAAOnc;IAEpC,IAAMoc,kBAAkB,kEAAKpc;QACxBhE,kCAAAA,2BAAAA;;QAAL,QAAKA,YAAamgB,+BAAbngB,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAAyB;YAAzBA,IAAMgB,MAANhB;YACH,IAAoCqgB,aAAAA,wDAAAA,CAAAA,IAAI,KAAK,CAACH,qBAAvCI,UAA6BD,eAApBE,UAAoBF,eAAR5G,OAAQ4G,iBAAX;YACzB,IAAI,CAACP,gDAAUA,CAACS,UAAU;gBACxB,IAAMC,iBAAiB;oBAACF;oBAAS1lB,gEAAWA,CAACiH,6CAAOA,CAACoe,aAAaM;iBAAmB,CAA9D,OAAsD,oEAAG9G,OAAM,IAAI,CACxFyG;gBAEFE,eAAe,CAACI,eAAe,GAAGJ,eAAe,CAACpf,IAAI;YACxD;QACF;;QARKhB;QAAAA;;;iBAAAA,6BAAAA;gBAAAA;;;gBAAAA;sBAAAA;;;;IAUL,OAAOogB;AACT;AAEA;;;;CAIC,GACM,SAASxR,sBAAsBnL,KAcrC;QAbUgd,cAD2Bhd,MACpC,SACAO,WAFoCP,MAEpCO,UACAN,MAHoCD,MAGpCC,KACA1B,MAJoCyB,MAIpCzB,KACA0e,qBALoCjd,MAKpCid,oBACAC,0BANoCld,MAMpCkd;IASA,2CAA2C,GAC3C,IAAMC,WAAW,IAAIxb;IAErB,IAAMyb,eAAe,IAAI1M;IACzB,IAAM2M,eAA0B;QAACL;KAAY;IAC7C,IAAMM,WAAoC,EAAE;IAE5C,MAAOD,aAAa,MAAM,CAAE;QAC1B,IAAM3c,UAAU2c,aAAa,KAAK;QAClC,IAAID,aAAa,GAAG,CAAC1c,UAAU;YAC7B;QACF;QACA0c,aAAa,GAAG,CAAC1c;QAEjB,IAAM6J,cAAc5T,OAAO,OAAO,CAChCsmB,qBAAqBvc,QAAQ,sBAAsB,GAAGA,QAAQ,eAAe;YAE1EnE,kCAAAA,2BAAAA;;YAAL,QAAKA,YAA8BgO,gCAA9BhO,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAA2C;gBAA3CA,kBAAAA,+DAAAA,CAAAA,iBAAO3B,uBAAM2iB;gBAChBD,SAAS,IAAI,CAAC;oBAAC1iB;oBAAM2iB;iBAAa;YACpC;;YAFKhhB;YAAAA;;;qBAAAA,6BAAAA;oBAAAA;;;oBAAAA;0BAAAA;;;;QAIL,MAAO+gB,SAAS,MAAM,CAAE;YACtB,IAA6BE,kBAAAA,+DAAAA,CAAAA,SAAS,KAAK,QAApCC,QAAsBD,oBAAhBE,gBAAgBF;YAC7B,IAAMxF,MAAO,GAAU0F,OAARD,OAAK,KAAgB,OAAbC;YAEvB,IAAIP,SAAS,GAAG,CAACnF,MAAM;gBACrB;YACF;YAEA,IAAIkF,2BAA2Bjd,IAAI,UAAU,CAACwd,QAAO;gBACnDJ,aAAa,IAAI,CAACpd,IAAI,UAAU,CAACwd;YACnC;YAEA,IAAI,CAACxd,IAAI,UAAU,CAACwd,QAAO;gBACzB,IAAMla,MAAMhD,QAAQ,CAACyX,IAAI;gBACzB,IAAI,CAACzU,KAAK;oBACRhF,IAAI,OAAO,CACT;oBAEF;gBACF;gBAEA4e,SAAS,GAAG,CAACnF,KAAK;oBAAEyF,MAAAA;oBAAM,SAASla,IAAI,OAAO;gBAAC;gBAE/C,IAAMoa,iBACJ,oEAAGhnB,OAAO,OAAO,CAAC4M,IAAI,YAAY,IAAI,CAAC,WACvC,oEAAG5M,OAAO,OAAO,CAAC4M,IAAI,oBAAoB,IAAI,CAAC;oBAG5CvC,mCAAAA,4BAAAA;;oBAAL,QAAKA,aAAwC2c,mCAAxC3c,UAAAA,8BAAAA,SAAAA,0BAAAA,kCAAwD;wBAAxDA,mBAAAA,+DAAAA,CAAAA,kBAAO4c,6BAAWC;wBACrBP,SAAS,IAAI,CAAC;4BAACM;4BAAWC;yBAAkB;oBAC9C;;oBAFK7c;oBAAAA;;;6BAAAA,8BAAAA;4BAAAA;;;4BAAAA;kCAAAA;;;;YAGP;QACF;IACF;IAEA,OAAOmc;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvLa;;AAEb,8CAA6C,EAAE,aAAa,EAAC;;AAE7D,iBAAiB,mBAAO,CAAC,GAAY;AACrC,eAAe,mBAAO,CAAC,GAAW;AAClC,gCAAgC,mBAAO,CAAC,GAAoC;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,iCAAiC;AACjC;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,eAAe;AACnC;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,6BAA6B,2BAA2B;AACxD,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,KAAK;AAChF,MAAM;AACN,iBAAiB,oBAAoB,EAAE,sBAAsB,KAAK,OAAO;AACzE;AACA,GAAG;AACH;AACA,eAAe,+BAA+B,EAAE,aAAa,IAAI,MAAM;AACvE;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB,kBAAe;AACf,iBAAiB;AACjB;;;;;;ACxNa;;AAEb,8CAA6C;AAC7C;AACA,CAAC,EAAC;AACF,wBAAwB;AACxB,wBAAwB;AACxB,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;;;;;;ACrEa;;AAEb,8CAA6C;AAC7C;AACA,CAAC,EAAC;AACF,oDAAmD;AACnD;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF,oDAAmD;AACnD;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF,qDAAoD;AACpD;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF,6CAA4C;AAC5C;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF,kDAAiD;AACjD;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF,gEAA+D;AAC/D;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF,4DAA2D;AAC3D;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF,wDAAuD;AACvD;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF,kBAAkB,mBAAO,CAAC,GAAiB;AAC3C,eAAe,mBAAO,CAAC,GAAc;;AAErC;;;;;;ACxDa;;AAEb,8CAA6C;AAC7C;AACA,CAAC,EAAC;AACF,iBAAiB;AACjB,sBAAsB;AACtB,oCAAoC;AACpC,gCAAgC;AAChC,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AClCA;AACA;;AAEA,2CAA2C,SAAS;;AAEpD;AACA;AACqC;;;;;;;;;;ACPrC;AACA;AACA;AACkC;;;;;;;;;;;ACHoC;;AAEtE;AACA,mCAAmC,0DAAoB;AACvD;AACqC;;;;;;;;;;ACLrC;AACA;;AAEA;AACA;AACyC;;;;;;;;;;ACLzC;AACA;AACA,iGAAiG,QAAQ;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB;AACrB,SAAS;AACT;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA,0DAA0D,wBAAwB;AAClF,aAAa;AACb;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACgC;;;;;;;;;;AC3ChC;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACoC;;;;;;;;;;;;;AC9B4B;AACsB;AACA;;AAEtF;AACA;AACA,cAAc,uDAAiB;AAC/B,WAAW,kEAA4B;AACvC;AACA,QAAQ,kEAA4B;AACpC;AACA,qDAAqD,uDAAiB;AACtE;AACA;AACA;;AAE4B;;;;;;;;;;AChB5B;AACA;AACA;AACkC;;;;;;;;;;;;ACHoD;AACtB;AAChE;AACA,QAAQ,kEAA4B;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,uDAAiB;;AAExC;AACA;AACA;;AAEA;AACA;AAC2B;;;;;;;;;;ACnB3B;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAC8B;;;;;;;;;;ACjB9B;AACA;AACA,0CAA0C,oEAAoE;AAC9G,MAAM;;AAEN;AACA;AACiC;;;;;;;;;;ACPjC;AACA;AACA;AACA;;AAEA;AACA;AACkC;;;;;;;;;;;ACP8B;;AAEhE;AACA;AACA;AACA;;AAEA,6EAA6E,eAAe,uDAAuD;;AAEnJ,oBAAoB,uDAAiB;AACrC;AAC0B;;;;;;;;;;ACX1B;AACA;;AAEA;AACA;AACA,MAAM;AACN;AAC4B;;;;;;;;;;ACP5B;AACA;AACA;AACoC;;;;;;;;;;ACHpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAiG;AACjG,MAAM;AACN;AACA;AACA,KAAK;AACL;;AAE6C;;;;;;;;;;ACf7C;AACA;AACA;AACA;AACA;AACmC;;;;;;;;;;ACLnC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,+BAA+B;AAC/D;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACyC;;;;;;;;;;AC5BzC;AACA;AACA;AACmC;;;;;;;;;;ACHnC;AACA;AACA;AACqC;;;;;;;;;;;ACHyB;;AAE9D;AACA,oBAAoB,sBAAsB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA,YAAY,sDAAgB;AAC5B,SAAS;AACT;;AAEA;AACA;AAC+B;;;;;;;;;;ACtB/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACqC;;;;;;;;;;;;AC3ByC;AAChC;;AAE9C;AACA,iBAAiB,8CAAQ;;AAEzB,WAAW,8DAAwB;AACnC;AAC6C;;;;;;;;;;ACR7C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACkC;;;;;;;;;;;;;;ACT8B;AACc;AACZ;AACwB;;AAE1F;AACA,WAAW,uDAAiB,SAAS,8DAAwB,YAAY,oEAA8B,YAAY,wDAAkB;AACrI;AACiC;;;;;;;;;;ACRjC;AACA;;AAEA,4DAA4D,OAAO,6BAA6B;AAChG;AACyC;;;;;;;;;;;;;;ACLuB;AACE;AACA;AACwB;;AAE1F;AACA,WAAW,uDAAiB,SAAS,wDAAkB,SAAS,oEAA8B,SAAS,wDAAkB;AACzH;AAC0B;;;;;;;;;;;;;;ACR4C;AACJ;AACI;AACoB;;AAE1F;AACA,WAAW,0DAAoB,SAAS,wDAAkB,SAAS,oEAA8B,SAAS,0DAAoB;AAC9H;AACqC;;;;;;;;;;ACRrC;AACA,uBAAuB,8BAA8B,0BAA0B,cAAc,qBAAqB;AAClH,0BAA0B,gBAAgB,mBAAmB,gBAAgB,oBAAoB,gBAAgB,2DAA2D,qBAAqB,gBAAgB;AACjN,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;;AAE8B;;;;;;;;;;AC5B9B;AACA;;AAEA;AACA;AACyB;;;;;;;;;;;ACL6C;;AAEtE;AACA;AACA,sCAAsC,0DAAoB;;AAE1D;;AAEA;AACA;AACA,wFAAwF,0DAAoB;AAC5G;AAC+C;;;;;;;;;;;;;;ACZG;AACc;AACI;AACJ;;AAEhE;AACA;AACA;AACA,+BAA+B,yDAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,gDAAU,mBAAmB,uDAAiB;AACjE;AACA,6DAA6D,eAAe,yEAAyE;;AAErJ,eAAe,uDAAiB;AAChC;;AAEA;AACA;AACmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzBnC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,gBAAgB,sCAAsC,kBAAkB;AACjF,wBAAwB;AACxB;AACA;;AAEO;AACP;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEO;AACP;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,2DAA2D,cAAc;AACzE;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,2CAA2C,QAAQ;AACnD;AACA;;AAEO;AACP,kCAAkC;AAClC;;AAEO;AACP,uBAAuB,uFAAuF;AAC9G;AACA;AACA,yGAAyG;AACzG;AACA,sCAAsC,QAAQ;AAC9C;AACA,gEAAgE;AAChE;AACA,8CAA8C,yFAAyF;AACvI,8DAA8D,2CAA2C;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA,4CAA4C,yEAAyE;AACrH;;AAEO;AACP;AACA;;AAEO;AACP,0BAA0B,+DAA+D,iBAAiB;AAC1G;AACA,kCAAkC,MAAM,+BAA+B,YAAY;AACnF,iCAAiC,MAAM,mCAAmC,YAAY;AACtF,8BAA8B;AAC9B;AACA,GAAG;AACH;;AAEO;AACP,YAAY,6BAA6B,0BAA0B,cAAc,qBAAqB;AACtG,2IAA2I,cAAc;AACzJ,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iCAAiC,SAAS;AAC1C,iCAAiC,WAAW,UAAU;AACtD,wCAAwC,cAAc;AACtD;AACA,4GAA4G,OAAO;AACnH,+EAA+E,iBAAiB;AAChG,uDAAuD,gBAAgB,QAAQ;AAC/E,6CAA6C,gBAAgB,gBAAgB;AAC7E;AACA,gCAAgC;AAChC;AACA;AACA,QAAQ,YAAY,aAAa,SAAS,UAAU;AACpD,kCAAkC,SAAS;AAC3C;AACA;;AAEO;AACP;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACO;AACP,2BAA2B,sBAAsB;AACjD;AACA;AACA;;AAEA;AACO;AACP,gDAAgD,QAAQ;AACxD,uCAAuC,QAAQ;AAC/C,uDAAuD,QAAQ;AAC/D;AACA;AACA;;AAEO;AACP,2EAA2E,OAAO;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA,wMAAwM,cAAc;AACtN,4BAA4B,sBAAsB;AAClD,wBAAwB,YAAY,sBAAsB,qCAAqC,2CAA2C,MAAM;AAChJ,0BAA0B,MAAM,iBAAiB,YAAY;AAC7D,qBAAqB;AACrB,4BAA4B;AAC5B,2BAA2B;AAC3B,0BAA0B;AAC1B;;AAEO;AACP;AACA,eAAe,6CAA6C,UAAU,sDAAsD,cAAc;AAC1I,wBAAwB,6BAA6B,oBAAoB,uCAAuC,kBAAkB;AAClI;;AAEO;AACP;AACA;AACA,yGAAyG,uFAAuF,cAAc;AAC9M,qBAAqB,8BAA8B,gDAAgD,wDAAwD;AAC3J,2CAA2C,sCAAsC,UAAU,mBAAmB,IAAI;AAClH;;AAEO;AACP,+BAA+B,uCAAuC,YAAY,KAAK,OAAO;AAC9F;AACA;;AAEA;AACA,wCAAwC,4BAA4B;AACpE,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,qDAAqD,cAAc;AACnE;AACA;AACA;;AAEO;AACP,2CAA2C;AAC3C;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,MAAM,oBAAoB,YAAY;AAC5E,qBAAqB,8CAA8C;AACnE;AACA;AACA,qBAAqB,aAAa;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,SAAS,gBAAgB;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,yDAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChZF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,gBAAgB,sCAAsC,kBAAkB;AACjF,wBAAwB;AACxB;AACA;;AAEO;AACP;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEO;AACP;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,2DAA2D,cAAc;AACzE;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,2CAA2C,QAAQ;AACnD;AACA;;AAEO;AACP,kCAAkC;AAClC;;AAEO;AACP,uBAAuB,uFAAuF;AAC9G;AACA;AACA,yGAAyG;AACzG;AACA,sCAAsC,QAAQ;AAC9C;AACA,gEAAgE;AAChE;AACA,8CAA8C,yFAAyF;AACvI,8DAA8D,2CAA2C;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA,4CAA4C,yEAAyE;AACrH;;AAEO;AACP;AACA;;AAEO;AACP,0BAA0B,+DAA+D,iBAAiB;AAC1G;AACA,kCAAkC,MAAM,+BAA+B,YAAY;AACnF,iCAAiC,MAAM,mCAAmC,YAAY;AACtF,8BAA8B;AAC9B;AACA,GAAG;AACH;;AAEO;AACP,YAAY,6BAA6B,0BAA0B,cAAc,qBAAqB;AACtG,eAAe,oDAAoD,qEAAqE,cAAc;AACtJ,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iCAAiC,SAAS;AAC1C,iCAAiC,WAAW,UAAU;AACtD,wCAAwC,cAAc;AACtD;AACA,4GAA4G,OAAO;AACnH,+EAA+E,iBAAiB;AAChG,uDAAuD,gBAAgB,QAAQ;AAC/E,6CAA6C,gBAAgB,gBAAgB;AAC7E;AACA,gCAAgC;AAChC;AACA;AACA,QAAQ,YAAY,aAAa,SAAS,UAAU;AACpD,kCAAkC,SAAS;AAC3C;AACA;;AAEO;AACP;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACO;AACP,2BAA2B,sBAAsB;AACjD;AACA;AACA;;AAEA;AACO;AACP,gDAAgD,QAAQ;AACxD,uCAAuC,QAAQ;AAC/C,uDAAuD,QAAQ;AAC/D;AACA;AACA;;AAEO;AACP,2EAA2E,OAAO;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA,eAAe,uFAAuF,cAAc;AACpH,qBAAqB,gCAAgC,qCAAqC,2CAA2C;AACrI,0BAA0B,MAAM,iBAAiB,YAAY;AAC7D,qBAAqB;AACrB,4BAA4B;AAC5B,2BAA2B;AAC3B,0BAA0B;AAC1B;;AAEO;AACP;AACA,eAAe,6CAA6C,UAAU,sDAAsD,cAAc;AAC1I,wBAAwB,6BAA6B,oBAAoB,uCAAuC,kBAAkB;AAClI;;AAEO;AACP;AACA;AACA,yGAAyG,uFAAuF,cAAc;AAC9M,qBAAqB,8BAA8B,gDAAgD,wDAAwD;AAC3J,2CAA2C,sCAAsC,UAAU,mBAAmB,IAAI;AAClH;;AAEO;AACP,+BAA+B,uCAAuC,YAAY,KAAK,OAAO;AAC9F;AACA;;AAEA;AACA,wCAAwC,4BAA4B;AACpE,CAAC;AACD;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP,2CAA2C;AAC3C;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8CAA8C;AACnE;AACA;AACA,qBAAqB,aAAa;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,SAAS,gBAAgB;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yDAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;ACjXF;AACA,8BAA8B;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,kBAAkB;AACtC;;AAEA,sBAAsB,kBAAkB;AACxC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN,sBAAsB,kBAAkB;AACxC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,oBAAoB,oBAAoB;AACxC;AACA;;AAEA;;AAEA;AACA;AACA,QAAQ;AACR,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;;AAEA,qBAAe,oCAAU;AACzB,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,GAAG;AACf;AACA;AACA;AACA;AACA;;AAEA,qCAAqC,SAAS;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChMA;AACA;AACA;AACA;AACA;AACA,iCAAiC,WAAW;AAC5C;AACA;;;;;ACPA;AACA;AACA;AACA,kDAAkD,wCAAwC;AAC1F;AACA;AACA,E;;;;ACNA,wF;;;;ACAA;AACA;AACA;AACA,uDAAuD,iBAAiB;AACxE;AACA,gDAAgD,aAAa;AAC7D,E;;;;ACNA;AACA;AACA;AACA;AACA,E;;;;;;;;;;;;;;;;;;;;;ACJA;;;;;;;;;CASC,GAED;;;;;;;;;;;;;;;;;CAiBC,GAE2B;AAC2B;AACR;AACL;AACiB;AAChB"} \ No newline at end of file From 11ff1e9324b7c00a1b2a303261e117dba2a81f67 Mon Sep 17 00:00:00 2001 From: Tomasz Kania Date: Mon, 15 Jun 2026 02:26:07 +0200 Subject: [PATCH 02/88] chore(deps): remove joi 17.13.3 from @types/hapi to address CVE (#12214) Signed-off-by: Tomasz Kania --- package.json | 3 ++- yarn.lock | 34 +++------------------------------- 2 files changed, 5 insertions(+), 32 deletions(-) diff --git a/package.json b/package.json index 286aa8a4bfb7..ce3a0be27b0b 100644 --- a/package.json +++ b/package.json @@ -131,6 +131,8 @@ "**/@microsoft/tsdoc-config/ajv": "^6.14.0", "**/@langchain/core/langsmith": "~0.6.0", "**/@types/node": "~22.19.0", + "**/@types/hapi__cookie/joi": "^18.2.1", + "**/@types/hapi__h2o2/joi": "^18.2.1", "**/ansi-regex": "^5.0.1", "**/async": "^3.2.3", "**/cpy/globby": "^10.0.1", @@ -142,7 +144,6 @@ "**/glob-parent": "^6.0.0", "**/jest-config": "npm:@amoo-miki/jest-config@27.5.1", "**/jest-jasmine2": "npm:@amoo-miki/jest-jasmine2@27.5.1", - "**/load-bmfont/phin": "^3.7.1", "**/loader-utils": "^2.0.4", "**/minimist": "^1.2.8", diff --git a/yarn.lock b/yarn.lock index 9ba6f0226ded..b299070bbca9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2683,7 +2683,7 @@ "@hapi/hoek" "^11.0.2" "@hapi/validate" "^2.0.1" -"@hapi/hoek@9.x.x", "@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": +"@hapi/hoek@9.x.x", "@hapi/hoek@^9.0.0": version "9.3.0" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== @@ -2816,7 +2816,7 @@ resolved "https://registry.yarnpkg.com/@hapi/tlds/-/tlds-1.1.7.tgz#005d10761e7a946aedae32a418b8f1dafd3f998e" integrity sha512-MgNjRwy9Ti92yVAixLmDc8dd1bJIKwO9qlWCfFQRwRmUEDPQHYn4G6hwPFvFGUTzAa0FsS+inMjLin7GnyBRhA== -"@hapi/topo@^5.0.0", "@hapi/topo@^5.1.0": +"@hapi/topo@^5.0.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== @@ -4542,23 +4542,6 @@ dependencies: any-observable "^0.3.0" -"@sideway/address@^4.1.5": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" - integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" - integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== - "@simple-git/args-pathspec@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@simple-git/args-pathspec/-/args-pathspec-1.0.3.tgz#9ef4a2ad5f49ab4056362d03f93f775b93118ca5" @@ -14522,18 +14505,7 @@ jju@~1.4.0: resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo= -joi@^17.7.0: - version "17.13.3" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec" - integrity sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA== - dependencies: - "@hapi/hoek" "^9.3.0" - "@hapi/topo" "^5.1.0" - "@sideway/address" "^4.1.5" - "@sideway/formula" "^3.0.1" - "@sideway/pinpoint" "^2.0.0" - -joi@^18.2.1: +joi@^17.7.0, joi@^18.2.1: version "18.2.1" resolved "https://registry.yarnpkg.com/joi/-/joi-18.2.1.tgz#a022e39496e25b010a6d4649975c160a4315bd79" integrity sha512-2/OKlogiESf2Nh3TFCrRjrr9z1DRHeW0I+KReF67+4J0Ns+8hBtHRmoWAZ2OFU6I5+TWLEe6sVlSdXPjHm5UbQ== From 1a09720a6ef3ede58a0ce479660ab2aab5c4f09c Mon Sep 17 00:00:00 2001 From: Qxisylolo Date: Mon, 15 Jun 2026 14:57:31 +0800 Subject: [PATCH 03/88] fix(vis): prevent DoS via chained datasource functions in Timeline (#12217) Signed-off-by: Qxisylolo --- .../vis_type_timeline/server/handlers/chain_runner.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/plugins/vis_type_timeline/server/handlers/chain_runner.js b/src/plugins/vis_type_timeline/server/handlers/chain_runner.js index b83a7b956ec1..9296da2c0460 100644 --- a/src/plugins/vis_type_timeline/server/handlers/chain_runner.js +++ b/src/plugins/vis_type_timeline/server/handlers/chain_runner.js @@ -132,8 +132,13 @@ export default function chainRunner(tlConfig) { } else if (!result) { promise = invoke('first', [link]); } else { - const args = link.arguments ? result.concat(link.arguments) : result; - promise = invoke(link.function, args); + const functionDef = tlConfig.getFunction(link.function); + if (functionDef.datasource) { + promise = invoke('first', [link]); + } else { + const args = link.arguments ? result.concat(link.arguments) : result; + promise = invoke(link.function, args); + } } return promise.then(function (result) { From 2593055ffe965a4a36c1a0dd3ec968b32d9745a0 Mon Sep 17 00:00:00 2001 From: Yulong Ruan Date: Mon, 15 Jun 2026 16:34:13 +0800 Subject: [PATCH 04/88] make discover data table column resize on container size change (#12199) Signed-off-by: Yulong Ruan --- .../default_discover_table.tsx | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/plugins/discover/public/application/components/default_discover_table/default_discover_table.tsx b/src/plugins/discover/public/application/components/default_discover_table/default_discover_table.tsx index 1cdba4b5b305..0702bdbadb83 100644 --- a/src/plugins/discover/public/application/components/default_discover_table/default_discover_table.tsx +++ b/src/plugins/discover/public/application/components/default_discover_table/default_discover_table.tsx @@ -101,6 +101,7 @@ const DefaultDiscoverTableUI = ({ const [sentinelElement, setSentinelElement] = useState(); // `tableElement` is used for first auto-sizing and then fixing column widths const [tableElement, setTableElement] = useState(); + const [tableContainerWidth, setTableContainerWidth] = useState(); // Both need callback refs since the elements aren't set on the first render. const sentinelRef = useCallback((node: HTMLDivElement | null) => { if (node !== null) { @@ -113,6 +114,27 @@ const DefaultDiscoverTableUI = ({ } }, []); + useEffect(() => { + const tableContainer = tableElement?.parentElement; + + if (!tableContainer || typeof ResizeObserver === 'undefined') { + return; + } + + setTableContainerWidth(Math.round(tableContainer.getBoundingClientRect().width)); + + const resizeObserver = new ResizeObserver((entries) => { + const entry = entries[0]; + if (entry) { + setTableContainerWidth(Math.round(entry.contentRect.width)); + } + }); + + resizeObserver.observe(tableContainer); + + return () => resizeObserver.disconnect(); + }, [tableElement]); + useEffect(() => { if (sentinelElement && !showPagination) { observerRef.current = new IntersectionObserver( @@ -226,7 +248,7 @@ const DefaultDiscoverTableUI = ({ } return () => cancelAnimationFrame(tableLayoutRequestFrameRef.current); - }, [columns, tableElement, indexOfRenderedData, timeFromFirstRow]); + }, [columns, tableElement, indexOfRenderedData, tableContainerWidth, timeFromFirstRow]); return ( indexPattern && ( From cb4c9f9bc3955751a010e53bbdfaf07ca702b989 Mon Sep 17 00:00:00 2001 From: "Mumukshu D.C" <138109310+scuba3198@users.noreply.github.com> Date: Wed, 17 Jun 2026 03:45:56 +0545 Subject: [PATCH 05/88] [BUG] Fix duplicate shortcut registration for focus_query_bar (#11395) * Fix duplicate shortcut registration for focus_query_bar Renamed the shortcut ID to be unique per instance in the data plugin and distinctive in the explore plugin to prevent crashes when multiple query bars are rendered. Signed-off-by: Mumukshu D.C * Address maintainer feedback: registerKeyboardShortcut prop and useCallback Signed-off-by: Mumukshu D.C * Fix lint errors: extract useCallback, fix prettier formatting - Move useCallback out of conditional useKeyboardShortcut call - Add editorRef to useCallback dependency array - Fix prettier formatting for documentation object indentation - Remove extra space in empty arrow function body Signed-off-by: Abby Hu Signed-off-by: Abby Hu --------- Signed-off-by: Mumukshu D.C Signed-off-by: Abby Hu Signed-off-by: Abby Hu Co-authored-by: Qingyang(Abby) Hu Co-authored-by: Abby Hu --- .../public/ui/query_string_input/query_bar_top_row.tsx | 1 + .../ui/query_string_input/query_string_input.test.tsx | 1 + .../ui/query_string_input/query_string_input.tsx | 5 +++-- .../use_query_panel_editor/use_query_panel_editor.ts | 10 ++++++---- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/plugins/data/public/ui/query_string_input/query_bar_top_row.tsx b/src/plugins/data/public/ui/query_string_input/query_bar_top_row.tsx index 74939708ca80..29eefb6153c0 100644 --- a/src/plugins/data/public/ui/query_string_input/query_bar_top_row.tsx +++ b/src/plugins/data/public/ui/query_string_input/query_bar_top_row.tsx @@ -251,6 +251,7 @@ export default function QueryBarTopRow(props: QueryBarTopRowProps) { { const defaultOptions = { screenTitle: 'Another Screen', intl: null as any, + registerKeyboardShortcut: true, }; const services = { diff --git a/src/plugins/data/public/ui/query_string_input/query_string_input.tsx b/src/plugins/data/public/ui/query_string_input/query_string_input.tsx index 926bc562bb63..0baf6235f49f 100644 --- a/src/plugins/data/public/ui/query_string_input/query_string_input.tsx +++ b/src/plugins/data/public/ui/query_string_input/query_string_input.tsx @@ -64,6 +64,7 @@ export interface QueryStringInputProps { indexPatterns: Array; query: Query; disableAutoFocus?: boolean; + registerKeyboardShortcut?: boolean; screenTitle?: string; prepend?: any; persistedLog?: PersistedLog; @@ -532,7 +533,7 @@ export default class QueryStringInputUI extends Component { // Register keyboard shortcut for focusing query input using direct service registration const { keyboardShortcut } = this.services; - if (keyboardShortcut) { + if (this.props.registerKeyboardShortcut && keyboardShortcut && this.textareaId) { keyboardShortcut.register({ id: 'focus_query_bar', pluginId: 'data', @@ -594,7 +595,7 @@ export default class QueryStringInputUI extends Component { this.componentIsUnmounting = true; const { keyboardShortcut } = this.services; - if (keyboardShortcut) { + if (this.props.registerKeyboardShortcut && keyboardShortcut && this.textareaId) { keyboardShortcut.unregister({ id: 'focus_query_bar', pluginId: 'data', diff --git a/src/plugins/explore/public/components/query_panel/query_panel_editor/use_query_panel_editor/use_query_panel_editor.ts b/src/plugins/explore/public/components/query_panel/query_panel_editor/use_query_panel_editor/use_query_panel_editor.ts index 98d940d4d2d6..db5cc096ccf8 100644 --- a/src/plugins/explore/public/components/query_panel/query_panel_editor/use_query_panel_editor/use_query_panel_editor.ts +++ b/src/plugins/explore/public/components/query_panel/query_panel_editor/use_query_panel_editor/use_query_panel_editor.ts @@ -180,8 +180,12 @@ export const useQueryPanelEditor = (): UseQueryPanelEditorReturnType => { [] ); + const focusExploreQueryBar = useCallback(() => { + editorRef.current?.focus(); + }, [editorRef]); + keyboardShortcut?.useKeyboardShortcut({ - id: 'focus_query_bar', + id: 'focus_explore_query_bar', pluginId: 'explore', name: i18n.translate('explore.queryPanelEditor.focusQueryBarShortcut', { defaultMessage: 'Focus query bar', @@ -190,9 +194,7 @@ export const useQueryPanelEditor = (): UseQueryPanelEditorReturnType => { defaultMessage: 'Search', }), keys: '/', - execute: () => { - editorRef.current?.focus(); - }, + execute: focusExploreQueryBar, }); // The 'triggerSuggestOnFocus' prop of CodeEditor only happens on mount, so I am intentionally not passing it From 955d174b63cf57147ba5e15bc8bca02278d2ece6 Mon Sep 17 00:00:00 2001 From: Justin Kim Date: Wed, 17 Jun 2026 09:35:36 -0700 Subject: [PATCH 06/88] Fix missing osd-ui-framework dist CSS in production build (#12223) After grunt was removed, packages/osd-ui-framework/package.json still declares opensearchDashboards.build.intermediateBuildDirectory: 'target', but its 'build' script ('grunt prodBuild') that used to populate target/ was deleted (scripts is now empty). In the production build (@osd/pm buildProductionProjects) the per-project flow is: deleteTarget() wipes target/, buildProject() is now a no-op (no build script, no build targets), copyToBuild() then copies from the empty target/. As a result only package.json is shipped and the committed dist/kui_*.css files are dropped from node_modules/@osd/ui-framework. At runtime core_app.ts serves /node_modules/@osd/ui-framework/dist/{path*} from disk, so the missing kui_*.css returns a JSON 404 and the browser blocks it on an X-Content-Type-Options: nosniff MIME-type mismatch, briefly flashing the fatal-error (red) banner on initial load. The KUI stylesheets are now pre-compiled and committed in dist/, so no build step is required. Remove the stale intermediateBuildDirectory so the package is shipped from its source root (which contains dist/). The build's CleanExtraBuildFiles task strips source .scss/tests/docs from node_modules while preserving .css. Verified with a full distributable build: node_modules/@osd/ui-framework/dist/ now contains all six kui_*.css files (kui_v9_light.css included). Signed-off-by: Justin Kim --- packages/osd-ui-framework/package.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/osd-ui-framework/package.json b/packages/osd-ui-framework/package.json index 5d2db3920a0b..eb2e8358d66a 100644 --- a/packages/osd-ui-framework/package.json +++ b/packages/osd-ui-framework/package.json @@ -3,11 +3,6 @@ "version": "1.0.0", "license": "Apache-2.0", "scripts": {}, - "opensearchDashboards": { - "build": { - "intermediateBuildDirectory": "target" - } - }, "dependencies": { "classnames": "^2.3.1", "lodash": "^4.18.0", From 44bca3b65d86fd415aab38bec9f5121ec31e1c8f Mon Sep 17 00:00:00 2001 From: Yulong Ruan Date: Thu, 18 Jun 2026 13:41:19 +0800 Subject: [PATCH 07/88] fix: expose getWorkspaceIntegratedSavedObjects for registered sample datasets (#12204) Signed-off-by: Yulong Ruan --- .../home/server/services/sample_data/data_sets/index.ts | 6 +++++- .../services/sample_data/lib/sample_dataset_schema.ts | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/plugins/home/server/services/sample_data/data_sets/index.ts b/src/plugins/home/server/services/sample_data/data_sets/index.ts index dc9ac8ae3711..5c59c18e2019 100644 --- a/src/plugins/home/server/services/sample_data/data_sets/index.ts +++ b/src/plugins/home/server/services/sample_data/data_sets/index.ts @@ -31,4 +31,8 @@ export { flightsSpecProvider } from './flights'; export { logsSpecProvider } from './logs'; export { ecommerceSpecProvider } from './ecommerce'; -export { appendDataSourceId, getSavedObjectsWithDataSource } from './util'; +export { + appendDataSourceId, + getSavedObjectsWithDataSource, + overwriteSavedObjectsWithWorkspaceId, +} from './util'; diff --git a/src/plugins/home/server/services/sample_data/lib/sample_dataset_schema.ts b/src/plugins/home/server/services/sample_data/lib/sample_dataset_schema.ts index 4b6cc4cd4d03..da5a0e0c5470 100644 --- a/src/plugins/home/server/services/sample_data/lib/sample_dataset_schema.ts +++ b/src/plugins/home/server/services/sample_data/lib/sample_dataset_schema.ts @@ -93,6 +93,7 @@ export const sampleDataSchema = { // Should provide a nice demo of OpenSearch Dashboards's functionality with the sample data set savedObjects: Joi.array().items(Joi.object()).required(), getDataSourceIntegratedSavedObjects: Joi.function().required(), + getWorkspaceIntegratedSavedObjects: Joi.function().required(), dataIndices: Joi.array().items(dataIndexSchema).required(), status: Joi.string(), From 5bd3f54b24a213142c439943301aec4360088306 Mon Sep 17 00:00:00 2001 From: Qxisylolo Date: Thu, 18 Jun 2026 14:54:08 +0800 Subject: [PATCH 08/88] sync languageType to queryEditorState from saved query on init (#12222) Signed-off-by: Qxisylolo --- .../in_context_vis_editor/query_builder/query_builder.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/plugins/explore/public/application/in_context_vis_editor/query_builder/query_builder.ts b/src/plugins/explore/public/application/in_context_vis_editor/query_builder/query_builder.ts index 5fb44290e7c3..285f5d6a055e 100644 --- a/src/plugins/explore/public/application/in_context_vis_editor/query_builder/query_builder.ts +++ b/src/plugins/explore/public/application/in_context_vis_editor/query_builder/query_builder.ts @@ -176,9 +176,7 @@ export class QueryBuilder { preferredDataset ); - if (queryEditorStateFromUrl?.languageType) { - this.updateQueryEditorState({ languageType: queryEditorStateFromUrl.languageType }); - } + this.updateQueryEditorState({ languageType: languageType as SupportLanguageType }); if (queryEditorStateFromUrl?.activeBottomPanelTab) { this.updateQueryEditorState({ From dd7b404bc0063a1c511c0d42476a8b0d88ccba5d Mon Sep 17 00:00:00 2001 From: Joey Liu <55552896+Maosaic@users.noreply.github.com> Date: Thu, 18 Jun 2026 12:04:13 -0700 Subject: [PATCH 09/88] Replace @amoo-miki/numeral fork with stock @elastic/numeral + BigInt helper (#12208) * Replace @amoo-miki/numeral fork with stock @elastic/numeral + BigInt helper The @elastic/numeral dependency was aliased to a personal-scope fork (npm:@amoo-miki/numeral@2.6.0) whose only delta over stock @elastic/numeral 2.5.1 is a BigInt (long-numeral) format branch. This removes the fork in favor of the unmodified upstream package plus a small, well-tested in-repo helper that reproduces the BigInt path byte-for-byte. - package.json + packages/osd-ui-shared-deps/package.json: alias both back to stock @elastic/numeral@2.5.1 (the latter feeds the browser shared-deps bundle) - field_formats/utils/format_bigint.ts: faithful port of numeral's BigInt format path (number/currency/abbreviation/sign/grouping; percent/bytes/ordinal throw on BigInt exactly as the fork did) - converters/numeral.ts: route the isBigInt branch through formatBigInt - format_bigint.test.ts + __fixtures__/numeral_bigint_golden.json: 576-case golden corpus captured from the fork proves bug-for-bug parity, incl. throws Number-path output is unchanged: stock 2.5.1 is byte-identical to the fork for all Number inputs (the fork is just 2.5.1 + the BigInt branch). Co-Authored-By: Claude Opus 4.8 Signed-off-by: Joey Liu * Trim comments and drop fork references in BigInt format helper Addresses review feedback: shorten the verbose comments in format_bigint.ts and stop referencing the removed personal-scope numeral fork so future readers aren't confused by a dependency that no longer exists. Describe the helper on its own terms (numeral's BigInt format path) instead. Co-Authored-By: Claude Opus 4.8 Signed-off-by: Joey Liu --------- Signed-off-by: Joey Liu Co-authored-by: Claude Opus 4.8 --- package.json | 2 +- packages/osd-ui-shared-deps/package.json | 2 +- .../field_formats/converters/numeral.ts | 8 +- .../__fixtures__/numeral_bigint_golden.json | 3458 +++++++++++++++++ .../field_formats/utils/format_bigint.test.ts | 120 + .../field_formats/utils/format_bigint.ts | 242 ++ yarn.lock | 8 +- 7 files changed, 3833 insertions(+), 7 deletions(-) create mode 100644 src/plugins/data/common/field_formats/utils/__fixtures__/numeral_bigint_golden.json create mode 100644 src/plugins/data/common/field_formats/utils/format_bigint.test.ts create mode 100644 src/plugins/data/common/field_formats/utils/format_bigint.ts diff --git a/package.json b/package.json index ce3a0be27b0b..8b1d6ee50985 100644 --- a/package.json +++ b/package.json @@ -195,7 +195,7 @@ "@elastic/datemath": "5.0.3", "@elastic/eui": "npm:@opensearch-project/oui@1.22.1", "@elastic/good": "^9.0.1-kibana3", - "@elastic/numeral": "npm:@amoo-miki/numeral@2.6.0", + "@elastic/numeral": "2.5.1", "@elastic/request-crypto": "2.0.2", "@elastic/safer-lodash-set": "0.0.0", "@hapi/accept": "^6.0.3", diff --git a/packages/osd-ui-shared-deps/package.json b/packages/osd-ui-shared-deps/package.json index b2332b6b134b..4e88b950e16b 100644 --- a/packages/osd-ui-shared-deps/package.json +++ b/packages/osd-ui-shared-deps/package.json @@ -11,7 +11,7 @@ "dependencies": { "@elastic/charts": "31.1.0", "@elastic/eui": "npm:@opensearch-project/oui@1.22.1", - "@elastic/numeral": "npm:@amoo-miki/numeral@2.6.0", + "@elastic/numeral": "2.5.1", "@opensearch/datemath": "5.0.3", "@osd/i18n": "1.0.0", "@osd/monaco": "1.0.0", diff --git a/src/plugins/data/common/field_formats/converters/numeral.ts b/src/plugins/data/common/field_formats/converters/numeral.ts index 7219b2e6ab40..dd7f8e847344 100644 --- a/src/plugins/data/common/field_formats/converters/numeral.ts +++ b/src/plugins/data/common/field_formats/converters/numeral.ts @@ -36,6 +36,7 @@ import { OSD_FIELD_TYPES } from '../../osd_field_types/types'; import { FieldFormat } from '../field_format'; import { TextContextTypeConvert } from '../types'; import { UI_SETTINGS } from '../../constants'; +import { formatBigInt } from '../utils/format_bigint'; const numeralInst = numeral(); @@ -70,7 +71,12 @@ export abstract class NumeralFormat extends FieldFormat { (this.getConfig && this.getConfig(UI_SETTINGS.FORMAT_NUMBER_DEFAULT_LOCALE)) || 'en'; numeral.language(defaultLocale); - const formatted = numeralInst.set(val).format(this.param('pattern')); + // `@elastic/numeral` has no BigInt support, so long-numeral values are routed + // through `formatBigInt` instead. + const pattern = this.param('pattern'); + const formatted = isBigInt + ? formatBigInt(val, pattern, (numeral as any).languageData()) + : numeralInst.set(val).format(pattern); numeral.language(previousLocale); diff --git a/src/plugins/data/common/field_formats/utils/__fixtures__/numeral_bigint_golden.json b/src/plugins/data/common/field_formats/utils/__fixtures__/numeral_bigint_golden.json new file mode 100644 index 000000000000..4bfac7cf8c0e --- /dev/null +++ b/src/plugins/data/common/field_formats/utils/__fixtures__/numeral_bigint_golden.json @@ -0,0 +1,3458 @@ +[ + { + "value": "0", + "pattern": "0,0.[000]", + "locale": "en", + "output": "0" + }, + { + "value": "0", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "0", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "0", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "$0" + }, + { + "value": "0", + "pattern": "0", + "locale": "en", + "output": "0" + }, + { + "value": "0", + "pattern": "0,0", + "locale": "en", + "output": "0" + }, + { + "value": "0", + "pattern": "0a", + "locale": "en", + "output": "0" + }, + { + "value": "0", + "pattern": "0.0a", + "locale": "en", + "output": "0" + }, + { + "value": "0", + "pattern": "0.00a", + "locale": "en", + "output": "0" + }, + { + "value": "0", + "pattern": "+0,0", + "locale": "en", + "output": "+0" + }, + { + "value": "0", + "pattern": "(0,0)", + "locale": "en", + "output": "0" + }, + { + "value": "0", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "0", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "0", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "0", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "0", + "pattern": "0,0.00", + "locale": "en", + "output": "0" + }, + { + "value": "1", + "pattern": "0,0.[000]", + "locale": "en", + "output": "1" + }, + { + "value": "1", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "$1" + }, + { + "value": "1", + "pattern": "0", + "locale": "en", + "output": "1" + }, + { + "value": "1", + "pattern": "0,0", + "locale": "en", + "output": "1" + }, + { + "value": "1", + "pattern": "0a", + "locale": "en", + "output": "1" + }, + { + "value": "1", + "pattern": "0.0a", + "locale": "en", + "output": "1" + }, + { + "value": "1", + "pattern": "0.00a", + "locale": "en", + "output": "1" + }, + { + "value": "1", + "pattern": "+0,0", + "locale": "en", + "output": "+1" + }, + { + "value": "1", + "pattern": "(0,0)", + "locale": "en", + "output": "1" + }, + { + "value": "1", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1", + "pattern": "0,0.00", + "locale": "en", + "output": "1" + }, + { + "value": "-1", + "pattern": "0,0.[000]", + "locale": "en", + "output": "-1" + }, + { + "value": "-1", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-1", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-1", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "($1)" + }, + { + "value": "-1", + "pattern": "0", + "locale": "en", + "output": "-1" + }, + { + "value": "-1", + "pattern": "0,0", + "locale": "en", + "output": "-1" + }, + { + "value": "-1", + "pattern": "0a", + "locale": "en", + "output": "-1" + }, + { + "value": "-1", + "pattern": "0.0a", + "locale": "en", + "output": "-1" + }, + { + "value": "-1", + "pattern": "0.00a", + "locale": "en", + "output": "-1" + }, + { + "value": "-1", + "pattern": "+0,0", + "locale": "en", + "output": "-1" + }, + { + "value": "-1", + "pattern": "(0,0)", + "locale": "en", + "output": "(1)" + }, + { + "value": "-1", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-1", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-1", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-1", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-1", + "pattern": "0,0.00", + "locale": "en", + "output": "-1" + }, + { + "value": "123", + "pattern": "0,0.[000]", + "locale": "en", + "output": "123" + }, + { + "value": "123", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "123", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "123", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "$123" + }, + { + "value": "123", + "pattern": "0", + "locale": "en", + "output": "123" + }, + { + "value": "123", + "pattern": "0,0", + "locale": "en", + "output": "123" + }, + { + "value": "123", + "pattern": "0a", + "locale": "en", + "output": "123" + }, + { + "value": "123", + "pattern": "0.0a", + "locale": "en", + "output": "123" + }, + { + "value": "123", + "pattern": "0.00a", + "locale": "en", + "output": "123" + }, + { + "value": "123", + "pattern": "+0,0", + "locale": "en", + "output": "+123" + }, + { + "value": "123", + "pattern": "(0,0)", + "locale": "en", + "output": "123" + }, + { + "value": "123", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "123", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "123", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "123", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "123", + "pattern": "0,0.00", + "locale": "en", + "output": "123" + }, + { + "value": "1000", + "pattern": "0,0.[000]", + "locale": "en", + "output": "1,000" + }, + { + "value": "1000", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "$1,000" + }, + { + "value": "1000", + "pattern": "0", + "locale": "en", + "output": "1000" + }, + { + "value": "1000", + "pattern": "0,0", + "locale": "en", + "output": "1,000" + }, + { + "value": "1000", + "pattern": "0a", + "locale": "en", + "output": "1k" + }, + { + "value": "1000", + "pattern": "0.0a", + "locale": "en", + "output": "1k" + }, + { + "value": "1000", + "pattern": "0.00a", + "locale": "en", + "output": "1k" + }, + { + "value": "1000", + "pattern": "+0,0", + "locale": "en", + "output": "+1,000" + }, + { + "value": "1000", + "pattern": "(0,0)", + "locale": "en", + "output": "1,000" + }, + { + "value": "1000", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000", + "pattern": "0,0.00", + "locale": "en", + "output": "1,000" + }, + { + "value": "-1000", + "pattern": "0,0.[000]", + "locale": "en", + "output": "-1,000" + }, + { + "value": "-1000", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-1000", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-1000", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "($1,000)" + }, + { + "value": "-1000", + "pattern": "0", + "locale": "en", + "output": "-1000" + }, + { + "value": "-1000", + "pattern": "0,0", + "locale": "en", + "output": "-1,000" + }, + { + "value": "-1000", + "pattern": "0a", + "locale": "en", + "output": "-1k" + }, + { + "value": "-1000", + "pattern": "0.0a", + "locale": "en", + "output": "-1k" + }, + { + "value": "-1000", + "pattern": "0.00a", + "locale": "en", + "output": "-1k" + }, + { + "value": "-1000", + "pattern": "+0,0", + "locale": "en", + "output": "-1,000" + }, + { + "value": "-1000", + "pattern": "(0,0)", + "locale": "en", + "output": "(1,000)" + }, + { + "value": "-1000", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-1000", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-1000", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-1000", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-1000", + "pattern": "0,0.00", + "locale": "en", + "output": "-1,000" + }, + { + "value": "999999", + "pattern": "0,0.[000]", + "locale": "en", + "output": "999,999" + }, + { + "value": "999999", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "999999", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "999999", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "$999,999" + }, + { + "value": "999999", + "pattern": "0", + "locale": "en", + "output": "999999" + }, + { + "value": "999999", + "pattern": "0,0", + "locale": "en", + "output": "999,999" + }, + { + "value": "999999", + "pattern": "0a", + "locale": "en", + "output": "999k" + }, + { + "value": "999999", + "pattern": "0.0a", + "locale": "en", + "output": "999k" + }, + { + "value": "999999", + "pattern": "0.00a", + "locale": "en", + "output": "999k" + }, + { + "value": "999999", + "pattern": "+0,0", + "locale": "en", + "output": "+999,999" + }, + { + "value": "999999", + "pattern": "(0,0)", + "locale": "en", + "output": "999,999" + }, + { + "value": "999999", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "999999", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "999999", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "999999", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "999999", + "pattern": "0,0.00", + "locale": "en", + "output": "999,999" + }, + { + "value": "1000000", + "pattern": "0,0.[000]", + "locale": "en", + "output": "1,000,000" + }, + { + "value": "1000000", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000000", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "$1,000,000" + }, + { + "value": "1000000", + "pattern": "0", + "locale": "en", + "output": "1000000" + }, + { + "value": "1000000", + "pattern": "0,0", + "locale": "en", + "output": "1,000,000" + }, + { + "value": "1000000", + "pattern": "0a", + "locale": "en", + "output": "1m" + }, + { + "value": "1000000", + "pattern": "0.0a", + "locale": "en", + "output": "1m" + }, + { + "value": "1000000", + "pattern": "0.00a", + "locale": "en", + "output": "1m" + }, + { + "value": "1000000", + "pattern": "+0,0", + "locale": "en", + "output": "+1,000,000" + }, + { + "value": "1000000", + "pattern": "(0,0)", + "locale": "en", + "output": "1,000,000" + }, + { + "value": "1000000", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000000", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000000", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000", + "pattern": "0,0.00", + "locale": "en", + "output": "1,000,000" + }, + { + "value": "1000000000", + "pattern": "0,0.[000]", + "locale": "en", + "output": "1,000,000,000" + }, + { + "value": "1000000000", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000000000", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000000", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "$1,000,000,000" + }, + { + "value": "1000000000", + "pattern": "0", + "locale": "en", + "output": "1000000000" + }, + { + "value": "1000000000", + "pattern": "0,0", + "locale": "en", + "output": "1,000,000,000" + }, + { + "value": "1000000000", + "pattern": "0a", + "locale": "en", + "output": "1b" + }, + { + "value": "1000000000", + "pattern": "0.0a", + "locale": "en", + "output": "1b" + }, + { + "value": "1000000000", + "pattern": "0.00a", + "locale": "en", + "output": "1b" + }, + { + "value": "1000000000", + "pattern": "+0,0", + "locale": "en", + "output": "+1,000,000,000" + }, + { + "value": "1000000000", + "pattern": "(0,0)", + "locale": "en", + "output": "1,000,000,000" + }, + { + "value": "1000000000", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000000000", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000000000", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000000", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000000", + "pattern": "0,0.00", + "locale": "en", + "output": "1,000,000,000" + }, + { + "value": "1000000000000", + "pattern": "0,0.[000]", + "locale": "en", + "output": "1,000,000,000,000" + }, + { + "value": "1000000000000", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000000000000", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000000000", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "$1,000,000,000,000" + }, + { + "value": "1000000000000", + "pattern": "0", + "locale": "en", + "output": "1000000000000" + }, + { + "value": "1000000000000", + "pattern": "0,0", + "locale": "en", + "output": "1,000,000,000,000" + }, + { + "value": "1000000000000", + "pattern": "0a", + "locale": "en", + "output": "1t" + }, + { + "value": "1000000000000", + "pattern": "0.0a", + "locale": "en", + "output": "1t" + }, + { + "value": "1000000000000", + "pattern": "0.00a", + "locale": "en", + "output": "1t" + }, + { + "value": "1000000000000", + "pattern": "+0,0", + "locale": "en", + "output": "+1,000,000,000,000" + }, + { + "value": "1000000000000", + "pattern": "(0,0)", + "locale": "en", + "output": "1,000,000,000,000" + }, + { + "value": "1000000000000", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000000000000", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000000000000", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000000000", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000000000", + "pattern": "0,0.00", + "locale": "en", + "output": "1,000,000,000,000" + }, + { + "value": "1234567890", + "pattern": "0,0.[000]", + "locale": "en", + "output": "1,234,567,890" + }, + { + "value": "1234567890", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1234567890", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1234567890", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "$1,234,567,890" + }, + { + "value": "1234567890", + "pattern": "0", + "locale": "en", + "output": "1234567890" + }, + { + "value": "1234567890", + "pattern": "0,0", + "locale": "en", + "output": "1,234,567,890" + }, + { + "value": "1234567890", + "pattern": "0a", + "locale": "en", + "output": "1b" + }, + { + "value": "1234567890", + "pattern": "0.0a", + "locale": "en", + "output": "1b" + }, + { + "value": "1234567890", + "pattern": "0.00a", + "locale": "en", + "output": "1b" + }, + { + "value": "1234567890", + "pattern": "+0,0", + "locale": "en", + "output": "+1,234,567,890" + }, + { + "value": "1234567890", + "pattern": "(0,0)", + "locale": "en", + "output": "1,234,567,890" + }, + { + "value": "1234567890", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1234567890", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1234567890", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1234567890", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1234567890", + "pattern": "0,0.00", + "locale": "en", + "output": "1,234,567,890" + }, + { + "value": "1234567890123", + "pattern": "0,0.[000]", + "locale": "en", + "output": "1,234,567,890,123" + }, + { + "value": "1234567890123", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1234567890123", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1234567890123", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "$1,234,567,890,123" + }, + { + "value": "1234567890123", + "pattern": "0", + "locale": "en", + "output": "1234567890123" + }, + { + "value": "1234567890123", + "pattern": "0,0", + "locale": "en", + "output": "1,234,567,890,123" + }, + { + "value": "1234567890123", + "pattern": "0a", + "locale": "en", + "output": "1t" + }, + { + "value": "1234567890123", + "pattern": "0.0a", + "locale": "en", + "output": "1t" + }, + { + "value": "1234567890123", + "pattern": "0.00a", + "locale": "en", + "output": "1t" + }, + { + "value": "1234567890123", + "pattern": "+0,0", + "locale": "en", + "output": "+1,234,567,890,123" + }, + { + "value": "1234567890123", + "pattern": "(0,0)", + "locale": "en", + "output": "1,234,567,890,123" + }, + { + "value": "1234567890123", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1234567890123", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1234567890123", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1234567890123", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1234567890123", + "pattern": "0,0.00", + "locale": "en", + "output": "1,234,567,890,123" + }, + { + "value": "9007199254740991", + "pattern": "0,0.[000]", + "locale": "en", + "output": "9,007,199,254,740,991" + }, + { + "value": "9007199254740991", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "9007199254740991", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9007199254740991", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "$9,007,199,254,740,991" + }, + { + "value": "9007199254740991", + "pattern": "0", + "locale": "en", + "output": "9007199254740991" + }, + { + "value": "9007199254740991", + "pattern": "0,0", + "locale": "en", + "output": "9,007,199,254,740,991" + }, + { + "value": "9007199254740991", + "pattern": "0a", + "locale": "en", + "output": "9007t" + }, + { + "value": "9007199254740991", + "pattern": "0.0a", + "locale": "en", + "output": "9007t" + }, + { + "value": "9007199254740991", + "pattern": "0.00a", + "locale": "en", + "output": "9007t" + }, + { + "value": "9007199254740991", + "pattern": "+0,0", + "locale": "en", + "output": "+9,007,199,254,740,991" + }, + { + "value": "9007199254740991", + "pattern": "(0,0)", + "locale": "en", + "output": "9,007,199,254,740,991" + }, + { + "value": "9007199254740991", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "9007199254740991", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "9007199254740991", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9007199254740991", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9007199254740991", + "pattern": "0,0.00", + "locale": "en", + "output": "9,007,199,254,740,991" + }, + { + "value": "9007199254740992", + "pattern": "0,0.[000]", + "locale": "en", + "output": "9,007,199,254,740,992" + }, + { + "value": "9007199254740992", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "9007199254740992", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9007199254740992", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "$9,007,199,254,740,992" + }, + { + "value": "9007199254740992", + "pattern": "0", + "locale": "en", + "output": "9007199254740992" + }, + { + "value": "9007199254740992", + "pattern": "0,0", + "locale": "en", + "output": "9,007,199,254,740,992" + }, + { + "value": "9007199254740992", + "pattern": "0a", + "locale": "en", + "output": "9007t" + }, + { + "value": "9007199254740992", + "pattern": "0.0a", + "locale": "en", + "output": "9007t" + }, + { + "value": "9007199254740992", + "pattern": "0.00a", + "locale": "en", + "output": "9007t" + }, + { + "value": "9007199254740992", + "pattern": "+0,0", + "locale": "en", + "output": "+9,007,199,254,740,992" + }, + { + "value": "9007199254740992", + "pattern": "(0,0)", + "locale": "en", + "output": "9,007,199,254,740,992" + }, + { + "value": "9007199254740992", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "9007199254740992", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "9007199254740992", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9007199254740992", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9007199254740992", + "pattern": "0,0.00", + "locale": "en", + "output": "9,007,199,254,740,992" + }, + { + "value": "18014398509481982", + "pattern": "0,0.[000]", + "locale": "en", + "output": "18,014,398,509,481,982" + }, + { + "value": "18014398509481982", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "18014398509481982", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "18014398509481982", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "$18,014,398,509,481,982" + }, + { + "value": "18014398509481982", + "pattern": "0", + "locale": "en", + "output": "18014398509481982" + }, + { + "value": "18014398509481982", + "pattern": "0,0", + "locale": "en", + "output": "18,014,398,509,481,982" + }, + { + "value": "18014398509481982", + "pattern": "0a", + "locale": "en", + "output": "18014t" + }, + { + "value": "18014398509481982", + "pattern": "0.0a", + "locale": "en", + "output": "18014t" + }, + { + "value": "18014398509481982", + "pattern": "0.00a", + "locale": "en", + "output": "18014t" + }, + { + "value": "18014398509481982", + "pattern": "+0,0", + "locale": "en", + "output": "+18,014,398,509,481,982" + }, + { + "value": "18014398509481982", + "pattern": "(0,0)", + "locale": "en", + "output": "18,014,398,509,481,982" + }, + { + "value": "18014398509481982", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "18014398509481982", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "18014398509481982", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "18014398509481982", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "18014398509481982", + "pattern": "0,0.00", + "locale": "en", + "output": "18,014,398,509,481,982" + }, + { + "value": "-18014398509481982", + "pattern": "0,0.[000]", + "locale": "en", + "output": "-18,014,398,509,481,982" + }, + { + "value": "-18014398509481982", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-18014398509481982", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-18014398509481982", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "($18,014,398,509,481,982)" + }, + { + "value": "-18014398509481982", + "pattern": "0", + "locale": "en", + "output": "-18014398509481982" + }, + { + "value": "-18014398509481982", + "pattern": "0,0", + "locale": "en", + "output": "-18,014,398,509,481,982" + }, + { + "value": "-18014398509481982", + "pattern": "0a", + "locale": "en", + "output": "-18014t" + }, + { + "value": "-18014398509481982", + "pattern": "0.0a", + "locale": "en", + "output": "-18014t" + }, + { + "value": "-18014398509481982", + "pattern": "0.00a", + "locale": "en", + "output": "-18014t" + }, + { + "value": "-18014398509481982", + "pattern": "+0,0", + "locale": "en", + "output": "-18,014,398,509,481,982" + }, + { + "value": "-18014398509481982", + "pattern": "(0,0)", + "locale": "en", + "output": "(18,014,398,509,481,982)" + }, + { + "value": "-18014398509481982", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-18014398509481982", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-18014398509481982", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-18014398509481982", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-18014398509481982", + "pattern": "0,0.00", + "locale": "en", + "output": "-18,014,398,509,481,982" + }, + { + "value": "9223372036854775807", + "pattern": "0,0.[000]", + "locale": "en", + "output": "9,223,372,036,854,775,807" + }, + { + "value": "9223372036854775807", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "9223372036854775807", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9223372036854775807", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "$9,223,372,036,854,775,807" + }, + { + "value": "9223372036854775807", + "pattern": "0", + "locale": "en", + "output": "9223372036854775807" + }, + { + "value": "9223372036854775807", + "pattern": "0,0", + "locale": "en", + "output": "9,223,372,036,854,775,807" + }, + { + "value": "9223372036854775807", + "pattern": "0a", + "locale": "en", + "output": "9223372t" + }, + { + "value": "9223372036854775807", + "pattern": "0.0a", + "locale": "en", + "output": "9223372t" + }, + { + "value": "9223372036854775807", + "pattern": "0.00a", + "locale": "en", + "output": "9223372t" + }, + { + "value": "9223372036854775807", + "pattern": "+0,0", + "locale": "en", + "output": "+9,223,372,036,854,775,807" + }, + { + "value": "9223372036854775807", + "pattern": "(0,0)", + "locale": "en", + "output": "9,223,372,036,854,775,807" + }, + { + "value": "9223372036854775807", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "9223372036854775807", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "9223372036854775807", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9223372036854775807", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9223372036854775807", + "pattern": "0,0.00", + "locale": "en", + "output": "9,223,372,036,854,775,807" + }, + { + "value": "-9223372036854775808", + "pattern": "0,0.[000]", + "locale": "en", + "output": "-9,223,372,036,854,775,808" + }, + { + "value": "-9223372036854775808", + "pattern": "0,0.[000]%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-9223372036854775808", + "pattern": "0,0.[0]b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-9223372036854775808", + "pattern": "($0,0.[00])", + "locale": "en", + "output": "($9,223,372,036,854,775,808)" + }, + { + "value": "-9223372036854775808", + "pattern": "0", + "locale": "en", + "output": "-9223372036854775808" + }, + { + "value": "-9223372036854775808", + "pattern": "0,0", + "locale": "en", + "output": "-9,223,372,036,854,775,808" + }, + { + "value": "-9223372036854775808", + "pattern": "0a", + "locale": "en", + "output": "-9223372t" + }, + { + "value": "-9223372036854775808", + "pattern": "0.0a", + "locale": "en", + "output": "-9223372t" + }, + { + "value": "-9223372036854775808", + "pattern": "0.00a", + "locale": "en", + "output": "-9223372t" + }, + { + "value": "-9223372036854775808", + "pattern": "+0,0", + "locale": "en", + "output": "-9,223,372,036,854,775,808" + }, + { + "value": "-9223372036854775808", + "pattern": "(0,0)", + "locale": "en", + "output": "(9,223,372,036,854,775,808)" + }, + { + "value": "-9223372036854775808", + "pattern": "0o", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-9223372036854775808", + "pattern": "0%", + "locale": "en", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-9223372036854775808", + "pattern": "0b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-9223372036854775808", + "pattern": "0.00 b", + "locale": "en", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-9223372036854775808", + "pattern": "0,0.00", + "locale": "en", + "output": "-9,223,372,036,854,775,808" + }, + { + "value": "0", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "0" + }, + { + "value": "0", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "0", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "0", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "€0" + }, + { + "value": "0", + "pattern": "0", + "locale": "fr", + "output": "0" + }, + { + "value": "0", + "pattern": "0,0", + "locale": "fr", + "output": "0" + }, + { + "value": "0", + "pattern": "0a", + "locale": "fr", + "output": "0" + }, + { + "value": "0", + "pattern": "0.0a", + "locale": "fr", + "output": "0" + }, + { + "value": "0", + "pattern": "0.00a", + "locale": "fr", + "output": "0" + }, + { + "value": "0", + "pattern": "+0,0", + "locale": "fr", + "output": "+0" + }, + { + "value": "0", + "pattern": "(0,0)", + "locale": "fr", + "output": "0" + }, + { + "value": "0", + "pattern": "0o", + "locale": "fr", + "output": "0e" + }, + { + "value": "0", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "0", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "0", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "0", + "pattern": "0,0.00", + "locale": "fr", + "output": "0" + }, + { + "value": "1", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "1" + }, + { + "value": "1", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "€1" + }, + { + "value": "1", + "pattern": "0", + "locale": "fr", + "output": "1" + }, + { + "value": "1", + "pattern": "0,0", + "locale": "fr", + "output": "1" + }, + { + "value": "1", + "pattern": "0a", + "locale": "fr", + "output": "1" + }, + { + "value": "1", + "pattern": "0.0a", + "locale": "fr", + "output": "1" + }, + { + "value": "1", + "pattern": "0.00a", + "locale": "fr", + "output": "1" + }, + { + "value": "1", + "pattern": "+0,0", + "locale": "fr", + "output": "+1" + }, + { + "value": "1", + "pattern": "(0,0)", + "locale": "fr", + "output": "1" + }, + { + "value": "1", + "pattern": "0o", + "locale": "fr", + "output": "1e" + }, + { + "value": "1", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1", + "pattern": "0,0.00", + "locale": "fr", + "output": "1" + }, + { + "value": "-1", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "-1" + }, + { + "value": "-1", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-1", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-1", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "(€1)" + }, + { + "value": "-1", + "pattern": "0", + "locale": "fr", + "output": "-1" + }, + { + "value": "-1", + "pattern": "0,0", + "locale": "fr", + "output": "-1" + }, + { + "value": "-1", + "pattern": "0a", + "locale": "fr", + "output": "-1" + }, + { + "value": "-1", + "pattern": "0.0a", + "locale": "fr", + "output": "-1" + }, + { + "value": "-1", + "pattern": "0.00a", + "locale": "fr", + "output": "-1" + }, + { + "value": "-1", + "pattern": "+0,0", + "locale": "fr", + "output": "-1" + }, + { + "value": "-1", + "pattern": "(0,0)", + "locale": "fr", + "output": "(1)" + }, + { + "value": "-1", + "pattern": "0o", + "locale": "fr", + "output": "-1e" + }, + { + "value": "-1", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-1", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-1", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-1", + "pattern": "0,0.00", + "locale": "fr", + "output": "-1" + }, + { + "value": "123", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "123" + }, + { + "value": "123", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "123", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "123", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "€123" + }, + { + "value": "123", + "pattern": "0", + "locale": "fr", + "output": "123" + }, + { + "value": "123", + "pattern": "0,0", + "locale": "fr", + "output": "123" + }, + { + "value": "123", + "pattern": "0a", + "locale": "fr", + "output": "123" + }, + { + "value": "123", + "pattern": "0.0a", + "locale": "fr", + "output": "123" + }, + { + "value": "123", + "pattern": "0.00a", + "locale": "fr", + "output": "123" + }, + { + "value": "123", + "pattern": "+0,0", + "locale": "fr", + "output": "+123" + }, + { + "value": "123", + "pattern": "(0,0)", + "locale": "fr", + "output": "123" + }, + { + "value": "123", + "pattern": "0o", + "locale": "fr", + "output": "123e" + }, + { + "value": "123", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "123", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "123", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "123", + "pattern": "0,0.00", + "locale": "fr", + "output": "123" + }, + { + "value": "1000", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "1 000" + }, + { + "value": "1000", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "€1 000" + }, + { + "value": "1000", + "pattern": "0", + "locale": "fr", + "output": "1000" + }, + { + "value": "1000", + "pattern": "0,0", + "locale": "fr", + "output": "1 000" + }, + { + "value": "1000", + "pattern": "0a", + "locale": "fr", + "output": "1k" + }, + { + "value": "1000", + "pattern": "0.0a", + "locale": "fr", + "output": "1k" + }, + { + "value": "1000", + "pattern": "0.00a", + "locale": "fr", + "output": "1k" + }, + { + "value": "1000", + "pattern": "+0,0", + "locale": "fr", + "output": "+1 000" + }, + { + "value": "1000", + "pattern": "(0,0)", + "locale": "fr", + "output": "1 000" + }, + { + "value": "1000", + "pattern": "0o", + "locale": "fr", + "output": "1000e" + }, + { + "value": "1000", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000", + "pattern": "0,0.00", + "locale": "fr", + "output": "1 000" + }, + { + "value": "-1000", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "-1 000" + }, + { + "value": "-1000", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-1000", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-1000", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "(€1 000)" + }, + { + "value": "-1000", + "pattern": "0", + "locale": "fr", + "output": "-1000" + }, + { + "value": "-1000", + "pattern": "0,0", + "locale": "fr", + "output": "-1 000" + }, + { + "value": "-1000", + "pattern": "0a", + "locale": "fr", + "output": "-1k" + }, + { + "value": "-1000", + "pattern": "0.0a", + "locale": "fr", + "output": "-1k" + }, + { + "value": "-1000", + "pattern": "0.00a", + "locale": "fr", + "output": "-1k" + }, + { + "value": "-1000", + "pattern": "+0,0", + "locale": "fr", + "output": "-1 000" + }, + { + "value": "-1000", + "pattern": "(0,0)", + "locale": "fr", + "output": "(1 000)" + }, + { + "value": "-1000", + "pattern": "0o", + "locale": "fr", + "output": "-1000e" + }, + { + "value": "-1000", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-1000", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-1000", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-1000", + "pattern": "0,0.00", + "locale": "fr", + "output": "-1 000" + }, + { + "value": "999999", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "999 999" + }, + { + "value": "999999", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "999999", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "999999", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "€999 999" + }, + { + "value": "999999", + "pattern": "0", + "locale": "fr", + "output": "999999" + }, + { + "value": "999999", + "pattern": "0,0", + "locale": "fr", + "output": "999 999" + }, + { + "value": "999999", + "pattern": "0a", + "locale": "fr", + "output": "999k" + }, + { + "value": "999999", + "pattern": "0.0a", + "locale": "fr", + "output": "999k" + }, + { + "value": "999999", + "pattern": "0.00a", + "locale": "fr", + "output": "999k" + }, + { + "value": "999999", + "pattern": "+0,0", + "locale": "fr", + "output": "+999 999" + }, + { + "value": "999999", + "pattern": "(0,0)", + "locale": "fr", + "output": "999 999" + }, + { + "value": "999999", + "pattern": "0o", + "locale": "fr", + "output": "999999e" + }, + { + "value": "999999", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "999999", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "999999", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "999999", + "pattern": "0,0.00", + "locale": "fr", + "output": "999 999" + }, + { + "value": "1000000", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "1 000 000" + }, + { + "value": "1000000", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000000", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "€1 000 000" + }, + { + "value": "1000000", + "pattern": "0", + "locale": "fr", + "output": "1000000" + }, + { + "value": "1000000", + "pattern": "0,0", + "locale": "fr", + "output": "1 000 000" + }, + { + "value": "1000000", + "pattern": "0a", + "locale": "fr", + "output": "1m" + }, + { + "value": "1000000", + "pattern": "0.0a", + "locale": "fr", + "output": "1m" + }, + { + "value": "1000000", + "pattern": "0.00a", + "locale": "fr", + "output": "1m" + }, + { + "value": "1000000", + "pattern": "+0,0", + "locale": "fr", + "output": "+1 000 000" + }, + { + "value": "1000000", + "pattern": "(0,0)", + "locale": "fr", + "output": "1 000 000" + }, + { + "value": "1000000", + "pattern": "0o", + "locale": "fr", + "output": "1000000e" + }, + { + "value": "1000000", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000000", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000", + "pattern": "0,0.00", + "locale": "fr", + "output": "1 000 000" + }, + { + "value": "1000000000", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "1 000 000 000" + }, + { + "value": "1000000000", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000000000", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000000", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "€1 000 000 000" + }, + { + "value": "1000000000", + "pattern": "0", + "locale": "fr", + "output": "1000000000" + }, + { + "value": "1000000000", + "pattern": "0,0", + "locale": "fr", + "output": "1 000 000 000" + }, + { + "value": "1000000000", + "pattern": "0a", + "locale": "fr", + "output": "1b" + }, + { + "value": "1000000000", + "pattern": "0.0a", + "locale": "fr", + "output": "1b" + }, + { + "value": "1000000000", + "pattern": "0.00a", + "locale": "fr", + "output": "1b" + }, + { + "value": "1000000000", + "pattern": "+0,0", + "locale": "fr", + "output": "+1 000 000 000" + }, + { + "value": "1000000000", + "pattern": "(0,0)", + "locale": "fr", + "output": "1 000 000 000" + }, + { + "value": "1000000000", + "pattern": "0o", + "locale": "fr", + "output": "1000000000e" + }, + { + "value": "1000000000", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000000000", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000000", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000000", + "pattern": "0,0.00", + "locale": "fr", + "output": "1 000 000 000" + }, + { + "value": "1000000000000", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "1 000 000 000 000" + }, + { + "value": "1000000000000", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000000000000", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000000000", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "€1 000 000 000 000" + }, + { + "value": "1000000000000", + "pattern": "0", + "locale": "fr", + "output": "1000000000000" + }, + { + "value": "1000000000000", + "pattern": "0,0", + "locale": "fr", + "output": "1 000 000 000 000" + }, + { + "value": "1000000000000", + "pattern": "0a", + "locale": "fr", + "output": "1t" + }, + { + "value": "1000000000000", + "pattern": "0.0a", + "locale": "fr", + "output": "1t" + }, + { + "value": "1000000000000", + "pattern": "0.00a", + "locale": "fr", + "output": "1t" + }, + { + "value": "1000000000000", + "pattern": "+0,0", + "locale": "fr", + "output": "+1 000 000 000 000" + }, + { + "value": "1000000000000", + "pattern": "(0,0)", + "locale": "fr", + "output": "1 000 000 000 000" + }, + { + "value": "1000000000000", + "pattern": "0o", + "locale": "fr", + "output": "1000000000000e" + }, + { + "value": "1000000000000", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1000000000000", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000000000", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1000000000000", + "pattern": "0,0.00", + "locale": "fr", + "output": "1 000 000 000 000" + }, + { + "value": "1234567890", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "1 234 567 890" + }, + { + "value": "1234567890", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1234567890", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1234567890", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "€1 234 567 890" + }, + { + "value": "1234567890", + "pattern": "0", + "locale": "fr", + "output": "1234567890" + }, + { + "value": "1234567890", + "pattern": "0,0", + "locale": "fr", + "output": "1 234 567 890" + }, + { + "value": "1234567890", + "pattern": "0a", + "locale": "fr", + "output": "1b" + }, + { + "value": "1234567890", + "pattern": "0.0a", + "locale": "fr", + "output": "1b" + }, + { + "value": "1234567890", + "pattern": "0.00a", + "locale": "fr", + "output": "1b" + }, + { + "value": "1234567890", + "pattern": "+0,0", + "locale": "fr", + "output": "+1 234 567 890" + }, + { + "value": "1234567890", + "pattern": "(0,0)", + "locale": "fr", + "output": "1 234 567 890" + }, + { + "value": "1234567890", + "pattern": "0o", + "locale": "fr", + "output": "1234567890e" + }, + { + "value": "1234567890", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1234567890", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1234567890", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1234567890", + "pattern": "0,0.00", + "locale": "fr", + "output": "1 234 567 890" + }, + { + "value": "1234567890123", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "1 234 567 890 123" + }, + { + "value": "1234567890123", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1234567890123", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1234567890123", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "€1 234 567 890 123" + }, + { + "value": "1234567890123", + "pattern": "0", + "locale": "fr", + "output": "1234567890123" + }, + { + "value": "1234567890123", + "pattern": "0,0", + "locale": "fr", + "output": "1 234 567 890 123" + }, + { + "value": "1234567890123", + "pattern": "0a", + "locale": "fr", + "output": "1t" + }, + { + "value": "1234567890123", + "pattern": "0.0a", + "locale": "fr", + "output": "1t" + }, + { + "value": "1234567890123", + "pattern": "0.00a", + "locale": "fr", + "output": "1t" + }, + { + "value": "1234567890123", + "pattern": "+0,0", + "locale": "fr", + "output": "+1 234 567 890 123" + }, + { + "value": "1234567890123", + "pattern": "(0,0)", + "locale": "fr", + "output": "1 234 567 890 123" + }, + { + "value": "1234567890123", + "pattern": "0o", + "locale": "fr", + "output": "1234567890123e" + }, + { + "value": "1234567890123", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "1234567890123", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1234567890123", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "1234567890123", + "pattern": "0,0.00", + "locale": "fr", + "output": "1 234 567 890 123" + }, + { + "value": "9007199254740991", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "9 007 199 254 740 991" + }, + { + "value": "9007199254740991", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "9007199254740991", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9007199254740991", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "€9 007 199 254 740 991" + }, + { + "value": "9007199254740991", + "pattern": "0", + "locale": "fr", + "output": "9007199254740991" + }, + { + "value": "9007199254740991", + "pattern": "0,0", + "locale": "fr", + "output": "9 007 199 254 740 991" + }, + { + "value": "9007199254740991", + "pattern": "0a", + "locale": "fr", + "output": "9007t" + }, + { + "value": "9007199254740991", + "pattern": "0.0a", + "locale": "fr", + "output": "9007t" + }, + { + "value": "9007199254740991", + "pattern": "0.00a", + "locale": "fr", + "output": "9007t" + }, + { + "value": "9007199254740991", + "pattern": "+0,0", + "locale": "fr", + "output": "+9 007 199 254 740 991" + }, + { + "value": "9007199254740991", + "pattern": "(0,0)", + "locale": "fr", + "output": "9 007 199 254 740 991" + }, + { + "value": "9007199254740991", + "pattern": "0o", + "locale": "fr", + "output": "9007199254740991e" + }, + { + "value": "9007199254740991", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "9007199254740991", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9007199254740991", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9007199254740991", + "pattern": "0,0.00", + "locale": "fr", + "output": "9 007 199 254 740 991" + }, + { + "value": "9007199254740992", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "9 007 199 254 740 992" + }, + { + "value": "9007199254740992", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "9007199254740992", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9007199254740992", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "€9 007 199 254 740 992" + }, + { + "value": "9007199254740992", + "pattern": "0", + "locale": "fr", + "output": "9007199254740992" + }, + { + "value": "9007199254740992", + "pattern": "0,0", + "locale": "fr", + "output": "9 007 199 254 740 992" + }, + { + "value": "9007199254740992", + "pattern": "0a", + "locale": "fr", + "output": "9007t" + }, + { + "value": "9007199254740992", + "pattern": "0.0a", + "locale": "fr", + "output": "9007t" + }, + { + "value": "9007199254740992", + "pattern": "0.00a", + "locale": "fr", + "output": "9007t" + }, + { + "value": "9007199254740992", + "pattern": "+0,0", + "locale": "fr", + "output": "+9 007 199 254 740 992" + }, + { + "value": "9007199254740992", + "pattern": "(0,0)", + "locale": "fr", + "output": "9 007 199 254 740 992" + }, + { + "value": "9007199254740992", + "pattern": "0o", + "locale": "fr", + "output": "9007199254740992e" + }, + { + "value": "9007199254740992", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "9007199254740992", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9007199254740992", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9007199254740992", + "pattern": "0,0.00", + "locale": "fr", + "output": "9 007 199 254 740 992" + }, + { + "value": "18014398509481982", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "18 014 398 509 481 982" + }, + { + "value": "18014398509481982", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "18014398509481982", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "18014398509481982", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "€18 014 398 509 481 982" + }, + { + "value": "18014398509481982", + "pattern": "0", + "locale": "fr", + "output": "18014398509481982" + }, + { + "value": "18014398509481982", + "pattern": "0,0", + "locale": "fr", + "output": "18 014 398 509 481 982" + }, + { + "value": "18014398509481982", + "pattern": "0a", + "locale": "fr", + "output": "18014t" + }, + { + "value": "18014398509481982", + "pattern": "0.0a", + "locale": "fr", + "output": "18014t" + }, + { + "value": "18014398509481982", + "pattern": "0.00a", + "locale": "fr", + "output": "18014t" + }, + { + "value": "18014398509481982", + "pattern": "+0,0", + "locale": "fr", + "output": "+18 014 398 509 481 982" + }, + { + "value": "18014398509481982", + "pattern": "(0,0)", + "locale": "fr", + "output": "18 014 398 509 481 982" + }, + { + "value": "18014398509481982", + "pattern": "0o", + "locale": "fr", + "output": "18014398509481982e" + }, + { + "value": "18014398509481982", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "18014398509481982", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "18014398509481982", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "18014398509481982", + "pattern": "0,0.00", + "locale": "fr", + "output": "18 014 398 509 481 982" + }, + { + "value": "-18014398509481982", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "-18 014 398 509 481 982" + }, + { + "value": "-18014398509481982", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-18014398509481982", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-18014398509481982", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "(€18 014 398 509 481 982)" + }, + { + "value": "-18014398509481982", + "pattern": "0", + "locale": "fr", + "output": "-18014398509481982" + }, + { + "value": "-18014398509481982", + "pattern": "0,0", + "locale": "fr", + "output": "-18 014 398 509 481 982" + }, + { + "value": "-18014398509481982", + "pattern": "0a", + "locale": "fr", + "output": "-18014t" + }, + { + "value": "-18014398509481982", + "pattern": "0.0a", + "locale": "fr", + "output": "-18014t" + }, + { + "value": "-18014398509481982", + "pattern": "0.00a", + "locale": "fr", + "output": "-18014t" + }, + { + "value": "-18014398509481982", + "pattern": "+0,0", + "locale": "fr", + "output": "-18 014 398 509 481 982" + }, + { + "value": "-18014398509481982", + "pattern": "(0,0)", + "locale": "fr", + "output": "(18 014 398 509 481 982)" + }, + { + "value": "-18014398509481982", + "pattern": "0o", + "locale": "fr", + "output": "-18014398509481982e" + }, + { + "value": "-18014398509481982", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-18014398509481982", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-18014398509481982", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-18014398509481982", + "pattern": "0,0.00", + "locale": "fr", + "output": "-18 014 398 509 481 982" + }, + { + "value": "9223372036854775807", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "9 223 372 036 854 775 807" + }, + { + "value": "9223372036854775807", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "9223372036854775807", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9223372036854775807", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "€9 223 372 036 854 775 807" + }, + { + "value": "9223372036854775807", + "pattern": "0", + "locale": "fr", + "output": "9223372036854775807" + }, + { + "value": "9223372036854775807", + "pattern": "0,0", + "locale": "fr", + "output": "9 223 372 036 854 775 807" + }, + { + "value": "9223372036854775807", + "pattern": "0a", + "locale": "fr", + "output": "9223372t" + }, + { + "value": "9223372036854775807", + "pattern": "0.0a", + "locale": "fr", + "output": "9223372t" + }, + { + "value": "9223372036854775807", + "pattern": "0.00a", + "locale": "fr", + "output": "9223372t" + }, + { + "value": "9223372036854775807", + "pattern": "+0,0", + "locale": "fr", + "output": "+9 223 372 036 854 775 807" + }, + { + "value": "9223372036854775807", + "pattern": "(0,0)", + "locale": "fr", + "output": "9 223 372 036 854 775 807" + }, + { + "value": "9223372036854775807", + "pattern": "0o", + "locale": "fr", + "output": "9223372036854775807e" + }, + { + "value": "9223372036854775807", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "9223372036854775807", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9223372036854775807", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "9223372036854775807", + "pattern": "0,0.00", + "locale": "fr", + "output": "9 223 372 036 854 775 807" + }, + { + "value": "-9223372036854775808", + "pattern": "0,0.[000]", + "locale": "fr", + "output": "-9 223 372 036 854 775 808" + }, + { + "value": "-9223372036854775808", + "pattern": "0,0.[000]%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-9223372036854775808", + "pattern": "0,0.[0]b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-9223372036854775808", + "pattern": "($0,0.[00])", + "locale": "fr", + "output": "(€9 223 372 036 854 775 808)" + }, + { + "value": "-9223372036854775808", + "pattern": "0", + "locale": "fr", + "output": "-9223372036854775808" + }, + { + "value": "-9223372036854775808", + "pattern": "0,0", + "locale": "fr", + "output": "-9 223 372 036 854 775 808" + }, + { + "value": "-9223372036854775808", + "pattern": "0a", + "locale": "fr", + "output": "-9223372t" + }, + { + "value": "-9223372036854775808", + "pattern": "0.0a", + "locale": "fr", + "output": "-9223372t" + }, + { + "value": "-9223372036854775808", + "pattern": "0.00a", + "locale": "fr", + "output": "-9223372t" + }, + { + "value": "-9223372036854775808", + "pattern": "+0,0", + "locale": "fr", + "output": "-9 223 372 036 854 775 808" + }, + { + "value": "-9223372036854775808", + "pattern": "(0,0)", + "locale": "fr", + "output": "(9 223 372 036 854 775 808)" + }, + { + "value": "-9223372036854775808", + "pattern": "0o", + "locale": "fr", + "output": "-9223372036854775808e" + }, + { + "value": "-9223372036854775808", + "pattern": "0%", + "locale": "fr", + "output": "THROW: Cannot mix BigInt and other types, use explicit conversions" + }, + { + "value": "-9223372036854775808", + "pattern": "0b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-9223372036854775808", + "pattern": "0.00 b", + "locale": "fr", + "output": "THROW: Cannot convert a BigInt value to a number" + }, + { + "value": "-9223372036854775808", + "pattern": "0,0.00", + "locale": "fr", + "output": "-9 223 372 036 854 775 808" + } +] diff --git a/src/plugins/data/common/field_formats/utils/format_bigint.test.ts b/src/plugins/data/common/field_formats/utils/format_bigint.test.ts new file mode 100644 index 000000000000..85d2f2ac2dc9 --- /dev/null +++ b/src/plugins/data/common/field_formats/utils/format_bigint.test.ts @@ -0,0 +1,120 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + * Any modifications Copyright OpenSearch Contributors. See + * GitHub history for details. + */ + +/** + * @jest-environment node + */ + +// @ts-ignore +import numeral from '@elastic/numeral'; +// @ts-ignore +import numeralLanguages from '@elastic/numeral/languages'; +import { formatBigInt, NumeralLanguageData } from './format_bigint'; +import goldenCorpus from './__fixtures__/numeral_bigint_golden.json'; + +/** + * `numeral_bigint_golden.json` was captured from the long-numeral implementation + * OpenSearch shipped before moving to stock `@elastic/numeral` + this helper. Every + * case asserts that `formatBigInt` reproduces that exact output — or its exact throw — + * so the migration is provably a no-op for BigInt field-format values. + */ +interface GoldenCase { + value: string; + pattern: string; + locale: string; + output: string; +} + +const THROW_PREFIX = 'THROW: '; + +describe('formatBigInt', () => { + // Register the same locale data the field-format converter registers. + beforeAll(() => { + numeralLanguages.forEach((numeralLanguage: Record) => { + numeral.language(numeralLanguage.id, numeralLanguage.lang); + }); + }); + + const languageDataFor = (locale: string): NumeralLanguageData => { + const previous = numeral.language(); + numeral.language(locale); + const data = (numeral as any).languageData(); + numeral.language(previous); + return data; + }; + + describe('parity with the captured long-numeral golden corpus', () => { + const cases = goldenCorpus as GoldenCase[]; + + it('covers the full captured matrix', () => { + // Guard against an accidentally truncated fixture. + expect(cases.length).toBe(576); + }); + + cases.forEach(({ value, pattern, locale, output }) => { + const expectsThrow = output.startsWith(THROW_PREFIX); + const title = `${locale} | ${value} | ${pattern} => ${ + expectsThrow ? '' : JSON.stringify(output) + }`; + + it(title, () => { + const language = languageDataFor(locale); + if (expectsThrow) { + expect(() => formatBigInt(BigInt(value), pattern, language)).toThrow(); + } else { + expect(formatBigInt(BigInt(value), pattern, language)).toBe(output); + } + }); + }); + }); + + describe('readable spot checks (en)', () => { + const en = (): NumeralLanguageData => { + numeral.language('en'); + return (numeral as any).languageData(); + }; + + it('formats a 64-bit max integer with grouping and no precision loss', () => { + expect(formatBigInt(9223372036854775807n, '0,0.[000]', en())).toBe( + '9,223,372,036,854,775,807' + ); + }); + + it('renders the 64-bit min integer in a currency pattern with parentheses', () => { + expect(formatBigInt(-9223372036854775808n, '($0,0.[00])', en())).toBe( + '($9,223,372,036,854,775,808)' + ); + }); + + it('keeps numeral abbreviation behavior (truncating, decimals dropped)', () => { + expect(formatBigInt(9007199254740991n, '0.0a', en())).toBe('9007t'); + }); + + it('applies the explicit sign prefix', () => { + expect(formatBigInt(1234567890n, '+0,0', en())).toBe('+1,234,567,890'); + }); + + it('throws on percent patterns, as long-numeral formatting always has', () => { + expect(() => formatBigInt(123n, '0,0.[000]%', en())).toThrow(); + }); + + it('throws on bytes patterns, as long-numeral formatting always has', () => { + expect(() => formatBigInt(123n, '0,0.[0]b', en())).toThrow(); + }); + }); + + describe('locale sensitivity', () => { + it('uses the locale thousands delimiter (fr)', () => { + const fr = languageDataFor('fr'); + expect(formatBigInt(1234567890n, '0,0.[000]', fr)).toBe('1 234 567 890'); + }); + }); +}); diff --git a/src/plugins/data/common/field_formats/utils/format_bigint.ts b/src/plugins/data/common/field_formats/utils/format_bigint.ts new file mode 100644 index 000000000000..ed08861a3550 --- /dev/null +++ b/src/plugins/data/common/field_formats/utils/format_bigint.ts @@ -0,0 +1,242 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + * Any modifications Copyright OpenSearch Contributors. See + * GitHub history for details. + */ + +/* + * `@elastic/numeral` has no BigInt support, so OpenSearch `long` field values that + * arrive as a BigInt are formatted here. This mirrors numeral's own `formatNumber`/ + * `formatCurrency` logic, specialized for BigInt — an integer, so there is no + * fractional part, rounding, or decimal precision to apply. + * + * The percent, bytes and ordinal format types reuse numeral's Number arithmetic, + * which throws a TypeError on a BigInt; those patterns have never supported + * long-numeral values. + */ + +/** + * Subset of numeral's language object that the BigInt path needs. Obtain it at the + * call site via `numeral.languageData()` for the active locale. + */ +export interface NumeralLanguageData { + delimiters: { thousands: string; decimal: string }; + abbreviations: { thousand: string; million: string; billion: string; trillion: string }; + ordinal: (n: number) => string; + currency: { symbol: string }; +} + +const IE12 = 1000000000000n; +const IE9 = 1000000000n; +const IE6 = 1000000n; +const IE3 = 1000n; + +/** + * Format a BigInt value with a numeral pattern. + */ +export function formatBigInt(value: bigint, format: string, language: NumeralLanguageData): string { + // numeral's `formatNumeral` dispatch order: currency, percentage, time, bytes, + // then plain number. + if (format.indexOf('$') > -1) { + return formatCurrency(value, format, language); + } + if (format.indexOf('%') > -1) { + return formatPercentage(value, format, language); + } + if (format.indexOf(':') > -1) { + return formatTime(value); + } + if (format.indexOf('b') > -1) { + return formatBytes(value); + } + return formatNumber(value, format, language); +} + +function formatNumber(value: bigint, format: string, language: NumeralLanguageData): string { + let negP = false; + let signed = false; + let abbr = ''; + let abbrK = false; + let abbrM = false; + let abbrB = false; + let abbrT = false; + let abbrForce = false; + let ord = ''; + const abs = value < 0n ? -value : value; + let w: string; + const d = ''; + let neg = false; + + // numeral's `zeroFormat` is unset by default in OpenSearch, so the zero special-case + // is intentionally omitted (a zero BigInt formats like any other integer). + + // Parentheses for negatives, or an explicit sign. Parentheses win when both present. + if (format.indexOf('(') > -1) { + negP = true; + format = format.slice(1, -1); + } else if (format.indexOf('+') > -1) { + signed = true; + format = format.replace(/\+/g, ''); + } + + // Abbreviation (k/m/b/t). BigInt division truncates, dropping the fractional part. + if (format.indexOf('a') > -1) { + abbrK = format.indexOf('aK') >= 0; + abbrM = format.indexOf('aM') >= 0; + abbrB = format.indexOf('aB') >= 0; + abbrT = format.indexOf('aT') >= 0; + abbrForce = abbrK || abbrM || abbrB || abbrT; + + if (format.indexOf(' a') > -1) { + abbr = ' '; + format = format.replace(' a', ''); + } else { + format = format.replace('a', ''); + } + + if ((abs >= IE12 && !abbrForce) || abbrT) { + abbr += language.abbreviations.trillion; + value = value / IE12; + } else if ((abs < IE12 && abs >= IE9 && !abbrForce) || abbrB) { + abbr += language.abbreviations.billion; + value = value / IE9; + } else if ((abs < IE9 && abs >= IE6 && !abbrForce) || abbrM) { + abbr += language.abbreviations.million; + value = value / IE6; + } else if ((abs < IE6 && abs >= IE3 && !abbrForce) || abbrK) { + abbr += language.abbreviations.thousand; + value = value / IE3; + } + } + + // Ordinal. numeral's ordinal function does Number arithmetic (e.g. `number % 10`), + // which throws for a BigInt. + if (format.indexOf('o') > -1) { + if (format.indexOf(' o') > -1) { + ord = ' '; + format = format.replace(' o', ''); + } else { + format = format.replace('o', ''); + } + ord = ord + language.ordinal((value as unknown) as number); + } + + if (format.indexOf('[.]') > -1) { + format = format.replace('[.]', '.'); + } + + // A BigInt is an integer: no precision/decimals are applied (numeral skips its + // precision branch for BigInt and uses the raw integer string). + w = value.toString(); + + const thousands = format.indexOf(','); + + if (w.indexOf('-') === 0) { + w = w.slice(1); + neg = true; + } + + if (thousands > -1) { + w = w.replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + language.delimiters.thousands); + } + + if (format.indexOf('.') === 0) { + w = ''; + } + + return ( + (negP && neg ? '(' : '') + + (!negP && neg ? '-' : '') + + (!neg && signed ? '+' : '') + + w + + d + + (ord || '') + + (abbr || '') + + (negP && neg ? ')' : '') + ); +} + +function formatCurrency(value: bigint, format: string, language: NumeralLanguageData): string { + const symbolIndex = format.indexOf('$'); + const openParenIndex = format.indexOf('('); + const minusSignIndex = format.indexOf('-'); + let space = ''; + + if (format.indexOf(' $') > -1) { + space = ' '; + format = format.replace(' $', ''); + } else if (format.indexOf('$ ') > -1) { + space = ' '; + format = format.replace('$ ', ''); + } else { + format = format.replace('$', ''); + } + + let output = formatNumber(value, format, language); + const symbol = language.currency.symbol; + + if (symbolIndex <= 1) { + if (output.indexOf('(') > -1 || output.indexOf('-') > -1) { + const chars = output.split(''); + let spliceIndex = 1; + if (symbolIndex < openParenIndex || symbolIndex < minusSignIndex) { + spliceIndex = 0; + } + chars.splice(spliceIndex, 0, symbol + space); + output = chars.join(''); + } else { + output = symbol + space + output; + } + } else if (output.indexOf(')') > -1) { + const chars = output.split(''); + chars.splice(-1, 0, space + symbol); + output = chars.join(''); + } else { + output = output + space + symbol; + } + + return output; +} + +function formatPercentage(value: bigint, format: string, language: NumeralLanguageData): string { + // numeral multiplies by 100 (a Number) before formatting. With a BigInt this throws + // `TypeError: Cannot mix BigInt and other types`. + const scaled = ((((value as unknown) as number) * 100) as unknown) as bigint; + let space = ''; + if (format.indexOf(' %') > -1) { + space = ' '; + format = format.replace(' %', ''); + } else { + format = format.replace('%', ''); + } + + let output = formatNumber(scaled, format, language); + if (output.indexOf(')') > -1) { + const chars = output.split(''); + chars.splice(-1, 0, space + '%'); + output = chars.join(''); + } else { + output = output + space + '%'; + } + return output; +} + +function formatBytes(value: bigint): string { + // numeral floors the value (a Number op) to pick a byte unit. With a BigInt this + // throws `TypeError: Cannot convert a BigInt value to a number`. + Math.floor((value as unknown) as number); + // Unreachable; the line above always throws for a BigInt. + return value.toString(); +} + +function formatTime(value: bigint): string { + // numeral applies Math.floor/Math.abs to the value, which throws for a BigInt. + Math.floor(Math.abs((value as unknown) as number)); + // Unreachable; the line above always throws for a BigInt. + return value.toString(); +} diff --git a/yarn.lock b/yarn.lock index b299070bbca9..331a602c8959 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2405,10 +2405,10 @@ resolved "https://registry.yarnpkg.com/@elastic/node-crypto/-/node-crypto-1.1.1.tgz#619b70322c9cce4a7ee5fbf8f678b1baa7f06095" integrity sha512-F6tIk8Txdqjg8Siv60iAvXzO9ZdQI87K3sS/fh5xd2XaWK+T5ZfqeTvsT7srwG6fr6uCBfuQEJV1KBBl+JpLZA== -"@elastic/numeral@npm:@amoo-miki/numeral@2.6.0": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@amoo-miki/numeral/-/numeral-2.6.0.tgz#3a114ef81cd36ab8207dc771751e47a1323f3a6f" - integrity sha512-P2w5/ufeYdMuvY6Y1BiI3Gzj4MQ+87NAvGTQ0Qvx1wJbTh8q1b+ZWUGJjT5h9xl9BgYQ6sF4X8UZgIwW5T/ljg== +"@elastic/numeral@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@elastic/numeral/-/numeral-2.5.1.tgz#96acf39c3d599950646ef8ccfd24a3f057cf4932" + integrity sha512-Tby6TKjixRFY+atVNeYUdGr9m0iaOq8230KTwn8BbUhkh7LwozfgKq0U98HRX7n63ZL62szl+cDKTYzh5WPCFQ== "@elastic/request-crypto@2.0.2": version "2.0.2" From b4013b3f176785d9d8fce90e9da64b8bf1999e4e Mon Sep 17 00:00:00 2001 From: Shenoy Pratik Date: Thu, 18 Jun 2026 14:08:29 -0700 Subject: [PATCH 10/88] fix(sample-data): exclude Observability (otel) sample set on AnalyticEngine data sources (#12216) * fix(sample-data): exclude Observability (otel) sample set on AnalyticEngine The sample data list route already limits the available sample sets for an AnalyticEngine (Mustang) data source. It kept both 'logs' and 'otel', but the Observability sample set (otel) cannot be installed on a Mustang domain: its trace index mappings declare 'nested' fields (events/links), which the pluggable data format rejects at index creation: mapper_parsing_exception: nested type is not supported with pluggable data format on field [links] so the install fails with an internal server error ('Unable to install sample data set: Sample Observability Logs, Traces, and Metrics'). Restrict the AnalyticEngine sample set list to 'logs' (Sample web logs), which has no nested fields and installs cleanly. Updates the route's unit test to assert only 'logs' is returned for an AnalyticEngine data source; non-AnalyticEngine sources are unchanged. Signed-off-by: Shenoy Pratik * chore: add changelog fragment for #12216 Signed-off-by: Shenoy Pratik * Update src/plugins/home/server/services/sample_data/routes/list.ts Co-authored-by: Joshua Li Signed-off-by: Shenoy Pratik --------- Signed-off-by: Shenoy Pratik Signed-off-by: Shenoy Pratik Co-authored-by: Joshua Li --- changelogs/fragments/12216.yml | 2 ++ .../server/services/sample_data/routes/list.test.ts | 9 +++++---- .../home/server/services/sample_data/routes/list.ts | 10 ++++++---- 3 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 changelogs/fragments/12216.yml diff --git a/changelogs/fragments/12216.yml b/changelogs/fragments/12216.yml new file mode 100644 index 000000000000..25501ce924fa --- /dev/null +++ b/changelogs/fragments/12216.yml @@ -0,0 +1,2 @@ +fix: +- Exclude the Observability (otel) sample data set on AnalyticEngine data sources, since its nested-field trace mappings cannot be created on a pluggable-dataformat domain ([#12216](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/12216)) diff --git a/src/plugins/home/server/services/sample_data/routes/list.test.ts b/src/plugins/home/server/services/sample_data/routes/list.test.ts index 0301913537cd..4943a27238f0 100644 --- a/src/plugins/home/server/services/sample_data/routes/list.test.ts +++ b/src/plugins/home/server/services/sample_data/routes/list.test.ts @@ -274,7 +274,7 @@ describe('sample data list route', () => { ); }); - it('filters sample datasets to only logs and otel for AnalyticEngine data source', async () => { + it('filters sample datasets to only logs for AnalyticEngine data source', async () => { const mockDataSourceId = 'analyticEngineDataSource'; const mockClient = jest.fn().mockResolvedValueOnce(true).mockResolvedValueOnce({ count: 1 }); @@ -342,10 +342,11 @@ describe('sample data list route', () => { expect(mockSOClient.get).toHaveBeenCalledWith('data-source', mockDataSourceId); expect(mockResponse.ok).toBeCalled(); - // Verify that only logs and otel datasets are returned + // Verify that only the logs dataset is returned (otel is excluded because its + // nested-field trace mappings cannot be created on an AnalyticEngine domain) const responseBody = mockResponse.ok.mock.calls[0]?.[0]?.body as any[]; - expect(responseBody).toHaveLength(2); - expect(responseBody.map((ds) => ds.id).sort()).toEqual(['logs', 'otel']); + expect(responseBody).toHaveLength(1); + expect(responseBody.map((ds) => ds.id).sort()).toEqual(['logs']); }); it('returns all sample datasets for non-AnalyticEngine data source', async () => { diff --git a/src/plugins/home/server/services/sample_data/routes/list.ts b/src/plugins/home/server/services/sample_data/routes/list.ts index 5581e19bc676..ac8206175b99 100644 --- a/src/plugins/home/server/services/sample_data/routes/list.ts +++ b/src/plugins/home/server/services/sample_data/routes/list.ts @@ -54,12 +54,14 @@ export const createListRoute = (router: IRouter, sampleDatasets: SampleDatasetSc const workspaceState = getWorkspaceState(req); const workspaceId = workspaceState?.requestWorkspaceId; - // For AnalyticEngine (Mustang) datasource, only support Sample Observability Logs (otel) and Sample web logs (logs) + // For AnalyticEngine datasource, only support Sample web logs (logs). The + // Observability sample set (otel) is excluded because its trace index mappings use + // `nested` fields (events/links), which the pluggable data format rejects at index + // creation ("nested type is not supported with pluggable data format"), so installing + // it against an AnalyticEngine domain fails with an internal server error. let filteredSampleDatasets = sampleDatasets; if (await isAnalyticEngineDataSource(dataSourceId, context.core.savedObjects.client)) { - filteredSampleDatasets = sampleDatasets.filter( - (dataset) => dataset.id === 'logs' || dataset.id === 'otel' - ); + filteredSampleDatasets = sampleDatasets.filter((dataset) => dataset.id === 'logs'); } const registeredSampleDatasets = filteredSampleDatasets.map((sampleDataset) => { From 41bae50d52a7e641df1c7d839812075a99494ec3 Mon Sep 17 00:00:00 2001 From: ZilongX <99905560+ZilongX@users.noreply.github.com> Date: Fri, 19 Jun 2026 14:01:43 -0700 Subject: [PATCH 11/88] =?UTF-8?q?fix(data=5Fsource):=20prevent=20privilege?= =?UTF-8?q?=20escalation=20via=20unauthorized=20data=20=E2=80=A6=20(#12258?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(data_source): prevent privilege escalation via unauthorized data source usage The getClient(dataSourceId) context provider passed the calling user's scoped SavedObjects client directly to configureClient/configureLegacyClient, which then fetched and decrypted the data source's stored credentials with no authorization check on whether the caller was permitted to USE that data source. Any authenticated user with read access to a tenant could use any data source's stored credentials to execute requests as that data source's identity, bypassing index-level, document-level, and field-level security (CVE pending). Fix (two layers): Layer 1 — Strip credentials from read APIs in DataSourceSavedObjectsClientWrapper. The wrapper previously only intercepted write operations (create/update). get(), find(), and bulkGet() now strip auth.credentials from data-source saved objects before returning them to any caller, so encrypted credential material is never exposed through the SavedObjects API. Layer 2 — Internal repository for credential access in getClient. DataSourcePlugin.start() creates an internal SavedObjects repository that bypasses the credential-stripping wrapper. configureClient and configureLegacyClient now perform a two-step fetch: 1. getDataSource(id, scopedClient) — access check; throws 404/Forbidden if the calling user's tenant/workspace does not include this data source. 2. getDataSourceInternal(id, internalRepo) — fetches with full encrypted credentials only after step 1 passes. internalSavedObjects is optional in DataSourceClientParams for backward compatibility; callers that do not provide it (e.g. test-connection routes, existing unit tests) retain the previous single-fetch behavior with no change in call count or semantics. Affects: open-source self-managed deployments with data_source.enabled: true. Not affected: managed service (token_exchange auth model, no stored credentials). Signed-off-by: Zilong Xia * fix: address lint errors (prettier formatting, array type style) Signed-off-by: Zilong Xia --------- Signed-off-by: Zilong Xia --- .../server/client/configure_client.ts | 15 ++++ .../server/client/configure_client_utils.ts | 28 +++++++- .../server/legacy/configure_legacy_client.ts | 11 ++- src/plugins/data_source/server/plugin.ts | 10 +++ ...ata_source_saved_objects_client_wrapper.ts | 70 ++++++++++++++++++- src/plugins/data_source/server/types.ts | 3 + 6 files changed, 132 insertions(+), 5 deletions(-) diff --git a/src/plugins/data_source/server/client/configure_client.ts b/src/plugins/data_source/server/client/configure_client.ts index 7425bf42bb56..2c35c324df7d 100644 --- a/src/plugins/data_source/server/client/configure_client.ts +++ b/src/plugins/data_source/server/client/configure_client.ts @@ -25,6 +25,7 @@ import { getAWSCredential, getCredential, getDataSource, + getDataSourceInternal, getAuthenticationMethod, generateCacheKey, } from './configure_client_utils'; @@ -34,6 +35,7 @@ export const configureClient = async ( { dataSourceId, savedObjects, + internalSavedObjects, cryptography, testClientDataSourceAttr, customApiSchemaRegistryPromise, @@ -60,13 +62,26 @@ export const configureClient = async ( ((type === AuthType.UsernamePasswordType && !credentials?.password) || (type === AuthType.SigV4 && !credentials?.accessKey && !credentials?.secretKey)) ) { + // Verify user can access the data source (scoped client enforces tenant/workspace permissions), + // then fetch with credentials via internal repository to avoid the credential-stripping wrapper. dataSource = await getDataSource(dataSourceId, savedObjects); + if (internalSavedObjects) { + dataSource = await getDataSourceInternal(dataSourceId, internalSavedObjects); + } } else { dataSource = testClientDataSourceAttr; requireDecryption = false; } } else { + // Verify user can access the data source (scoped client enforces tenant/workspace permissions). + // This throws a 404 / Forbidden if the user does not have access, preventing use of a + // data source the caller is not authorised to access. + // The scoped client returns credentials stripped by the wrapper; if an internal repository + // is available, use it to re-fetch with full encrypted credentials for decryption below. dataSource = await getDataSource(dataSourceId!, savedObjects); + if (internalSavedObjects) { + dataSource = await getDataSourceInternal(dataSourceId!, internalSavedObjects); + } } const authenticationMethod = getAuthenticationMethod(dataSource, authRegistry); diff --git a/src/plugins/data_source/server/client/configure_client_utils.ts b/src/plugins/data_source/server/client/configure_client_utils.ts index 586d97e2c213..909d01fa5ff1 100644 --- a/src/plugins/data_source/server/client/configure_client_utils.ts +++ b/src/plugins/data_source/server/client/configure_client_utils.ts @@ -5,7 +5,10 @@ import { Client } from '@opensearch-project/opensearch'; import { Client as LegacyClient } from 'elasticsearch'; -import { SavedObjectsClientContract } from '../../../../../src/core/server'; +import { + ISavedObjectsRepository, + SavedObjectsClientContract, +} from '../../../../../src/core/server'; import { DATA_SOURCE_SAVED_OBJECT_TYPE } from '../../common'; import { DataSourceAttributes, @@ -67,6 +70,29 @@ export const getDataSource = async ( return dataSourceAttr; }; +/** + * Fetch a data source with full credentials using the internal repository. + * The internal repository bypasses the credential-stripping SavedObjects wrapper, + * so encrypted credentials are present in the returned attributes. + * + * IMPORTANT: callers MUST have already verified the requesting user can access + * this data source via the scoped client (getDataSource) before calling this. + */ +export const getDataSourceInternal = async ( + dataSourceId: string, + internalSavedObjects: ISavedObjectsRepository +): Promise => { + const dataSourceSavedObject = await internalSavedObjects.get( + DATA_SOURCE_SAVED_OBJECT_TYPE, + dataSourceId + ); + + return { + ...dataSourceSavedObject.attributes, + lastUpdatedTime: dataSourceSavedObject.updated_at, + }; +}; + export const getCredential = async ( dataSource: DataSourceAttributes, cryptography: CryptographyServiceSetup diff --git a/src/plugins/data_source/server/legacy/configure_legacy_client.ts b/src/plugins/data_source/server/legacy/configure_legacy_client.ts index 45faac248ae6..217323fc6b27 100644 --- a/src/plugins/data_source/server/legacy/configure_legacy_client.ts +++ b/src/plugins/data_source/server/legacy/configure_legacy_client.ts @@ -33,6 +33,7 @@ import { getAWSCredential, getCredential, getDataSource, + getDataSourceInternal, getAuthenticationMethod, generateCacheKey, } from '../client/configure_client_utils'; @@ -42,6 +43,7 @@ export const configureLegacyClient = async ( { dataSourceId, savedObjects, + internalSavedObjects, cryptography, customApiSchemaRegistryPromise, request, @@ -53,7 +55,14 @@ export const configureLegacyClient = async ( logger: Logger ) => { try { - const dataSourceAttr = await getDataSource(dataSourceId!, savedObjects); + // Verify the user can access the data source via the scoped client (enforces tenant/workspace + // permissions), then fetch with full credentials via internal repository. + // The scoped client returns credentials stripped by the wrapper; re-fetch via internal + // repository when available so encrypted credentials are present for decryption below. + let dataSourceAttr = await getDataSource(dataSourceId!, savedObjects); + if (internalSavedObjects) { + dataSourceAttr = await getDataSourceInternal(dataSourceId!, internalSavedObjects); + } let clientParams; const authenticationMethod = getAuthenticationMethod(dataSourceAttr, authRegistry); diff --git a/src/plugins/data_source/server/plugin.ts b/src/plugins/data_source/server/plugin.ts index f99d62f76275..48b501c098eb 100644 --- a/src/plugins/data_source/server/plugin.ts +++ b/src/plugins/data_source/server/plugin.ts @@ -11,6 +11,7 @@ import { CoreSetup, CoreStart, IContextProvider, + ISavedObjectsRepository, Logger, LoggerContextConfigInput, OpenSearchDashboardsRequest, @@ -44,6 +45,7 @@ export class DataSourcePlugin implements Plugin) { this.logger = this.initializerContext.logger.get(); @@ -182,6 +184,12 @@ export class DataSourcePlugin implements Plugin this.authMethodsRegistry, getCustomApiSchemaRegistry: () => this.customApiSchemaRegistry, @@ -212,6 +220,7 @@ export class DataSourcePlugin implements Plugin( + type: string, + id: string, + options?: Record + ) => { + const result = await wrapperOptions.client.get(type, id, options); + if (type === DATA_SOURCE_SAVED_OBJECT_TYPE) { + return stripCredentials(result); + } + return result; + }; + + const findWithCredentialsStripping = async ( + options: SavedObjectsFindOptions + ): Promise> => { + const result = await wrapperOptions.client.find(options); + const types = Array.isArray(options.type) ? options.type : [options.type]; + if (types.includes(DATA_SOURCE_SAVED_OBJECT_TYPE)) { + return { + ...result, + saved_objects: result.saved_objects.map((obj) => + obj.type === DATA_SOURCE_SAVED_OBJECT_TYPE ? stripCredentials(obj) : obj + ), + }; + } + return result; + }; + + const bulkGetWithCredentialsStripping = async ( + objects?: SavedObjectsBulkGetObject[] + ) => { + const result = await wrapperOptions.client.bulkGet(objects); + return { + ...result, + saved_objects: result.saved_objects.map((obj) => + obj.type === DATA_SOURCE_SAVED_OBJECT_TYPE ? stripCredentials(obj) : obj + ), + }; + }; + return { ...wrapperOptions.client, create: createWithCredentialsEncryption, bulkCreate: bulkCreateWithCredentialsEncryption, checkConflicts: wrapperOptions.client.checkConflicts, delete: wrapperOptions.client.delete, - find: wrapperOptions.client.find, - bulkGet: wrapperOptions.client.bulkGet, - get: wrapperOptions.client.get, + find: findWithCredentialsStripping, + bulkGet: bulkGetWithCredentialsStripping, + get: getWithCredentialsStripping, update: updateWithCredentialsEncryption, bulkUpdate: bulkUpdateWithCredentialsEncryption, errors: wrapperOptions.client.errors, @@ -531,3 +574,24 @@ export class DataSourceSavedObjectsClientWrapper { return authMethod !== undefined; } } + +/** + * Strip auth.credentials from a data source saved object before returning it + * through external read APIs (get / find / bulkGet). Credentials are encrypted + * at rest and must never be exposed to callers via the saved objects API. + * configureClient / configureLegacyClient retrieve credentials via an internal + * repository that bypasses this wrapper. + */ +function stripCredentials(obj: any): any { + if (!obj?.attributes?.auth) return obj; + return { + ...obj, + attributes: { + ...obj.attributes, + auth: { + ...obj.attributes.auth, + credentials: undefined, + }, + }, + }; +} diff --git a/src/plugins/data_source/server/types.ts b/src/plugins/data_source/server/types.ts index f2c85dfa53d0..4a3ada37b4b7 100644 --- a/src/plugins/data_source/server/types.ts +++ b/src/plugins/data_source/server/types.ts @@ -4,6 +4,7 @@ */ import { + ISavedObjectsRepository, LegacyCallAPIOptions, OpenSearchClient, SavedObjectsClientContract, @@ -31,6 +32,8 @@ export interface LegacyClientCallAPIParams { export interface DataSourceClientParams { // to fetch data source on behalf of users, caller should pass scoped saved objects client savedObjects: SavedObjectsClientContract; + // internal repository used to read encrypted credentials; bypasses the credential-stripping wrapper + internalSavedObjects?: ISavedObjectsRepository; cryptography: CryptographyServiceSetup; // optional when creating test client, required for normal client dataSourceId?: string; From 70a2bb5f657d7ffa4b5ce2b25b9555e0689e613f Mon Sep 17 00:00:00 2001 From: Tomasz Kania Date: Mon, 22 Jun 2026 03:52:10 +0200 Subject: [PATCH 12/88] chore(deps): Bump node from v22.22.3 to v22.23.0 (#12234) Signed-off-by: Tomasz Kania --- .node-version | 2 +- .nvmrc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.node-version b/.node-version index 941d7c071de8..1c9aeda807da 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -22.22.3 +22.23.0 diff --git a/.nvmrc b/.nvmrc index 941d7c071de8..1c9aeda807da 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.22.3 +22.23.0 From 33c302d75423cf841c90224f4a6bc6c134a982e4 Mon Sep 17 00:00:00 2001 From: Adam Tackett <105462877+TackAdam@users.noreply.github.com> Date: Mon, 22 Jun 2026 10:48:36 -0700 Subject: [PATCH 13/88] [Bug] Trace dataset auto creation (#12236) * fix auto creation field detection Signed-off-by: Adam Tackett * address comment Signed-off-by: Adam Tackett --------- Signed-off-by: Adam Tackett Co-authored-by: Adam Tackett --- .../trace_auto_detect_callout.test.tsx | 14 +- .../components/trace_auto_detect_callout.tsx | 8 +- src/plugins/agent_traces/public/index.ts | 1 - .../public/utils/create_auto_datasets.test.ts | 709 ---------------- .../public/utils/create_auto_datasets.ts | 233 ------ .../trace_auto_detect_callout.test.tsx | 8 + .../components/trace_auto_detect_callout.tsx | 6 +- .../public/utils/create_auto_datasets.test.ts | 756 +++++++----------- .../public/utils/create_auto_datasets.ts | 292 ++++--- .../workspace_creator/workspace_creator.tsx | 1 + 10 files changed, 438 insertions(+), 1590 deletions(-) delete mode 100644 src/plugins/agent_traces/public/utils/create_auto_datasets.test.ts delete mode 100644 src/plugins/agent_traces/public/utils/create_auto_datasets.ts diff --git a/src/plugins/agent_traces/public/components/trace_auto_detect_callout.test.tsx b/src/plugins/agent_traces/public/components/trace_auto_detect_callout.test.tsx index ba40bbfa77f0..ccdb14e33f78 100644 --- a/src/plugins/agent_traces/public/components/trace_auto_detect_callout.test.tsx +++ b/src/plugins/agent_traces/public/components/trace_auto_detect_callout.test.tsx @@ -11,11 +11,13 @@ import { TraceAutoDetectCallout } from './trace_auto_detect_callout'; import { OpenSearchDashboardsContextProvider } from '../../../opensearch_dashboards_react/public'; import { AgentTracesServices } from '../types'; import * as autoDetectModule from '../utils/auto_detect_trace_data'; -import * as createDatasetsModule from '../utils/create_auto_datasets'; +import * as createDatasetsModule from '../../../explore/public'; // Mock the utility functions jest.mock('../utils/auto_detect_trace_data'); -jest.mock('../utils/create_auto_datasets'); +jest.mock('../../../explore/public', () => ({ + createAutoDetectedDatasets: jest.fn(), +})); // Mock the DiscoverNoIndexPatterns component jest.mock( @@ -72,6 +74,13 @@ describe('TraceAutoDetectCallout', () => { getIds: jest.fn().mockResolvedValue([]), get: jest.fn(), } as any, + dataViews: { + createAndSave: jest.fn(), + get: jest.fn(), + refreshFields: jest.fn(), + updateSavedObject: jest.fn(), + clearCache: jest.fn(), + } as any, }; }); @@ -249,6 +258,7 @@ describe('TraceAutoDetectCallout', () => { await waitFor(() => { expect(mockCreateAutoDetectedDatasets).toHaveBeenCalledWith( mockServices.savedObjects!.client, + mockServices.dataViews, expect.objectContaining({ tracesDetected: true, logsDetected: true, diff --git a/src/plugins/agent_traces/public/components/trace_auto_detect_callout.tsx b/src/plugins/agent_traces/public/components/trace_auto_detect_callout.tsx index 2baf2af9821c..ce3fc171c01f 100644 --- a/src/plugins/agent_traces/public/components/trace_auto_detect_callout.tsx +++ b/src/plugins/agent_traces/public/components/trace_auto_detect_callout.tsx @@ -20,7 +20,7 @@ import { useOpenSearchDashboards } from '../../../opensearch_dashboards_react/pu import { CORE_SIGNAL_TYPES } from '../../../data/common'; import { AgentTracesServices } from '../types'; import { detectTraceDataAcrossDataSources, DetectionResult } from '../utils/auto_detect_trace_data'; -import { createAutoDetectedDatasets } from '../utils/create_auto_datasets'; +import { createAutoDetectedDatasets } from '../../../explore/public'; import { DiscoverNoIndexPatterns } from '../application/legacy/discover/application/components/no_index_patterns/no_index_patterns'; const DISMISSED_KEY = 'agentTraces:traces:autoDetectDismissed'; @@ -128,7 +128,11 @@ export const TraceAutoDetectCallout: React.FC = () => { // Create datasets for each detected datasource for (const detection of detections) { - const result = await createAutoDetectedDatasets(services.savedObjects.client, detection); + const result = await createAutoDetectedDatasets( + services.savedObjects.client, + services.dataViews, + detection + ); if (result.traceDatasetId || result.logDatasetId) { totalCreated++; diff --git a/src/plugins/agent_traces/public/index.ts b/src/plugins/agent_traces/public/index.ts index c9d4426f4766..2ea4dee5b2af 100644 --- a/src/plugins/agent_traces/public/index.ts +++ b/src/plugins/agent_traces/public/index.ts @@ -22,4 +22,3 @@ export { AgentTracesPluginSetup, AgentTracesPluginStart } from './types'; // Export trace auto-detection utilities for use by other plugins export { detectTraceData, DetectionResult } from './utils/auto_detect_trace_data'; -export { createAutoDetectedDatasets, CreateDatasetsResult } from './utils/create_auto_datasets'; diff --git a/src/plugins/agent_traces/public/utils/create_auto_datasets.test.ts b/src/plugins/agent_traces/public/utils/create_auto_datasets.test.ts deleted file mode 100644 index b73f8f9a2fc9..000000000000 --- a/src/plugins/agent_traces/public/utils/create_auto_datasets.test.ts +++ /dev/null @@ -1,709 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { SavedObjectsClientContract } from 'src/core/public'; -import { createAutoDetectedDatasets } from './create_auto_datasets'; -import { DetectionResult } from './auto_detect_trace_data'; - -describe('createAutoDetectedDatasets', () => { - let mockSavedObjectsClient: jest.Mocked; - - beforeEach(() => { - // Create mock saved objects client - mockSavedObjectsClient = { - create: jest.fn(), - find: jest.fn().mockResolvedValue({ total: 0, savedObjects: [] }), - } as any; - }); - - afterEach(() => { - jest.clearAllMocks(); - }); - - it('should create trace dataset when traces are detected', async () => { - const detection: DetectionResult = { - tracesDetected: true, - logsDetected: false, - tracePattern: 'otel-v1-apm-span*', - logPattern: null, - traceTimeField: 'endTime', - logTimeField: null, - }; - - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'trace-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - expect(result.traceDatasetId).toBe('trace-dataset-id'); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); - - expect(mockSavedObjectsClient.create).toHaveBeenCalledTimes(1); - expect(mockSavedObjectsClient.create).toHaveBeenCalledWith( - 'index-pattern', - { - title: 'otel-v1-apm-span*', - displayName: 'Trace Dataset', - timeFieldName: 'endTime', - signalType: 'traces', - }, - { - references: [], - } - ); - }); - - it('should create log dataset when logs are detected', async () => { - const detection: DetectionResult = { - tracesDetected: false, - logsDetected: true, - tracePattern: null, - logPattern: 'logs-otel-v1*', - traceTimeField: null, - logTimeField: 'time', - }; - - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - expect(result.traceDatasetId).toBeNull(); - expect(result.logDatasetId).toBe('log-dataset-id'); - expect(result.correlationId).toBeNull(); - - expect(mockSavedObjectsClient.create).toHaveBeenCalledTimes(1); - expect(mockSavedObjectsClient.create).toHaveBeenCalledWith( - 'index-pattern', - { - title: 'logs-otel-v1*', - displayName: 'Log Dataset', - timeFieldName: 'time', - signalType: 'logs', - schemaMappings: JSON.stringify({ - otelLogs: { - timestamp: 'time', - traceId: 'traceId', - spanId: 'spanId', - serviceName: 'resource.attributes.service.name', - }, - }), - }, - { - references: [], - } - ); - }); - - it('should create both datasets and correlation when both are detected', async () => { - const detection: DetectionResult = { - tracesDetected: true, - logsDetected: true, - tracePattern: 'otel-v1-apm-span*', - logPattern: 'logs-otel-v1*', - traceTimeField: 'endTime', - logTimeField: 'time', - }; - - mockSavedObjectsClient.create - .mockResolvedValueOnce({ - id: 'trace-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockResolvedValueOnce({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockResolvedValueOnce({ - id: 'correlation-id', - type: 'correlations', - attributes: {}, - references: [], - } as any); - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - expect(result.traceDatasetId).toBe('trace-dataset-id'); - expect(result.logDatasetId).toBe('log-dataset-id'); - expect(result.correlationId).toBe('correlation-id'); - - expect(mockSavedObjectsClient.create).toHaveBeenCalledTimes(3); - - // Verify trace dataset creation - expect(mockSavedObjectsClient.create).toHaveBeenNthCalledWith( - 1, - 'index-pattern', - { - title: 'otel-v1-apm-span*', - displayName: 'Trace Dataset', - timeFieldName: 'endTime', - signalType: 'traces', - }, - { - references: [], - } - ); - - // Verify log dataset creation - expect(mockSavedObjectsClient.create).toHaveBeenNthCalledWith( - 2, - 'index-pattern', - { - title: 'logs-otel-v1*', - displayName: 'Log Dataset', - timeFieldName: 'time', - signalType: 'logs', - schemaMappings: JSON.stringify({ - otelLogs: { - timestamp: 'time', - traceId: 'traceId', - spanId: 'spanId', - serviceName: 'resource.attributes.service.name', - }, - }), - }, - { - references: [], - } - ); - - // Verify correlation creation - expect(mockSavedObjectsClient.create).toHaveBeenNthCalledWith( - 3, - 'correlations', - { - title: 'trace-to-logs_otel-v1-apm-span*', - correlationType: 'trace-to-logs-otel-v1-apm-span*', - version: '1.0.0', - entities: [ - { tracesDataset: { id: 'references[0].id' } }, - { logsDataset: { id: 'references[1].id' } }, - ], - }, - { - references: [ - { - name: 'entities[0].index', - type: 'index-pattern', - id: 'trace-dataset-id', - }, - { - name: 'entities[1].index', - type: 'index-pattern', - id: 'log-dataset-id', - }, - ], - } - ); - }); - - it('should include dataSourceRef when dataSourceId is provided for trace dataset', async () => { - const detection: DetectionResult = { - tracesDetected: true, - logsDetected: false, - tracePattern: 'otel-v1-apm-span*', - logPattern: null, - traceTimeField: 'endTime', - logTimeField: null, - }; - - const dataSourceId = 'test-datasource-id'; - - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'trace-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); - - await createAutoDetectedDatasets(mockSavedObjectsClient, detection, dataSourceId); - - expect(mockSavedObjectsClient.create).toHaveBeenCalledWith( - 'index-pattern', - { - title: 'otel-v1-apm-span*', - displayName: 'Trace Dataset', - timeFieldName: 'endTime', - signalType: 'traces', - }, - { - references: [ - { - id: dataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ], - } - ); - }); - - it('should include dataSourceRef when dataSourceId is provided for log dataset', async () => { - const detection: DetectionResult = { - tracesDetected: false, - logsDetected: true, - tracePattern: null, - logPattern: 'logs-otel-v1*', - traceTimeField: null, - logTimeField: 'time', - }; - - const dataSourceId = 'test-datasource-id'; - - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); - - await createAutoDetectedDatasets(mockSavedObjectsClient, detection, dataSourceId); - - expect(mockSavedObjectsClient.create).toHaveBeenCalledWith( - 'index-pattern', - { - title: 'logs-otel-v1*', - displayName: 'Log Dataset', - timeFieldName: 'time', - signalType: 'logs', - schemaMappings: JSON.stringify({ - otelLogs: { - timestamp: 'time', - traceId: 'traceId', - spanId: 'spanId', - serviceName: 'resource.attributes.service.name', - }, - }), - }, - { - references: [ - { - id: dataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ], - } - ); - }); - - it('should not create trace dataset when tracePattern is missing', async () => { - const detection: DetectionResult = { - tracesDetected: true, - logsDetected: false, - tracePattern: null, // Missing pattern - logPattern: null, - traceTimeField: 'endTime', - logTimeField: null, - }; - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - expect(result.traceDatasetId).toBeNull(); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); - expect(mockSavedObjectsClient.create).not.toHaveBeenCalled(); - }); - - it('should not create trace dataset when traceTimeField is missing', async () => { - const detection: DetectionResult = { - tracesDetected: true, - logsDetected: false, - tracePattern: 'otel-v1-apm-span*', - logPattern: null, - traceTimeField: null, // Missing time field - logTimeField: null, - }; - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - expect(result.traceDatasetId).toBeNull(); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); - expect(mockSavedObjectsClient.create).not.toHaveBeenCalled(); - }); - - it('should not create log dataset when logPattern is missing', async () => { - const detection: DetectionResult = { - tracesDetected: false, - logsDetected: true, - tracePattern: null, - logPattern: null, // Missing pattern - traceTimeField: null, - logTimeField: 'time', - }; - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - expect(result.traceDatasetId).toBeNull(); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); - expect(mockSavedObjectsClient.create).not.toHaveBeenCalled(); - }); - - it('should not create log dataset when logTimeField is missing', async () => { - const detection: DetectionResult = { - tracesDetected: false, - logsDetected: true, - tracePattern: null, - logPattern: 'logs-otel-v1*', - traceTimeField: null, - logTimeField: null, // Missing time field - }; - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - expect(result.traceDatasetId).toBeNull(); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); - expect(mockSavedObjectsClient.create).not.toHaveBeenCalled(); - }); - - it('should not create correlation if only trace dataset was created', async () => { - const detection: DetectionResult = { - tracesDetected: true, - logsDetected: false, - tracePattern: 'otel-v1-apm-span*', - logPattern: null, - traceTimeField: 'endTime', - logTimeField: null, - }; - - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'trace-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - expect(result.correlationId).toBeNull(); - expect(mockSavedObjectsClient.create).toHaveBeenCalledTimes(1); - }); - - it('should not create correlation if only log dataset was created', async () => { - const detection: DetectionResult = { - tracesDetected: false, - logsDetected: true, - tracePattern: null, - logPattern: 'logs-otel-v1*', - traceTimeField: null, - logTimeField: 'time', - }; - - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - expect(result.correlationId).toBeNull(); - expect(mockSavedObjectsClient.create).toHaveBeenCalledTimes(1); - }); - - it('should return empty result when nothing is detected', async () => { - const detection: DetectionResult = { - tracesDetected: false, - logsDetected: false, - tracePattern: null, - logPattern: null, - traceTimeField: null, - logTimeField: null, - }; - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - expect(result.traceDatasetId).toBeNull(); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); - expect(mockSavedObjectsClient.create).not.toHaveBeenCalled(); - }); - - it('should handle errors gracefully when trace dataset creation fails', async () => { - const detection: DetectionResult = { - tracesDetected: true, - logsDetected: false, - tracePattern: 'otel-v1-apm-span*', - logPattern: null, - traceTimeField: 'endTime', - logTimeField: null, - }; - - const error = new Error('Failed to create trace dataset'); - mockSavedObjectsClient.create.mockRejectedValue(error); - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - // Should return null instead of throwing - expect(result.traceDatasetId).toBeNull(); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); - }); - - it('should handle errors gracefully when log dataset creation fails', async () => { - const detection: DetectionResult = { - tracesDetected: false, - logsDetected: true, - tracePattern: null, - logPattern: 'logs-otel-v1*', - traceTimeField: null, - logTimeField: 'time', - }; - - const error = new Error('Failed to create log dataset'); - mockSavedObjectsClient.create.mockRejectedValue(error); - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - // Should return null instead of throwing - expect(result.traceDatasetId).toBeNull(); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); - }); - - it('should handle errors gracefully when correlation creation fails', async () => { - const detection: DetectionResult = { - tracesDetected: true, - logsDetected: true, - tracePattern: 'otel-v1-apm-span*', - logPattern: 'logs-otel-v1*', - traceTimeField: 'endTime', - logTimeField: 'time', - }; - - mockSavedObjectsClient.create - .mockResolvedValueOnce({ - id: 'trace-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockResolvedValueOnce({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockRejectedValueOnce(new Error('Failed to create correlation')); - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - // Should return successfully with dataset IDs even if correlation fails - expect(result.traceDatasetId).toBe('trace-dataset-id'); - expect(result.logDatasetId).toBe('log-dataset-id'); - expect(result.correlationId).toBeNull(); - }); - - it('should include dataSourceRef for both datasets when dataSourceId is provided', async () => { - const detection: DetectionResult = { - tracesDetected: true, - logsDetected: true, - tracePattern: 'otel-v1-apm-span*', - logPattern: 'logs-otel-v1*', - traceTimeField: 'endTime', - logTimeField: 'time', - }; - - const dataSourceId = 'test-datasource-id'; - - mockSavedObjectsClient.create - .mockResolvedValueOnce({ - id: 'trace-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockResolvedValueOnce({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockResolvedValueOnce({ - id: 'correlation-id', - type: 'correlations', - attributes: {}, - references: [], - } as any); - - await createAutoDetectedDatasets(mockSavedObjectsClient, detection, dataSourceId); - - // Verify both datasets have dataSourceRef in references - expect(mockSavedObjectsClient.create).toHaveBeenNthCalledWith( - 1, - 'index-pattern', - expect.anything(), - expect.objectContaining({ - references: [ - { - id: dataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ], - }) - ); - - expect(mockSavedObjectsClient.create).toHaveBeenNthCalledWith( - 2, - 'index-pattern', - expect.anything(), - expect.objectContaining({ - references: [ - { - id: dataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ], - }) - ); - }); - - it('should create datasets with correct signal types', async () => { - const detection: DetectionResult = { - tracesDetected: true, - logsDetected: true, - tracePattern: 'otel-v1-apm-span*', - logPattern: 'logs-otel-v1*', - traceTimeField: 'endTime', - logTimeField: 'time', - }; - - mockSavedObjectsClient.create - .mockResolvedValueOnce({ - id: 'trace-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockResolvedValueOnce({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockResolvedValueOnce({ - id: 'correlation-id', - type: 'correlations', - attributes: {}, - references: [], - } as any); - - await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - // Verify trace dataset has signalType='traces' - expect(mockSavedObjectsClient.create).toHaveBeenNthCalledWith( - 1, - 'index-pattern', - expect.objectContaining({ - signalType: 'traces', - }), - expect.anything() - ); - - // Verify log dataset has signalType='logs' - expect(mockSavedObjectsClient.create).toHaveBeenNthCalledWith( - 2, - 'index-pattern', - expect.objectContaining({ - signalType: 'logs', - }), - expect.anything() - ); - }); - - it('should create log dataset with correct schema mappings', async () => { - const detection: DetectionResult = { - tracesDetected: false, - logsDetected: true, - tracePattern: null, - logPattern: 'logs-otel-v1*', - traceTimeField: null, - logTimeField: 'time', - }; - - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); - - await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - const expectedSchemaMappings = { - otelLogs: { - timestamp: 'time', - traceId: 'traceId', - spanId: 'spanId', - serviceName: 'resource.attributes.service.name', - }, - }; - - expect(mockSavedObjectsClient.create).toHaveBeenCalledWith( - 'index-pattern', - expect.objectContaining({ - schemaMappings: JSON.stringify(expectedSchemaMappings), - }), - expect.anything() - ); - }); - - it('should use detected logTimeField in schema mappings when different from default', async () => { - const detection: DetectionResult = { - tracesDetected: false, - logsDetected: true, - tracePattern: null, - logPattern: 'logs-custom*', - traceTimeField: null, - logTimeField: 'timestamp', - }; - - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); - - await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - const expectedSchemaMappings = { - otelLogs: { - timestamp: 'timestamp', - traceId: 'traceId', - spanId: 'spanId', - serviceName: 'resource.attributes.service.name', - }, - }; - - expect(mockSavedObjectsClient.create).toHaveBeenCalledWith( - 'index-pattern', - expect.objectContaining({ - timeFieldName: 'timestamp', - schemaMappings: JSON.stringify(expectedSchemaMappings), - }), - expect.anything() - ); - }); -}); diff --git a/src/plugins/agent_traces/public/utils/create_auto_datasets.ts b/src/plugins/agent_traces/public/utils/create_auto_datasets.ts deleted file mode 100644 index d71cbc9b8f3b..000000000000 --- a/src/plugins/agent_traces/public/utils/create_auto_datasets.ts +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { SavedObjectsClientContract } from 'src/core/public'; -import { CORRELATION_TYPE_PREFIXES } from '../../../data/common'; -import { DetectionResult } from './auto_detect_trace_data'; - -export interface CreateDatasetsResult { - traceDatasetId: string | null; - logDatasetId: string | null; - correlationId: string | null; -} - -/** - * Create auto-detected trace and log datasets with correlation - */ -export async function createAutoDetectedDatasets( - savedObjectsClient: SavedObjectsClientContract, - detection: DetectionResult, - dataSourceId?: string -): Promise { - const result: CreateDatasetsResult = { - traceDatasetId: null, - logDatasetId: null, - correlationId: null, - }; - - // Use datasource title from detection if available, otherwise use provided dataSourceId - const effectiveDataSourceId = detection.dataSourceId || dataSourceId; - const dataSourceSuffix = detection.dataSourceTitle ? ` - ${detection.dataSourceTitle}` : ''; - - // 1. Create trace dataset (check if it already exists first) - if (detection.tracesDetected && detection.tracePattern && detection.traceTimeField) { - const displayName = `Trace Dataset${dataSourceSuffix}`; - - // Check if an index pattern with this title already exists - try { - const existingPatterns = await savedObjectsClient.find({ - type: 'index-pattern', - searchFields: ['title'], - search: detection.tracePattern, - hasReference: effectiveDataSourceId - ? { type: 'data-source', id: effectiveDataSourceId } - : undefined, - }); - - // If a matching pattern exists, use it instead of creating a new one - if (existingPatterns.total > 0) { - result.traceDatasetId = existingPatterns.savedObjects[0].id; - } else { - // Create new trace dataset - const traceResponse = await savedObjectsClient.create( - 'index-pattern', - { - title: detection.tracePattern, - displayName, - timeFieldName: detection.traceTimeField, - signalType: 'traces', - }, - { - references: effectiveDataSourceId - ? [ - { - id: effectiveDataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ] - : [], - } - ); - result.traceDatasetId = traceResponse.id; - } - } catch (error) { - // If check fails, try to create anyway (will fail if duplicate, but that's ok) - try { - const traceResponse = await savedObjectsClient.create( - 'index-pattern', - { - title: detection.tracePattern, - displayName, - timeFieldName: detection.traceTimeField, - signalType: 'traces', - }, - { - references: effectiveDataSourceId - ? [ - { - id: effectiveDataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ] - : [], - } - ); - result.traceDatasetId = traceResponse.id; - } catch (createError) { - // eslint-disable-next-line no-console - console.warn('Failed to create trace dataset:', createError); - } - } - } - - // 2. Create log dataset with schema mappings for correlation (check if it already exists first) - if (detection.logsDetected && detection.logPattern && detection.logTimeField) { - const displayName = `Log Dataset${dataSourceSuffix}`; - - // Check if an index pattern with this title already exists - try { - const existingPatterns = await savedObjectsClient.find({ - type: 'index-pattern', - searchFields: ['title'], - search: detection.logPattern, - hasReference: effectiveDataSourceId - ? { type: 'data-source', id: effectiveDataSourceId } - : undefined, - }); - - // If a matching pattern exists, use it instead of creating a new one - if (existingPatterns.total > 0) { - result.logDatasetId = existingPatterns.savedObjects[0].id; - } else { - // Create new log dataset - const logResponse = await savedObjectsClient.create( - 'index-pattern', - { - title: detection.logPattern, - displayName, - timeFieldName: detection.logTimeField, - signalType: 'logs', - schemaMappings: JSON.stringify({ - otelLogs: { - timestamp: detection.logTimeField || 'time', - traceId: 'traceId', - spanId: 'spanId', - serviceName: 'resource.attributes.service.name', - }, - }), - }, - { - references: effectiveDataSourceId - ? [ - { - id: effectiveDataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ] - : [], - } - ); - result.logDatasetId = logResponse.id; - } - } catch (error) { - // If check fails, try to create anyway (will fail if duplicate, but that's ok) - try { - const logResponse = await savedObjectsClient.create( - 'index-pattern', - { - title: detection.logPattern, - displayName, - timeFieldName: detection.logTimeField, - signalType: 'logs', - schemaMappings: JSON.stringify({ - otelLogs: { - timestamp: detection.logTimeField || 'time', - traceId: 'traceId', - spanId: 'spanId', - serviceName: 'resource.attributes.service.name', - }, - }), - }, - { - references: effectiveDataSourceId - ? [ - { - id: effectiveDataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ] - : [], - } - ); - result.logDatasetId = logResponse.id; - } catch (createError) { - // eslint-disable-next-line no-console - console.warn('Failed to create log dataset:', createError); - } - } - } - - // 3. Create correlation if both trace and log datasets were created - if (result.traceDatasetId && result.logDatasetId) { - try { - const correlationResponse = await savedObjectsClient.create( - 'correlations', - { - title: `trace-to-logs_${detection.tracePattern}`, - correlationType: `${CORRELATION_TYPE_PREFIXES.TRACE_TO_LOGS}${detection.tracePattern}`, - version: '1.0.0', - entities: [ - { tracesDataset: { id: 'references[0].id' } }, - { logsDataset: { id: 'references[1].id' } }, - ], - }, - { - references: [ - { - name: 'entities[0].index', - type: 'index-pattern', - id: result.traceDatasetId, - }, - { - name: 'entities[1].index', - type: 'index-pattern', - id: result.logDatasetId, - }, - ], - } - ); - result.correlationId = correlationResponse.id; - } catch (error) { - // eslint-disable-next-line no-console - console.warn('Failed to create correlation:', error); - } - } - - return result; -} diff --git a/src/plugins/explore/public/components/trace_auto_detect_callout.test.tsx b/src/plugins/explore/public/components/trace_auto_detect_callout.test.tsx index 89d963a2b836..179738e23422 100644 --- a/src/plugins/explore/public/components/trace_auto_detect_callout.test.tsx +++ b/src/plugins/explore/public/components/trace_auto_detect_callout.test.tsx @@ -72,6 +72,13 @@ describe('TraceAutoDetectCallout', () => { getIds: jest.fn().mockResolvedValue([]), get: jest.fn(), } as any, + dataViews: { + createAndSave: jest.fn(), + get: jest.fn(), + refreshFields: jest.fn(), + updateSavedObject: jest.fn(), + clearCache: jest.fn(), + } as any, }; }); @@ -249,6 +256,7 @@ describe('TraceAutoDetectCallout', () => { await waitFor(() => { expect(mockCreateAutoDetectedDatasets).toHaveBeenCalledWith( mockServices.savedObjects!.client, + mockServices.dataViews, expect.objectContaining({ tracesDetected: true, logsDetected: true, diff --git a/src/plugins/explore/public/components/trace_auto_detect_callout.tsx b/src/plugins/explore/public/components/trace_auto_detect_callout.tsx index 824ad43e9273..e7c4e7c64189 100644 --- a/src/plugins/explore/public/components/trace_auto_detect_callout.tsx +++ b/src/plugins/explore/public/components/trace_auto_detect_callout.tsx @@ -128,7 +128,11 @@ export const TraceAutoDetectCallout: React.FC = () => { // Create datasets for each detected datasource for (const detection of detections) { - const result = await createAutoDetectedDatasets(services.savedObjects.client, detection); + const result = await createAutoDetectedDatasets( + services.savedObjects.client, + services.dataViews, + detection + ); if (result.traceDatasetId || result.logDatasetId) { totalCreated++; diff --git a/src/plugins/explore/public/utils/create_auto_datasets.test.ts b/src/plugins/explore/public/utils/create_auto_datasets.test.ts index b73f8f9a2fc9..f86d4c38f614 100644 --- a/src/plugins/explore/public/utils/create_auto_datasets.test.ts +++ b/src/plugins/explore/public/utils/create_auto_datasets.test.ts @@ -4,25 +4,48 @@ */ import { SavedObjectsClientContract } from 'src/core/public'; +import { DataViewsContract, DuplicateDataViewError } from '../../../data/public'; import { createAutoDetectedDatasets } from './create_auto_datasets'; import { DetectionResult } from './auto_detect_trace_data'; describe('createAutoDetectedDatasets', () => { let mockSavedObjectsClient: jest.Mocked; + let mockDataViews: jest.Mocked; + + const makeDataView = (id: string) => ({ id, title: '' } as any); beforeEach(() => { - // Create mock saved objects client mockSavedObjectsClient = { create: jest.fn(), find: jest.fn().mockResolvedValue({ total: 0, savedObjects: [] }), } as any; + + mockDataViews = { + create: jest.fn(), + createSavedObject: jest.fn().mockResolvedValue(undefined), + // createAndSave should not be invoked by the implementation; assert this below. + createAndSave: jest.fn(), + setDefault: jest.fn(), + get: jest.fn().mockImplementation((id: string) => Promise.resolve(makeDataView(id))), + refreshFields: jest.fn().mockResolvedValue(undefined), + updateSavedObject: jest.fn().mockResolvedValue(undefined), + clearCache: jest.fn(), + getFieldsForWildcard: jest.fn().mockResolvedValue([ + { name: 'endTime', type: 'date', searchable: true, aggregatable: true }, + { name: 'traceId', type: 'string', searchable: true, aggregatable: true }, + { name: 'spanId', type: 'string', searchable: true, aggregatable: true }, + ]), + fieldArrayToMap: jest.fn((fields: any[]) => + fields.reduce((acc, f) => ({ ...acc, [f.name]: f }), {}) + ), + } as any; }); afterEach(() => { jest.clearAllMocks(); }); - it('should create trace dataset when traces are detected', async () => { + it('pre-fetches fields and embeds them in the spec; uses create()/createSavedObject() (no setDefault)', async () => { const detection: DetectionResult = { tracesDetected: true, logsDetected: false, @@ -32,35 +55,77 @@ describe('createAutoDetectedDatasets', () => { logTimeField: null, }; - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'trace-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); + mockDataViews.create.mockResolvedValue(makeDataView('trace-dataset-id')); - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); + const result = await createAutoDetectedDatasets( + mockSavedObjectsClient, + mockDataViews, + detection, + 'datasource-id' + ); expect(result.traceDatasetId).toBe('trace-dataset-id'); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); - expect(mockSavedObjectsClient.create).toHaveBeenCalledTimes(1); - expect(mockSavedObjectsClient.create).toHaveBeenCalledWith( - 'index-pattern', - { + // Pre-fetch happens. + expect(mockDataViews.getFieldsForWildcard).toHaveBeenCalledWith({ + pattern: 'otel-v1-apm-span*', + dataSourceId: 'datasource-id', + }); + + // Spec passed to create() carries the fields, and skipFetchFields=true so + // DataViewsService.create() doesn't re-fetch the field list. + expect(mockDataViews.create).toHaveBeenCalledWith( + expect.objectContaining({ title: 'otel-v1-apm-span*', - displayName: 'Trace Dataset', timeFieldName: 'endTime', signalType: 'traces', - }, - { - references: [], - } + fields: expect.objectContaining({ + endTime: expect.objectContaining({ name: 'endTime' }), + traceId: expect.objectContaining({ name: 'traceId' }), + }), + }), + true ); + expect(mockDataViews.createSavedObject).toHaveBeenCalled(); + + // Auto-creation must NOT touch the user's default index pattern. createAndSave + // calls setDefault() internally; we sidestep both. + expect(mockDataViews.createAndSave).not.toHaveBeenCalled(); + expect(mockDataViews.setDefault).not.toHaveBeenCalled(); + + // Belt-and-suspenders post-save refresh. + expect(mockDataViews.get).toHaveBeenCalledWith('trace-dataset-id'); + expect(mockDataViews.refreshFields).toHaveBeenCalled(); + expect(mockDataViews.updateSavedObject).toHaveBeenCalled(); }); - it('should create log dataset when logs are detected', async () => { + it('creates the dataset even when the field pre-fetch returns nothing', async () => { + const detection: DetectionResult = { + tracesDetected: true, + logsDetected: false, + tracePattern: 'otel-v1-apm-span*', + logPattern: null, + traceTimeField: 'endTime', + logTimeField: null, + }; + + (mockDataViews.getFieldsForWildcard as jest.Mock).mockResolvedValue([]); + mockDataViews.create.mockResolvedValue(makeDataView('trace-dataset-id')); + + const result = await createAutoDetectedDatasets( + mockSavedObjectsClient, + mockDataViews, + detection + ); + + expect(result.traceDatasetId).toBe('trace-dataset-id'); + expect(mockDataViews.create).toHaveBeenCalledWith( + expect.objectContaining({ title: 'otel-v1-apm-span*', fields: undefined }), + true + ); + }); + + it('creates a log dataset with schema mappings', async () => { const detection: DetectionResult = { tracesDetected: false, logsDetected: true, @@ -70,43 +135,35 @@ describe('createAutoDetectedDatasets', () => { logTimeField: 'time', }; - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); + mockDataViews.create.mockResolvedValue(makeDataView('log-dataset-id')); - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); + const result = await createAutoDetectedDatasets( + mockSavedObjectsClient, + mockDataViews, + detection + ); - expect(result.traceDatasetId).toBeNull(); expect(result.logDatasetId).toBe('log-dataset-id'); - expect(result.correlationId).toBeNull(); - - expect(mockSavedObjectsClient.create).toHaveBeenCalledTimes(1); - expect(mockSavedObjectsClient.create).toHaveBeenCalledWith( - 'index-pattern', - { + expect(mockDataViews.create).toHaveBeenCalledWith( + expect.objectContaining({ title: 'logs-otel-v1*', displayName: 'Log Dataset', timeFieldName: 'time', signalType: 'logs', - schemaMappings: JSON.stringify({ + schemaMappings: { otelLogs: { timestamp: 'time', traceId: 'traceId', spanId: 'spanId', serviceName: 'resource.attributes.service.name', }, - }), - }, - { - references: [], - } + }, + }), + true ); }); - it('should create both datasets and correlation when both are detected', async () => { + it('creates both datasets and a correlation when both are detected', async () => { const detection: DetectionResult = { tracesDetected: true, logsDetected: true, @@ -116,103 +173,50 @@ describe('createAutoDetectedDatasets', () => { logTimeField: 'time', }; - mockSavedObjectsClient.create - .mockResolvedValueOnce({ - id: 'trace-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockResolvedValueOnce({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockResolvedValueOnce({ - id: 'correlation-id', - type: 'correlations', - attributes: {}, - references: [], - } as any); - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - expect(result.traceDatasetId).toBe('trace-dataset-id'); - expect(result.logDatasetId).toBe('log-dataset-id'); - expect(result.correlationId).toBe('correlation-id'); + mockDataViews.create + .mockResolvedValueOnce(makeDataView('trace-dataset-id')) + .mockResolvedValueOnce(makeDataView('log-dataset-id')); - expect(mockSavedObjectsClient.create).toHaveBeenCalledTimes(3); + mockSavedObjectsClient.create.mockResolvedValueOnce({ + id: 'correlation-id', + type: 'correlations', + attributes: {}, + references: [], + } as any); - // Verify trace dataset creation - expect(mockSavedObjectsClient.create).toHaveBeenNthCalledWith( - 1, - 'index-pattern', - { - title: 'otel-v1-apm-span*', - displayName: 'Trace Dataset', - timeFieldName: 'endTime', - signalType: 'traces', - }, - { - references: [], - } + const result = await createAutoDetectedDatasets( + mockSavedObjectsClient, + mockDataViews, + detection ); - // Verify log dataset creation - expect(mockSavedObjectsClient.create).toHaveBeenNthCalledWith( - 2, - 'index-pattern', - { - title: 'logs-otel-v1*', - displayName: 'Log Dataset', - timeFieldName: 'time', - signalType: 'logs', - schemaMappings: JSON.stringify({ - otelLogs: { - timestamp: 'time', - traceId: 'traceId', - spanId: 'spanId', - serviceName: 'resource.attributes.service.name', - }, - }), - }, - { - references: [], - } - ); + expect(result).toEqual({ + traceDatasetId: 'trace-dataset-id', + logDatasetId: 'log-dataset-id', + correlationId: 'correlation-id', + }); - // Verify correlation creation - expect(mockSavedObjectsClient.create).toHaveBeenNthCalledWith( - 3, + expect(mockDataViews.create).toHaveBeenCalledTimes(2); + expect(mockDataViews.createSavedObject).toHaveBeenCalledTimes(2); + expect(mockDataViews.refreshFields).toHaveBeenCalledTimes(2); + expect(mockDataViews.updateSavedObject).toHaveBeenCalledTimes(2); + + expect(mockSavedObjectsClient.create).toHaveBeenCalledWith( 'correlations', - { + expect.objectContaining({ title: 'trace-to-logs_otel-v1-apm-span*', correlationType: 'trace-to-logs-otel-v1-apm-span*', - version: '1.0.0', - entities: [ - { tracesDataset: { id: 'references[0].id' } }, - { logsDataset: { id: 'references[1].id' } }, - ], - }, - { + }), + expect.objectContaining({ references: [ - { - name: 'entities[0].index', - type: 'index-pattern', - id: 'trace-dataset-id', - }, - { - name: 'entities[1].index', - type: 'index-pattern', - id: 'log-dataset-id', - }, + { name: 'entities[0].index', type: 'index-pattern', id: 'trace-dataset-id' }, + { name: 'entities[1].index', type: 'index-pattern', id: 'log-dataset-id' }, ], - } + }) ); }); - it('should include dataSourceRef when dataSourceId is provided for trace dataset', async () => { + it('passes dataSourceRef when dataSourceId is provided', async () => { const detection: DetectionResult = { tracesDetected: true, logsDetected: false, @@ -222,159 +226,92 @@ describe('createAutoDetectedDatasets', () => { logTimeField: null, }; - const dataSourceId = 'test-datasource-id'; - - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'trace-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); - - await createAutoDetectedDatasets(mockSavedObjectsClient, detection, dataSourceId); + mockDataViews.create.mockResolvedValue(makeDataView('trace-dataset-id')); - expect(mockSavedObjectsClient.create).toHaveBeenCalledWith( - 'index-pattern', - { - title: 'otel-v1-apm-span*', - displayName: 'Trace Dataset', - timeFieldName: 'endTime', - signalType: 'traces', - }, - { - references: [ - { - id: dataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ], - } + await createAutoDetectedDatasets( + mockSavedObjectsClient, + mockDataViews, + detection, + 'test-datasource-id' ); - }); - it('should include dataSourceRef when dataSourceId is provided for log dataset', async () => { - const detection: DetectionResult = { - tracesDetected: false, - logsDetected: true, - tracePattern: null, - logPattern: 'logs-otel-v1*', - traceTimeField: null, - logTimeField: 'time', - }; - - const dataSourceId = 'test-datasource-id'; - - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); - - await createAutoDetectedDatasets(mockSavedObjectsClient, detection, dataSourceId); - - expect(mockSavedObjectsClient.create).toHaveBeenCalledWith( - 'index-pattern', - { - title: 'logs-otel-v1*', - displayName: 'Log Dataset', - timeFieldName: 'time', - signalType: 'logs', - schemaMappings: JSON.stringify({ - otelLogs: { - timestamp: 'time', - traceId: 'traceId', - spanId: 'spanId', - serviceName: 'resource.attributes.service.name', - }, - }), - }, - { - references: [ - { - id: dataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ], - } + expect(mockDataViews.create).toHaveBeenCalledWith( + expect.objectContaining({ + dataSourceRef: { id: 'test-datasource-id', type: 'data-source', name: 'dataSource' }, + }), + true ); }); - it('should not create trace dataset when tracePattern is missing', async () => { + it('reuses an existing index pattern instead of creating a duplicate, and still refreshes its fields', async () => { const detection: DetectionResult = { tracesDetected: true, logsDetected: false, - tracePattern: null, // Missing pattern + tracePattern: 'otel-v1-apm-span*', logPattern: null, traceTimeField: 'endTime', logTimeField: null, }; - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); + mockSavedObjectsClient.find.mockResolvedValueOnce({ + total: 1, + savedObjects: [ + { + id: 'existing-trace-dataset-id', + type: 'index-pattern', + attributes: { title: 'otel-v1-apm-span*' }, + references: [], + }, + ], + } as any); - expect(result.traceDatasetId).toBeNull(); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); - expect(mockSavedObjectsClient.create).not.toHaveBeenCalled(); + const existingDataView = makeDataView('existing-trace-dataset-id'); + mockDataViews.get.mockResolvedValue(existingDataView); + + const result = await createAutoDetectedDatasets( + mockSavedObjectsClient, + mockDataViews, + detection + ); + + expect(result.traceDatasetId).toBe('existing-trace-dataset-id'); + expect(mockDataViews.create).not.toHaveBeenCalled(); + expect(mockDataViews.createSavedObject).not.toHaveBeenCalled(); + + // Refresh existing pattern so previously-broken ones recover their field list. + expect(mockDataViews.get).toHaveBeenCalledWith('existing-trace-dataset-id'); + expect(mockDataViews.refreshFields).toHaveBeenCalledWith(existingDataView); + expect(mockDataViews.updateSavedObject).toHaveBeenCalledWith(existingDataView); + expect(mockDataViews.clearCache).toHaveBeenCalledWith('existing-trace-dataset-id'); }); - it('should not create trace dataset when traceTimeField is missing', async () => { + it('still returns the existing id when refreshing fields on an existing pattern fails', async () => { const detection: DetectionResult = { tracesDetected: true, logsDetected: false, tracePattern: 'otel-v1-apm-span*', logPattern: null, - traceTimeField: null, // Missing time field + traceTimeField: 'endTime', logTimeField: null, }; - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - expect(result.traceDatasetId).toBeNull(); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); - expect(mockSavedObjectsClient.create).not.toHaveBeenCalled(); - }); - - it('should not create log dataset when logPattern is missing', async () => { - const detection: DetectionResult = { - tracesDetected: false, - logsDetected: true, - tracePattern: null, - logPattern: null, // Missing pattern - traceTimeField: null, - logTimeField: 'time', - }; - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); + mockSavedObjectsClient.find.mockResolvedValueOnce({ + total: 1, + savedObjects: [{ id: 'existing-id' }], + } as any); - expect(result.traceDatasetId).toBeNull(); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); - expect(mockSavedObjectsClient.create).not.toHaveBeenCalled(); - }); + mockDataViews.get.mockRejectedValueOnce(new Error('boom')); - it('should not create log dataset when logTimeField is missing', async () => { - const detection: DetectionResult = { - tracesDetected: false, - logsDetected: true, - tracePattern: null, - logPattern: 'logs-otel-v1*', - traceTimeField: null, - logTimeField: null, // Missing time field - }; - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); + const result = await createAutoDetectedDatasets( + mockSavedObjectsClient, + mockDataViews, + detection + ); - expect(result.traceDatasetId).toBeNull(); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); - expect(mockSavedObjectsClient.create).not.toHaveBeenCalled(); + expect(result.traceDatasetId).toBe('existing-id'); }); - it('should not create correlation if only trace dataset was created', async () => { + it('falls back to find() when createSavedObject throws DuplicateDataViewError', async () => { const detection: DetectionResult = { tracesDetected: true, logsDetected: false, @@ -384,43 +321,51 @@ describe('createAutoDetectedDatasets', () => { logTimeField: null, }; - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'trace-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); + mockSavedObjectsClient.find + .mockResolvedValueOnce({ total: 0, savedObjects: [] } as any) + .mockResolvedValueOnce({ + total: 1, + savedObjects: [{ id: 'existing-after-conflict' }], + } as any); - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); + mockDataViews.create.mockResolvedValue(makeDataView('new-id')); + mockDataViews.createSavedObject.mockRejectedValueOnce(new DuplicateDataViewError('dup')); - expect(result.correlationId).toBeNull(); - expect(mockSavedObjectsClient.create).toHaveBeenCalledTimes(1); + const result = await createAutoDetectedDatasets( + mockSavedObjectsClient, + mockDataViews, + detection + ); + + expect(result.traceDatasetId).toBe('existing-after-conflict'); }); - it('should not create correlation if only log dataset was created', async () => { + it('skips dataset creation when required fields are missing', async () => { const detection: DetectionResult = { - tracesDetected: false, + tracesDetected: true, logsDetected: true, tracePattern: null, logPattern: 'logs-otel-v1*', - traceTimeField: null, - logTimeField: 'time', + traceTimeField: 'endTime', + logTimeField: null, }; - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); + const result = await createAutoDetectedDatasets( + mockSavedObjectsClient, + mockDataViews, + detection + ); - expect(result.correlationId).toBeNull(); - expect(mockSavedObjectsClient.create).toHaveBeenCalledTimes(1); + expect(result).toEqual({ + traceDatasetId: null, + logDatasetId: null, + correlationId: null, + }); + expect(mockDataViews.create).not.toHaveBeenCalled(); + expect(mockSavedObjectsClient.create).not.toHaveBeenCalled(); }); - it('should return empty result when nothing is detected', async () => { + it('returns an empty result when nothing is detected', async () => { const detection: DetectionResult = { tracesDetected: false, logsDetected: false, @@ -430,15 +375,22 @@ describe('createAutoDetectedDatasets', () => { logTimeField: null, }; - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); + const result = await createAutoDetectedDatasets( + mockSavedObjectsClient, + mockDataViews, + detection + ); - expect(result.traceDatasetId).toBeNull(); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); + expect(result).toEqual({ + traceDatasetId: null, + logDatasetId: null, + correlationId: null, + }); + expect(mockDataViews.create).not.toHaveBeenCalled(); expect(mockSavedObjectsClient.create).not.toHaveBeenCalled(); }); - it('should handle errors gracefully when trace dataset creation fails', async () => { + it('does not create a correlation if only one dataset was created', async () => { const detection: DetectionResult = { tracesDetected: true, logsDetected: false, @@ -448,138 +400,40 @@ describe('createAutoDetectedDatasets', () => { logTimeField: null, }; - const error = new Error('Failed to create trace dataset'); - mockSavedObjectsClient.create.mockRejectedValue(error); - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - // Should return null instead of throwing - expect(result.traceDatasetId).toBeNull(); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); - }); - - it('should handle errors gracefully when log dataset creation fails', async () => { - const detection: DetectionResult = { - tracesDetected: false, - logsDetected: true, - tracePattern: null, - logPattern: 'logs-otel-v1*', - traceTimeField: null, - logTimeField: 'time', - }; - - const error = new Error('Failed to create log dataset'); - mockSavedObjectsClient.create.mockRejectedValue(error); - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - - // Should return null instead of throwing - expect(result.traceDatasetId).toBeNull(); - expect(result.logDatasetId).toBeNull(); - expect(result.correlationId).toBeNull(); - }); - - it('should handle errors gracefully when correlation creation fails', async () => { - const detection: DetectionResult = { - tracesDetected: true, - logsDetected: true, - tracePattern: 'otel-v1-apm-span*', - logPattern: 'logs-otel-v1*', - traceTimeField: 'endTime', - logTimeField: 'time', - }; + mockDataViews.create.mockResolvedValue(makeDataView('trace-dataset-id')); - mockSavedObjectsClient.create - .mockResolvedValueOnce({ - id: 'trace-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockResolvedValueOnce({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockRejectedValueOnce(new Error('Failed to create correlation')); - - const result = await createAutoDetectedDatasets(mockSavedObjectsClient, detection); + const result = await createAutoDetectedDatasets( + mockSavedObjectsClient, + mockDataViews, + detection + ); - // Should return successfully with dataset IDs even if correlation fails - expect(result.traceDatasetId).toBe('trace-dataset-id'); - expect(result.logDatasetId).toBe('log-dataset-id'); expect(result.correlationId).toBeNull(); + expect(mockSavedObjectsClient.create).not.toHaveBeenCalled(); }); - it('should include dataSourceRef for both datasets when dataSourceId is provided', async () => { + it('handles dataset creation errors gracefully', async () => { const detection: DetectionResult = { tracesDetected: true, - logsDetected: true, + logsDetected: false, tracePattern: 'otel-v1-apm-span*', - logPattern: 'logs-otel-v1*', + logPattern: null, traceTimeField: 'endTime', - logTimeField: 'time', + logTimeField: null, }; - const dataSourceId = 'test-datasource-id'; + mockDataViews.create.mockRejectedValue(new Error('Failed to create trace dataset')); - mockSavedObjectsClient.create - .mockResolvedValueOnce({ - id: 'trace-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockResolvedValueOnce({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockResolvedValueOnce({ - id: 'correlation-id', - type: 'correlations', - attributes: {}, - references: [], - } as any); - - await createAutoDetectedDatasets(mockSavedObjectsClient, detection, dataSourceId); - - // Verify both datasets have dataSourceRef in references - expect(mockSavedObjectsClient.create).toHaveBeenNthCalledWith( - 1, - 'index-pattern', - expect.anything(), - expect.objectContaining({ - references: [ - { - id: dataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ], - }) + const result = await createAutoDetectedDatasets( + mockSavedObjectsClient, + mockDataViews, + detection ); - expect(mockSavedObjectsClient.create).toHaveBeenNthCalledWith( - 2, - 'index-pattern', - expect.anything(), - expect.objectContaining({ - references: [ - { - id: dataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ], - }) - ); + expect(result.traceDatasetId).toBeNull(); }); - it('should create datasets with correct signal types', async () => { + it('handles correlation creation errors gracefully', async () => { const detection: DetectionResult = { tracesDetected: true, logsDetected: true, @@ -589,87 +443,24 @@ describe('createAutoDetectedDatasets', () => { logTimeField: 'time', }; - mockSavedObjectsClient.create - .mockResolvedValueOnce({ - id: 'trace-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockResolvedValueOnce({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any) - .mockResolvedValueOnce({ - id: 'correlation-id', - type: 'correlations', - attributes: {}, - references: [], - } as any); - - await createAutoDetectedDatasets(mockSavedObjectsClient, detection); + mockDataViews.create + .mockResolvedValueOnce(makeDataView('trace-dataset-id')) + .mockResolvedValueOnce(makeDataView('log-dataset-id')); - // Verify trace dataset has signalType='traces' - expect(mockSavedObjectsClient.create).toHaveBeenNthCalledWith( - 1, - 'index-pattern', - expect.objectContaining({ - signalType: 'traces', - }), - expect.anything() - ); + mockSavedObjectsClient.create.mockRejectedValueOnce(new Error('Failed to create correlation')); - // Verify log dataset has signalType='logs' - expect(mockSavedObjectsClient.create).toHaveBeenNthCalledWith( - 2, - 'index-pattern', - expect.objectContaining({ - signalType: 'logs', - }), - expect.anything() + const result = await createAutoDetectedDatasets( + mockSavedObjectsClient, + mockDataViews, + detection ); - }); - - it('should create log dataset with correct schema mappings', async () => { - const detection: DetectionResult = { - tracesDetected: false, - logsDetected: true, - tracePattern: null, - logPattern: 'logs-otel-v1*', - traceTimeField: null, - logTimeField: 'time', - }; - - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); - - await createAutoDetectedDatasets(mockSavedObjectsClient, detection); - const expectedSchemaMappings = { - otelLogs: { - timestamp: 'time', - traceId: 'traceId', - spanId: 'spanId', - serviceName: 'resource.attributes.service.name', - }, - }; - - expect(mockSavedObjectsClient.create).toHaveBeenCalledWith( - 'index-pattern', - expect.objectContaining({ - schemaMappings: JSON.stringify(expectedSchemaMappings), - }), - expect.anything() - ); + expect(result.traceDatasetId).toBe('trace-dataset-id'); + expect(result.logDatasetId).toBe('log-dataset-id'); + expect(result.correlationId).toBeNull(); }); - it('should use detected logTimeField in schema mappings when different from default', async () => { + it('uses the detected logTimeField in schema mappings', async () => { const detection: DetectionResult = { tracesDetected: false, logsDetected: true, @@ -679,31 +470,18 @@ describe('createAutoDetectedDatasets', () => { logTimeField: 'timestamp', }; - mockSavedObjectsClient.create.mockResolvedValue({ - id: 'log-dataset-id', - type: 'index-pattern', - attributes: {}, - references: [], - } as any); + mockDataViews.create.mockResolvedValue(makeDataView('log-dataset-id')); - await createAutoDetectedDatasets(mockSavedObjectsClient, detection); + await createAutoDetectedDatasets(mockSavedObjectsClient, mockDataViews, detection); - const expectedSchemaMappings = { - otelLogs: { - timestamp: 'timestamp', - traceId: 'traceId', - spanId: 'spanId', - serviceName: 'resource.attributes.service.name', - }, - }; - - expect(mockSavedObjectsClient.create).toHaveBeenCalledWith( - 'index-pattern', + expect(mockDataViews.create).toHaveBeenCalledWith( expect.objectContaining({ timeFieldName: 'timestamp', - schemaMappings: JSON.stringify(expectedSchemaMappings), + schemaMappings: expect.objectContaining({ + otelLogs: expect.objectContaining({ timestamp: 'timestamp' }), + }), }), - expect.anything() + true ); }); }); diff --git a/src/plugins/explore/public/utils/create_auto_datasets.ts b/src/plugins/explore/public/utils/create_auto_datasets.ts index d71cbc9b8f3b..17d7aa38354b 100644 --- a/src/plugins/explore/public/utils/create_auto_datasets.ts +++ b/src/plugins/explore/public/utils/create_auto_datasets.ts @@ -5,6 +5,7 @@ import { SavedObjectsClientContract } from 'src/core/public'; import { CORRELATION_TYPE_PREFIXES } from '../../../data/common'; +import { DataViewsContract, DuplicateDataViewError } from '../../../data/public'; import { DetectionResult } from './auto_detect_trace_data'; export interface CreateDatasetsResult { @@ -13,11 +14,104 @@ export interface CreateDatasetsResult { correlationId: string | null; } +// Pre-fetch the field list ourselves before saving the index pattern. +async function fetchFieldsForPattern( + dataViews: DataViewsContract, + pattern: string, + dataSourceId?: string +) { + try { + const fields = await dataViews.getFieldsForWildcard({ pattern, dataSourceId }); + if (!Array.isArray(fields) || fields.length === 0) { + // eslint-disable-next-line no-console + console.warn(`No fields returned for pattern "${pattern}" (dataSource: ${dataSourceId})`); + return undefined; + } + return dataViews.fieldArrayToMap(fields); + } catch (error) { + // eslint-disable-next-line no-console + console.warn(`Failed to fetch fields for pattern "${pattern}":`, error); + return undefined; + } +} + +// Force-refresh an existing index pattern's field list and persist it. Recovers index +// patterns left empty by the prior buggy version of this code. +async function refreshAndPersistFields(dataViews: DataViewsContract, id: string): Promise { + try { + dataViews.clearCache(id); + const view = await dataViews.get(id); + await dataViews.refreshFields(view); + await dataViews.updateSavedObject(view); + dataViews.clearCache(id); + } catch { + // best-effort + } +} + +async function createOrReuseDataView( + savedObjectsClient: SavedObjectsClientContract, + dataViews: DataViewsContract, + spec: Parameters[0], + effectiveDataSourceId?: string +): Promise { + const existing = await savedObjectsClient.find({ + type: 'index-pattern', + searchFields: ['title'], + search: spec.title as string, + hasReference: effectiveDataSourceId + ? { type: 'data-source', id: effectiveDataSourceId } + : undefined, + }); + + if (existing.total > 0) { + const existingId = existing.savedObjects[0].id; + await refreshAndPersistFields(dataViews, existingId); + return existingId; + } + + // Pre-fetch fields and embed them in the spec so the saved object lands with a + // populated field list on disk regardless of whether refreshFields silently fails. + const fields = await fetchFieldsForPattern( + dataViews, + spec.title as string, + effectiveDataSourceId + ); + + let createdId: string | null = null; + try { + // Skip createAndSave so it doesn't silently flip the workspace's default index pattern. + const dataView = await dataViews.create({ ...spec, fields }, /* skipFetchFields */ true); + await dataViews.createSavedObject(dataView); + createdId = dataView.id ?? null; + } catch (error) { + if (error instanceof DuplicateDataViewError) { + const dupe = await savedObjectsClient.find({ + type: 'index-pattern', + searchFields: ['title'], + search: spec.title as string, + hasReference: effectiveDataSourceId + ? { type: 'data-source', id: effectiveDataSourceId } + : undefined, + }); + createdId = dupe.savedObjects[0]?.id ?? null; + } else { + throw error; + } + } + + if (createdId) { + await refreshAndPersistFields(dataViews, createdId); + } + return createdId; +} + /** * Create auto-detected trace and log datasets with correlation */ export async function createAutoDetectedDatasets( savedObjectsClient: SavedObjectsClientContract, + dataViews: DataViewsContract, detection: DetectionResult, dataSourceId?: string ): Promise { @@ -27,173 +121,65 @@ export async function createAutoDetectedDatasets( correlationId: null, }; - // Use datasource title from detection if available, otherwise use provided dataSourceId const effectiveDataSourceId = detection.dataSourceId || dataSourceId; const dataSourceSuffix = detection.dataSourceTitle ? ` - ${detection.dataSourceTitle}` : ''; + const dataSourceRef = effectiveDataSourceId + ? { id: effectiveDataSourceId, type: 'data-source', name: 'dataSource' } + : undefined; - // 1. Create trace dataset (check if it already exists first) if (detection.tracesDetected && detection.tracePattern && detection.traceTimeField) { - const displayName = `Trace Dataset${dataSourceSuffix}`; - - // Check if an index pattern with this title already exists try { - const existingPatterns = await savedObjectsClient.find({ - type: 'index-pattern', - searchFields: ['title'], - search: detection.tracePattern, - hasReference: effectiveDataSourceId - ? { type: 'data-source', id: effectiveDataSourceId } - : undefined, - }); - - // If a matching pattern exists, use it instead of creating a new one - if (existingPatterns.total > 0) { - result.traceDatasetId = existingPatterns.savedObjects[0].id; - } else { - // Create new trace dataset - const traceResponse = await savedObjectsClient.create( - 'index-pattern', - { - title: detection.tracePattern, - displayName, - timeFieldName: detection.traceTimeField, - signalType: 'traces', - }, - { - references: effectiveDataSourceId - ? [ - { - id: effectiveDataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ] - : [], - } - ); - result.traceDatasetId = traceResponse.id; - } - } catch (error) { - // If check fails, try to create anyway (will fail if duplicate, but that's ok) - try { - const traceResponse = await savedObjectsClient.create( - 'index-pattern', - { - title: detection.tracePattern, - displayName, - timeFieldName: detection.traceTimeField, - signalType: 'traces', - }, - { - references: effectiveDataSourceId - ? [ - { - id: effectiveDataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ] - : [], - } - ); - result.traceDatasetId = traceResponse.id; - } catch (createError) { - // eslint-disable-next-line no-console - console.warn('Failed to create trace dataset:', createError); - } + result.traceDatasetId = await createOrReuseDataView( + savedObjectsClient, + dataViews, + { + title: detection.tracePattern, + displayName: `Trace Dataset${dataSourceSuffix}`, + timeFieldName: detection.traceTimeField, + signalType: 'traces', + // @ts-expect-error TS2322 IndexPatternSpec types dataSourceRef as SavedObjectReference + // which incorrectly requires `version`; runtime only uses id/type/name. + dataSourceRef, + }, + effectiveDataSourceId + ); + } catch (createError) { + // eslint-disable-next-line no-console + console.warn('Failed to create trace dataset:', createError); } } - // 2. Create log dataset with schema mappings for correlation (check if it already exists first) if (detection.logsDetected && detection.logPattern && detection.logTimeField) { - const displayName = `Log Dataset${dataSourceSuffix}`; + const schemaMappings = { + otelLogs: { + timestamp: detection.logTimeField || 'time', + traceId: 'traceId', + spanId: 'spanId', + serviceName: 'resource.attributes.service.name', + }, + }; - // Check if an index pattern with this title already exists try { - const existingPatterns = await savedObjectsClient.find({ - type: 'index-pattern', - searchFields: ['title'], - search: detection.logPattern, - hasReference: effectiveDataSourceId - ? { type: 'data-source', id: effectiveDataSourceId } - : undefined, - }); - - // If a matching pattern exists, use it instead of creating a new one - if (existingPatterns.total > 0) { - result.logDatasetId = existingPatterns.savedObjects[0].id; - } else { - // Create new log dataset - const logResponse = await savedObjectsClient.create( - 'index-pattern', - { - title: detection.logPattern, - displayName, - timeFieldName: detection.logTimeField, - signalType: 'logs', - schemaMappings: JSON.stringify({ - otelLogs: { - timestamp: detection.logTimeField || 'time', - traceId: 'traceId', - spanId: 'spanId', - serviceName: 'resource.attributes.service.name', - }, - }), - }, - { - references: effectiveDataSourceId - ? [ - { - id: effectiveDataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ] - : [], - } - ); - result.logDatasetId = logResponse.id; - } - } catch (error) { - // If check fails, try to create anyway (will fail if duplicate, but that's ok) - try { - const logResponse = await savedObjectsClient.create( - 'index-pattern', - { - title: detection.logPattern, - displayName, - timeFieldName: detection.logTimeField, - signalType: 'logs', - schemaMappings: JSON.stringify({ - otelLogs: { - timestamp: detection.logTimeField || 'time', - traceId: 'traceId', - spanId: 'spanId', - serviceName: 'resource.attributes.service.name', - }, - }), - }, - { - references: effectiveDataSourceId - ? [ - { - id: effectiveDataSourceId, - type: 'data-source', - name: 'dataSource', - }, - ] - : [], - } - ); - result.logDatasetId = logResponse.id; - } catch (createError) { - // eslint-disable-next-line no-console - console.warn('Failed to create log dataset:', createError); - } + result.logDatasetId = await createOrReuseDataView( + savedObjectsClient, + dataViews, + { + title: detection.logPattern, + displayName: `Log Dataset${dataSourceSuffix}`, + timeFieldName: detection.logTimeField, + signalType: 'logs', + schemaMappings, + // @ts-expect-error TS2322 see note above on trace dataset. + dataSourceRef, + }, + effectiveDataSourceId + ); + } catch (createError) { + // eslint-disable-next-line no-console + console.warn('Failed to create log dataset:', createError); } } - // 3. Create correlation if both trace and log datasets were created if (result.traceDatasetId && result.logDatasetId) { try { const correlationResponse = await savedObjectsClient.create( diff --git a/src/plugins/workspace/public/components/workspace_creator/workspace_creator.tsx b/src/plugins/workspace/public/components/workspace_creator/workspace_creator.tsx index 5336ccee9fac..e7c4eab9d5d2 100644 --- a/src/plugins/workspace/public/components/workspace_creator/workspace_creator.tsx +++ b/src/plugins/workspace/public/components/workspace_creator/workspace_creator.tsx @@ -193,6 +193,7 @@ export const WorkspaceCreator = (props: WorkspaceCreatorProps) => { await createAutoDetectedDatasets( savedObjects.client, + dataPlugin.dataViews, detection, dataSourceId ); From b17fa0ecb1789dd91ae448b6c4378b8f7d7e92c7 Mon Sep 17 00:00:00 2001 From: Adam Tackett <105462877+TackAdam@users.noreply.github.com> Date: Mon, 22 Jun 2026 10:49:40 -0700 Subject: [PATCH 14/88] [Bug] Side-nav applications (#12260) * fix side nav Signed-off-by: Adam Tackett * address comment Signed-off-by: Adam Tackett --------- Signed-off-by: Adam Tackett Co-authored-by: Adam Tackett --- .../workspace_creator/workspace_creator.tsx | 11 +- src/plugins/workspace/public/utils.test.ts | 105 +++++++++++++++++- src/plugins/workspace/public/utils.ts | 61 +++++++++- 3 files changed, 172 insertions(+), 5 deletions(-) diff --git a/src/plugins/workspace/public/components/workspace_creator/workspace_creator.tsx b/src/plugins/workspace/public/components/workspace_creator/workspace_creator.tsx index e7c4eab9d5d2..fa32aa17cdf4 100644 --- a/src/plugins/workspace/public/components/workspace_creator/workspace_creator.tsx +++ b/src/plugins/workspace/public/components/workspace_creator/workspace_creator.tsx @@ -28,7 +28,11 @@ import { WorkspaceClient } from '../../workspace_client'; import { DataSourceManagementPluginSetup } from '../../../../../plugins/data_source_management/public'; import { DataPublicPluginStart } from '../../../../data/public'; import { WorkspaceUseCase } from '../../types'; -import { getFirstUseCaseOfFeatureConfigs } from '../../utils'; +import { + getApplicationsSnapshot, + getFirstUseCaseOfFeatureConfigs, + pickUseCaseLandingAppId, +} from '../../utils'; import { useFormAvailableUseCases } from '../workspace_form/use_form_available_use_cases'; import { NavigationPublicPluginStart } from '../../../../../plugins/navigation/public'; import { DataSourceConnectionType } from '../../../common/types'; @@ -144,8 +148,9 @@ export const WorkspaceCreator = (props: WorkspaceCreatorProps) => { if (application && http) { const newWorkspaceId = result.result.id; const useCaseId = getFirstUseCaseOfFeatureConfigs(attributes.features); - const useCaseLandingAppId = availableUseCases?.find(({ id }) => useCaseId === id) - ?.features[0].id; + const matchedUseCase = availableUseCases?.find(({ id }) => useCaseId === id); + const apps = getApplicationsSnapshot(application); + const useCaseLandingAppId = pickUseCaseLandingAppId(matchedUseCase?.features, apps); // For observability workspaces, run trace detection and create datasets if found const isObservabilityWorkspace = useCaseId === 'observability'; diff --git a/src/plugins/workspace/public/utils.test.ts b/src/plugins/workspace/public/utils.test.ts index 41e8b4a25455..f557eea957ea 100644 --- a/src/plugins/workspace/public/utils.test.ts +++ b/src/plugins/workspace/public/utils.test.ts @@ -3,7 +3,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { AppNavLinkStatus, NavGroupType, PublicAppInfo } from '../../../core/public'; +import { BehaviorSubject } from 'rxjs'; +import { AppNavLinkStatus, AppStatus, NavGroupType, PublicAppInfo } from '../../../core/public'; import { featureMatchesConfig, filterWorkspaceConfigurableApps, @@ -12,6 +13,7 @@ import { getDataSourcesList, convertNavGroupToWorkspaceUseCase, isEqualWorkspaceUseCase, + pickUseCaseLandingAppId, prependWorkspaceToBreadcrumbs, mergeDataSourcesWithConnections, fetchDataSourceConnections, @@ -967,6 +969,81 @@ describe('workspace utils: mergeDataSourcesWithConnections', () => { }); }); +describe('workspace utils: pickUseCaseLandingAppId', () => { + const accessibleVisible = ({ + status: AppStatus.accessible, + navLinkStatus: AppNavLinkStatus.default, + } as Partial) as PublicAppInfo; + const featureFlagDisabled = ({ + status: AppStatus.accessible, + navLinkStatus: AppNavLinkStatus.hidden, + } as Partial) as PublicAppInfo; + const outsideWorkspaceHidden = ({ + // Mirrors the state read on the workspace creator page for an + // `insideWorkspace`-only app: workspace plugin pushed `inaccessible`, + // some other path pushed `navLinkStatus: hidden` — both flip back + // once the user enters the workspace, so the picker must keep them. + status: AppStatus.inaccessible, + navLinkStatus: AppNavLinkStatus.hidden, + } as Partial) as PublicAppInfo; + + it('returns undefined when the use case has no features', () => { + expect(pickUseCaseLandingAppId(undefined, new Map())).toBeUndefined(); + expect(pickUseCaseLandingAppId([], new Map())).toBeUndefined(); + }); + + it('falls back to features[0] when no apps snapshot is provided', () => { + expect(pickUseCaseLandingAppId([{ id: 'first' }, { id: 'second' }], undefined)).toBe('first'); + }); + + it('skips feature-flag-disabled apps (hidden + accessible)', () => { + const apps = new Map([ + ['alerting', featureFlagDisabled], + ['dashboards', accessibleVisible], + ]); + expect(pickUseCaseLandingAppId([{ id: 'alerting' }, { id: 'dashboards' }], apps)).toBe( + 'dashboards' + ); + }); + + it('keeps apps that are transiently hidden outside a workspace (hidden + inaccessible)', () => { + // Repro of the bug we shipped this for: workspace creator runs outside + // any workspace, so `insideWorkspace` apps look hidden — but we must + // still pick the first one as the landing target, because it'll be + // accessible immediately after the redirect. + const apps = new Map([ + ['dashboards', outsideWorkspaceHidden], + ['explore/logs', outsideWorkspaceHidden], + ]); + expect(pickUseCaseLandingAppId([{ id: 'dashboards' }, { id: 'explore/logs' }], apps)).toBe( + 'dashboards' + ); + }); + + it('falls back to features[0] when every feature is feature-flag-disabled', () => { + const apps = new Map([ + ['a', featureFlagDisabled], + ['b', featureFlagDisabled], + ]); + expect(pickUseCaseLandingAppId([{ id: 'a' }, { id: 'b' }], apps)).toBe('a'); + }); + + it('treats a feature id absent from the apps map as selectable', () => { + // Load-bearing for the transient-load case: feature ids come from + // `convertNavGroupToWorkspaceUseCase` over real nav links, so an + // absent lookup means the apps snapshot hasn't propagated yet, not + // that the app is missing. Skipping such features would silently + // skip the entire list during early page load. + const apps = new Map([['known-feature-flag-off', featureFlagDisabled]]); + expect( + pickUseCaseLandingAppId( + [{ id: 'known-feature-flag-off' }, { id: 'not-yet-in-apps-map' }], + apps + ) + ).toBe('not-yet-in-apps-map'); + }); +}); + describe('workspace utils: getUseCaseUrl', () => { it('should get use case url', () => { startMock.application.getUrlForApp.mockImplementation((id) => `http://localhost/${id}`); @@ -979,6 +1056,32 @@ describe('workspace utils: getUseCaseUrl', () => { const url = getUseCaseUrl(undefined, 'foo', startMock.application, startMock.http); expect(url).toEqual('http://localhost/w/foo/workspace_detail'); }); + + it('should skip feature-flag-disabled features when picking the landing app', () => { + startMock.application.getUrlForApp.mockImplementation((id) => `http://localhost/${id}`); + (startMock.application.applications$ as BehaviorSubject>).next( + new Map([ + // `bar` is the first feature of `useCaseMock`. Flag it off so the + // picker has to fall through to the next feature. + [ + 'bar', + ({ + status: AppStatus.accessible, + navLinkStatus: AppNavLinkStatus.hidden, + } as Partial) as PublicAppInfo, + ], + [ + 'baz', + ({ + status: AppStatus.accessible, + navLinkStatus: AppNavLinkStatus.default, + } as Partial) as PublicAppInfo, + ], + ]) + ); + const url = getUseCaseUrl(useCaseMock, 'foo', startMock.application, startMock.http); + expect(url).toEqual('http://localhost/w/foo/baz'); + }); }); describe('workspace utils: fetchDataSourceConnections', () => { diff --git a/src/plugins/workspace/public/utils.ts b/src/plugins/workspace/public/utils.ts index a42dcd33dd12..ae73db1df73a 100644 --- a/src/plugins/workspace/public/utils.ts +++ b/src/plugins/workspace/public/utils.ts @@ -11,6 +11,7 @@ import { AppCategory, ApplicationStart, AppNavLinkStatus, + AppStatus, ChromeBreadcrumb, CoreStart, DEFAULT_APP_CATEGORIES, @@ -526,13 +527,71 @@ export function prependWorkspaceToBreadcrumbs( } } +/** + * Read the current value of `application.applications$` synchronously. + * + * Load-bearing assumption: `applications$` is wrapped in `shareReplay(1)` + * upstream (see `application_service.tsx`), so subscribing then immediately + * unsubscribing emits the latest cached value without leaking the + * subscription. If a future refactor drops `shareReplay`, this returns + * `undefined` instead of throwing — callers that branch on snapshot + * presence (e.g. `pickUseCaseLandingAppId`) will silently regress to + * pre-fix behavior. Keep this helper as the single source of truth so the + * regression has one place to surface rather than many. + */ +export const getApplicationsSnapshot = ( + application: ApplicationStart +): ReadonlyMap | undefined => { + let apps: ReadonlyMap | undefined; + const sub = application.applications$.subscribe((value) => { + apps = value; + }); + sub.unsubscribe(); + return apps; +}; + +/** + * Pick the landing app for a use case. Skips features that are + * **feature-flag-disabled** — i.e. `navLinkStatus === hidden` *and* + * `status === accessible`. An app gated by a feature flag is still + * accessible in principle, the plugin just hides the nav link to suppress + * the UI; an app that's transiently inaccessible (e.g. an + * `insideWorkspace`-only app read from outside any workspace, which the + * workspace plugin marks `inaccessible` and which therefore renders as + * `hidden` too) will become available once the user enters the workspace + * and must not be filtered out here. + * + * Reading both fields lets us distinguish "hidden by config" (skip) from + * "hidden because of where we are" (keep — it'll come back). A feature id + * with no entry in `apps` is treated as selectable: feature ids come from + * `convertNavGroupToWorkspaceUseCase` over real registered nav links, so + * an absent lookup means the applications snapshot hasn't propagated yet, + * not that the app doesn't exist. + */ +export const pickUseCaseLandingAppId = ( + features: WorkspaceUseCaseFeature[] | undefined, + apps: ReadonlyMap | undefined +): string | undefined => { + if (!features?.length) { + return undefined; + } + if (!apps) { + return features[0].id; + } + const isFeatureFlagDisabled = (app: PublicAppInfo | undefined) => + app?.navLinkStatus === AppNavLinkStatus.hidden && app?.status === AppStatus.accessible; + const firstSelectable = features.find((feature) => !isFeatureFlagDisabled(apps.get(feature.id))); + return (firstSelectable ?? features[0]).id; +}; + export const getUseCaseUrl = ( useCase: WorkspaceUseCase | undefined, workspaceId: string, application: ApplicationStart, http: HttpSetup ): string => { - const appId = useCase?.features?.[0]?.id || WORKSPACE_DETAIL_APP_ID; + const apps = getApplicationsSnapshot(application); + const appId = pickUseCaseLandingAppId(useCase?.features, apps) || WORKSPACE_DETAIL_APP_ID; const useCaseURL = formatUrlWithWorkspaceId( application.getUrlForApp(appId, { absolute: false, From 2412220788666483a8960367c3e46044bd6bfbe7 Mon Sep 17 00:00:00 2001 From: Divya Madala <113469545+Divyaasm@users.noreply.github.com> Date: Tue, 23 Jun 2026 13:02:52 -0700 Subject: [PATCH 15/88] Update opensearch-build workflow references from commit SHA to main (#12219) Signed-off-by: Divya Madala --- .github/workflows/pr_review.yml | 4 ++-- .github/workflows/release_cypress_workflow.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr_review.yml b/.github/workflows/pr_review.yml index 72715d30edd5..fcc25f5a81c3 100644 --- a/.github/workflows/pr_review.yml +++ b/.github/workflows/pr_review.yml @@ -6,7 +6,7 @@ on: jobs: Code-Diff-Analyzer: - uses: opensearch-project/opensearch-build/.github/workflows/code-diff-analyzer.yml@c2498b758c08fb7bc48476509a5fc1b8dd5f7493 # main + uses: opensearch-project/opensearch-build/.github/workflows/code-diff-analyzer.yml@main if: github.repository == 'opensearch-project/OpenSearch-Dashboards' permissions: id-token: write # github oidc to assume aws roles @@ -18,7 +18,7 @@ jobs: update_pr_comment_with_analyzer_report: true Code-Diff-Reviewer: - uses: opensearch-project/opensearch-build/.github/workflows/code-diff-reviewer.yml@c2498b758c08fb7bc48476509a5fc1b8dd5f7493 # main + uses: opensearch-project/opensearch-build/.github/workflows/code-diff-reviewer.yml@main needs: Code-Diff-Analyzer if: github.repository == 'opensearch-project/OpenSearch-Dashboards' permissions: diff --git a/.github/workflows/release_cypress_workflow.yml b/.github/workflows/release_cypress_workflow.yml index 21c13d8364b9..6ccb88650aa8 100644 --- a/.github/workflows/release_cypress_workflow.yml +++ b/.github/workflows/release_cypress_workflow.yml @@ -51,7 +51,7 @@ env: jobs: Get-CI-Image-Tag: - uses: opensearch-project/opensearch-build/.github/workflows/get-ci-image-tag.yml@c2498b758c08fb7bc48476509a5fc1b8dd5f7493 # main + uses: opensearch-project/opensearch-build/.github/workflows/get-ci-image-tag.yml@main with: product: opensearch-dashboards From b88f5f7fd13badf02b4275355ef3c8afece22548 Mon Sep 17 00:00:00 2001 From: Tomasz Kania Date: Wed, 24 Jun 2026 08:38:20 +0200 Subject: [PATCH 16/88] chore(deps): update dependencies to address CVEs (#12266) * chore(deps): hono 4.12.25 Signed-off-by: Tomasz Kania * chore(deps): markdown-it 14.2.0 Signed-off-by: Tomasz Kania * chore(deps): js-yaml 4.2.0 Signed-off-by: Tomasz Kania * chore(deps): ws 8.21.0, 7.5.11 Signed-off-by: Tomasz Kania * chore(deps): form-data 4.0.6 Signed-off-by: Tomasz Kania * chore(deps): tar 7.5.16 Signed-off-by: Tomasz Kania --------- Signed-off-by: Tomasz Kania --- package.json | 12 +-- packages/osd-agents/package.json | 6 +- packages/osd-apm-config-loader/package.json | 2 +- packages/osd-config/package.json | 2 +- packages/osd-optimizer/package.json | 2 +- yarn.lock | 86 ++++++++++----------- 6 files changed, 55 insertions(+), 55 deletions(-) diff --git a/package.json b/package.json index 8b1d6ee50985..b38f80ee21c0 100644 --- a/package.json +++ b/package.json @@ -140,7 +140,7 @@ "**/elasticsearch/agentkeepalive": "^4.5.0", "**/es5-ext": "^0.10.63", "**/fetch-mock/path-to-regexp": "^3.3.0", - "**/form-data": "^4.0.4", + "**/form-data": "^4.0.6", "**/glob-parent": "^6.0.0", "**/jest-config": "npm:@amoo-miki/jest-config@27.5.1", "**/jest-jasmine2": "npm:@amoo-miki/jest-jasmine2@27.5.1", @@ -158,7 +158,7 @@ "**/json5": "^2.2.3", "**/mime": "^3.0.0", "**/prismjs": "^1.30.0", - "**/js-yaml": "^4.1.1", + "**/js-yaml": "^4.2.0", "**/qs": "^6.15.2", "**/lodash-es": "^4.18.0", "**/lodash": "^4.18.0", @@ -264,7 +264,7 @@ "http-proxy-agent": "^2.1.0", "https-proxy-agent": "^5.0.0", "joi": "^18.2.1", - "js-yaml": "^4.1.1", + "js-yaml": "^4.2.0", "json-stable-stringify": "^1.0.1", "json-stringify-safe": "5.0.1", "json5": "^2.2.3", @@ -298,7 +298,7 @@ "set-value": "^4.1.0", "source-map-support": "^0.5.19", "symbol-observable": "^1.2.0", - "tar": "^7.5.10", + "tar": "^7.5.16", "tinygradient": "^1.1.5", "tslib": "^2.0.0", "type-detect": "^4.0.8", @@ -384,7 +384,7 @@ "@types/hjson": "^2.4.2", "@types/jest": "^28.1.8", "@types/jquery": "^3.3.31", - "@types/js-yaml": "^4.0.5", + "@types/js-yaml": "^4.0.9", "@types/json-stable-stringify": "^1.0.32", "@types/json5": "^0.0.30", "@types/license-checker": "^25.0.6", @@ -495,7 +495,7 @@ "listr": "^0.14.1", "load-json-file": "^6.2.0", "luxon": "^3.2.1", - "markdown-it": "^14.1.1", + "markdown-it": "^14.2.0", "mocha": "^10.1.0", "mock-fs": "^4.12.0", "monaco-editor": "^0.52.0", diff --git a/packages/osd-agents/package.json b/packages/osd-agents/package.json index c31c5108f1d1..138a92b73455 100644 --- a/packages/osd-agents/package.json +++ b/packages/osd-agents/package.json @@ -23,17 +23,17 @@ "@opensearch-project/opensearch": "^2.13.0", "@types/cors": "^2.8.19", "@types/express": "^5.0.3", - "@types/js-yaml": "^4.0.5", + "@types/js-yaml": "^4.0.9", "@types/uuid": "^3.4.4", "cors": "^2.8.5", "date-fns": "^4.1.0", "dotenv": "^17.2.1", "express": "^5.1.0", - "js-yaml": "^4.1.1", + "js-yaml": "^4.2.0", "node-fetch": "^2.6.7", "ts-node": "^10.9.2", "uuid": "3.3.2", - "ws": "^8.20.1", + "ws": "^8.21.0", "zod": "^3.22.0" }, "devDependencies": { diff --git a/packages/osd-apm-config-loader/package.json b/packages/osd-apm-config-loader/package.json index f61342d70bf6..59a1cc6b64fe 100644 --- a/packages/osd-apm-config-loader/package.json +++ b/packages/osd-apm-config-loader/package.json @@ -13,7 +13,7 @@ "dependencies": { "@elastic/safer-lodash-set": "0.0.0", "@osd/utils": "1.0.0", - "js-yaml": "^4.1.1", + "js-yaml": "^4.2.0", "lodash": "^4.18.0" }, "devDependencies": { diff --git a/packages/osd-config/package.json b/packages/osd-config/package.json index 2b94b9efa1f0..89dc3d67a173 100644 --- a/packages/osd-config/package.json +++ b/packages/osd-config/package.json @@ -14,7 +14,7 @@ "@osd/config-schema": "1.0.0", "@osd/logging": "1.0.0", "@osd/std": "1.0.0", - "js-yaml": "^4.1.1", + "js-yaml": "^4.2.0", "load-json-file": "^6.2.0", "lodash": "^4.18.0", "moment": "^2.24.0", diff --git a/packages/osd-optimizer/package.json b/packages/osd-optimizer/package.json index 0135951c3262..cd51a53200ed 100644 --- a/packages/osd-optimizer/package.json +++ b/packages/osd-optimizer/package.json @@ -26,7 +26,7 @@ "del": "^6.1.1", "execa": "^4.0.2", "jest-diff": "^27.5.1", - "js-yaml": "^4.1.1", + "js-yaml": "^4.2.0", "json-stable-stringify": "^1.0.1", "lmdb": "^2.8.0", "normalize-path": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index 331a602c8959..74b68bf5335c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5871,10 +5871,10 @@ resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-3.0.6.tgz#a04ca19e877687bd449f5ad37d33b104b71fdf95" integrity sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ== -"@types/js-yaml@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" - integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== +"@types/js-yaml@^4.0.9": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.9.tgz#cd82382c4f902fed9691a2ed79ec68c5898af4c2" + integrity sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg== "@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" @@ -11857,16 +11857,16 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== -form-data@^3.0.0, form-data@^4.0.0, form-data@^4.0.4, form-data@^4.0.5, form-data@~4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" - integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== +form-data@^3.0.0, form-data@^4.0.0, form-data@^4.0.4, form-data@^4.0.5, form-data@^4.0.6, form-data@~4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.6.tgz#28e864e1b786dbebb68db1f452f9635278665827" + integrity sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" es-set-tostringtag "^2.1.0" - hasown "^2.0.2" - mime-types "^2.1.12" + hasown "^2.0.4" + mime-types "^2.1.35" formidable@^2.1.2: version "2.1.5" @@ -12532,10 +12532,10 @@ hasha@^5.0.0: is-stream "^2.0.0" type-fest "^0.8.0" -hasown@^2.0.0, hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== +hasown@^2.0.0, hasown@^2.0.2, hasown@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.4.tgz#8c62d8cb90beb2aad5d0a5b67581ad9854c3f003" + integrity sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A== dependencies: function-bind "^1.1.2" @@ -12648,9 +12648,9 @@ hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react- react-is "^16.7.0" hono@^4.11.4: - version "4.12.23" - resolved "https://registry.yarnpkg.com/hono/-/hono-4.12.23.tgz#998b91651686149f0e6edbb8564d604da04f3cf8" - integrity sha512-eIaZ9qDgu7XV0pxOCrg7/WhnQ6Ivm22UcxhXx/A3dcbqbbYgBEkc6e/J/s7j2tS96zoB0S9VBdLwQNCWwUo4LA== + version "4.12.25" + resolved "https://registry.yarnpkg.com/hono/-/hono-4.12.25.tgz#f2d9996a54e8c9c0c5f5de1c8f3a962e43a98c4e" + integrity sha512-2NFaIyNVgJmBs/ecmtGzlmluTFs5cHEWGTdu0t1HBwYzoGXOL5nUQBRMXsXWla5i4KkG//QMzVP88m1+I3fdAQ== hosted-git-info@^2.1.4: version "2.8.9" @@ -14550,10 +14550,10 @@ js-tiktoken@^1.0.12: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1, js-yaml@^4.1.0, js-yaml@^4.1.1, js-yaml@~4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" - integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== +js-yaml@^3.13.1, js-yaml@^4.1.0, js-yaml@^4.2.0, js-yaml@~4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.2.0.tgz#2bd9e85682dd91bd469afb809d816043b3d49524" + integrity sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw== dependencies: argparse "^2.0.1" @@ -14976,10 +14976,10 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -linkify-it@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" - integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== +linkify-it@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.1.tgz#10c4cecbb5c6828eabf81d3c801adc4a542dfb55" + integrity sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg== dependencies: uc.micro "^2.0.0" @@ -15434,14 +15434,14 @@ markdown-escapes@^1.0.0: resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== -markdown-it@^14.1.1: - version "14.1.1" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.1.tgz#856f90b66fc39ae70affd25c1b18b581d7deee1f" - integrity sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA== +markdown-it@^14.2.0: + version "14.2.0" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.2.0.tgz#06d48d9035e77d5b1c85adb315482fc8240289ef" + integrity sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ== dependencies: argparse "^2.0.1" entities "^4.4.0" - linkify-it "^5.0.0" + linkify-it "^5.0.1" mdurl "^2.0.0" punycode.js "^2.3.1" uc.micro "^2.1.0" @@ -15679,7 +15679,7 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.52.0, mime-db@^1.54.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.27, mime-types@^2.1.35, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -20219,10 +20219,10 @@ tar-stream@^3.1.5: fast-fifo "^1.2.0" streamx "^2.15.0" -tar@^7.5.10: - version "7.5.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-7.5.11.tgz#1250fae45d98806b36d703b30973fa8e0a6d8868" - integrity sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ== +tar@^7.5.16: + version "7.5.16" + resolved "https://registry.yarnpkg.com/tar/-/tar-7.5.16.tgz#f11e063afed4554f758049d082909e37d6b53ced" + integrity sha512-56adEpPMouktRlBLXiaYFFzZ/3+JXa8P9n7WbR+ibIjtviN55mEaOkiysCnPnWm+7kkui1Dn8J9l+g6zV8731w== dependencies: "@isaacs/fs-minipass" "^4.0.0" chownr "^3.0.0" @@ -22205,14 +22205,14 @@ write-pkg@^4.0.0: write-json-file "^3.2.0" ws@^7.3.1, ws@^7.4.6: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== - -ws@^8.18.0, ws@^8.18.3, ws@^8.20.1, ws@~8.18.3: - version "8.20.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.20.1.tgz#91a9ae2b312ccf98e0a85ec499b48cef45ab0ddb" - integrity sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w== + version "7.5.11" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.11.tgz#9460daf1812bb81a423c5b9eac746941a86310fa" + integrity sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA== + +ws@^8.18.0, ws@^8.18.3, ws@^8.20.1, ws@^8.21.0, ws@~8.18.3: + version "8.21.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.21.0.tgz#012e413fc07429945121b0c153158c4343086951" + integrity sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g== wsl-utils@^0.1.0: version "0.1.0" From 1f806f4431c95855bb44e14896db4f1939f244f1 Mon Sep 17 00:00:00 2001 From: Hanyu Wei <69368813+Hanyu-W@users.noreply.github.com> Date: Wed, 24 Jun 2026 14:11:01 -0700 Subject: [PATCH 17/88] =?UTF-8?q?feat(query-enhancements):=20PPL=20lint=20?= =?UTF-8?q?backend=20=E2=80=94=20feature=20flag=20+=20explain/calcite=20pr?= =?UTF-8?q?oxy=20routes=20(#12255)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hanyu Wei Co-authored-by: Hanyu Wei --- .../query_enhancements/common/config.ts | 9 + .../query_enhancements/common/constants.ts | 2 + .../query_enhancements/server/plugin.test.ts | 143 +++++++++ .../query_enhancements/server/plugin.ts | 43 +++ .../server/routes/index.test.ts | 29 +- .../query_enhancements/server/routes/index.ts | 30 +- .../routes/ppl_calcite_settings.test.ts | 289 ++++++++++++++++++ .../server/routes/ppl_calcite_settings.ts | 79 +++++ .../server/routes/ppl_explain.test.ts | 211 +++++++++++++ .../server/routes/ppl_explain.ts | 65 ++++ 10 files changed, 898 insertions(+), 2 deletions(-) create mode 100644 src/plugins/query_enhancements/server/plugin.test.ts create mode 100644 src/plugins/query_enhancements/server/routes/ppl_calcite_settings.test.ts create mode 100644 src/plugins/query_enhancements/server/routes/ppl_calcite_settings.ts create mode 100644 src/plugins/query_enhancements/server/routes/ppl_explain.test.ts create mode 100644 src/plugins/query_enhancements/server/routes/ppl_explain.ts diff --git a/src/plugins/query_enhancements/common/config.ts b/src/plugins/query_enhancements/common/config.ts index 5b4ae79bfb13..2ea8c71fe59e 100644 --- a/src/plugins/query_enhancements/common/config.ts +++ b/src/plugins/query_enhancements/common/config.ts @@ -31,6 +31,15 @@ export const configSchema = schema.object({ }), }), }), + // PPL feature flags, read at runtime via DynamicConfigService. Nested as + // ppl.lint.enabled so future languages/features (ppl.autocomplete, sql.lint) + // extend the same shape. Surfaced as the flat queryEnhancements.pplLint + // capability. Disabled by default. + ppl: schema.object({ + lint: schema.object({ + enabled: schema.boolean({ defaultValue: false }), + }), + }), }); export type ConfigSchema = TypeOf; diff --git a/src/plugins/query_enhancements/common/constants.ts b/src/plugins/query_enhancements/common/constants.ts index 8613ae726b29..15075111e773 100644 --- a/src/plugins/query_enhancements/common/constants.ts +++ b/src/plugins/query_enhancements/common/constants.ts @@ -44,6 +44,8 @@ export const API = { }, PPL_CANCEL: `${BASE_API}/ppl/cancel`, PPL_GRAMMAR: `${BASE_API}/ppl/grammar`, + PPL_CALCITE_SETTINGS: `${BASE_API}/ppl/calcite_settings`, + PPL_EXPLAIN: `${BASE_API}/ppl/explain`, AGENT_API: { CONFIG_EXISTS: `${BASE_API_ASSISTANT}/agent_config/_exists`, }, diff --git a/src/plugins/query_enhancements/server/plugin.test.ts b/src/plugins/query_enhancements/server/plugin.test.ts new file mode 100644 index 000000000000..bbdcfc38363e --- /dev/null +++ b/src/plugins/query_enhancements/server/plugin.test.ts @@ -0,0 +1,143 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { coreMock, dynamicConfigServiceMock } from '../../../core/server/mocks'; +import { dataPluginMock } from '../../data/server/mocks'; +import { QueryEnhancementsPlugin } from './plugin'; + +describe('QueryEnhancementsPlugin pplLint capability', () => { + const baseCapabilities = () => + ({ + navLinks: {}, + management: {}, + catalogue: {}, + queryEnhancements: { pplLint: false }, + } as any); + + // Run the real setup() against core mocks and hand back the registered + // capability switcher plus the plugin's logger so the catch path is + // observable. No production change is needed — the switcher is captured from + // the registerSwitcher mock. + const setupPlugin = () => { + const initializerContext = coreMock.createPluginInitializerContext(); + const plugin = new QueryEnhancementsPlugin(initializerContext); + const core = coreMock.createSetup(); + const deps = { data: dataPluginMock.createSetupContract() } as any; + + plugin.setup(core, deps); + + const registerSwitcher = core.capabilities.registerSwitcher as jest.Mock; + const switcher = registerSwitcher.mock.calls[0][0]; + // this.logger = initializerContext.logger.get(); the loggingSystem mock + // shares one logger instance, so this is the same logger the plugin holds. + const logger = initializerContext.logger.get(); + return { core, switcher, logger }; + }; + + const stubConfig = ( + core: any, + getConfig: Record, + asyncLocalStore?: Map + ) => { + const startContract = dynamicConfigServiceMock.createStartContract( + { + getConfig, + bulkGetConfigs: new Map(), + listConfigs: new Map(), + }, + asyncLocalStore + ); + core.dynamicConfigService.getStartService.mockResolvedValue(startContract); + return startContract; + }; + + it('registers a disabled-by-default pplLint capability provider', () => { + const { core } = setupPlugin(); + const registerProvider = core.capabilities.registerProvider as jest.Mock; + const provided = registerProvider.mock.calls[0][0](); + expect(provided).toEqual({ queryEnhancements: { pplLint: false } }); + }); + + it('enables pplLint when the dynamic config flag is on', async () => { + const { core, switcher } = setupPlugin(); + const startContract = stubConfig(core, { ppl: { lint: { enabled: true } } }); + + const result = await switcher({} as any, baseCapabilities()); + + expect(result.queryEnhancements.pplLint).toBe(true); + // Guard the documented footgun: the lookup MUST use pluginConfigPath, not + // { name: 'queryEnhancements' } (which snake-cases to the wrong namespace, + // throws, gets swallowed, and disables pplLint forever). The shared mock + // returns the stub for any argument, so without this assertion a regression + // to { name } would pass every test. + const getConfigMock = startContract.getClient().getConfig as jest.Mock; + expect(getConfigMock).toHaveBeenCalledTimes(1); + expect(getConfigMock.mock.calls[0][0]).toEqual({ pluginConfigPath: ['queryEnhancements'] }); + }); + + it('passes the async local store as context when one is present', async () => { + const { core, switcher } = setupPlugin(); + const store = new Map([['k', 'v']]); + const startContract = stubConfig(core, { ppl: { lint: { enabled: true } } }, store); + + await switcher({} as any, baseCapabilities()); + + const getConfigMock = startContract.getClient().getConfig as jest.Mock; + expect(getConfigMock.mock.calls[0][1]).toEqual({ asyncLocalStorageContext: store }); + }); + + it('omits the options object when no async local store is present', async () => { + const { core, switcher } = setupPlugin(); + // No store passed → getAsyncLocalStore() returns undefined. The switcher + // must pass `undefined` rather than { asyncLocalStorageContext: undefined }. + const startContract = stubConfig(core, { ppl: { lint: { enabled: true } } }); + + await switcher({} as any, baseCapabilities()); + + const getConfigMock = startContract.getClient().getConfig as jest.Mock; + expect(getConfigMock.mock.calls[0][1]).toBeUndefined(); + }); + + it('coerces a non-boolean stored flag to false (unvalidated dynamic config)', async () => { + const { core, switcher } = setupPlugin(); + // Dynamic config writes are not schema-validated, so the store can hold a + // string. Only a real boolean `true` may enable the flag. + stubConfig(core, { ppl: { lint: { enabled: 'true' } } } as any); + + const result = await switcher({} as any, baseCapabilities()); + + expect(result.queryEnhancements.pplLint).toBe(false); + }); + + it('leaves pplLint off when the dynamic config flag is false', async () => { + const { core, switcher } = setupPlugin(); + stubConfig(core, { ppl: { lint: { enabled: false } } }); + + const result = await switcher({} as any, baseCapabilities()); + + expect(result.queryEnhancements.pplLint).toBe(false); + }); + + it('leaves pplLint off when the dynamic config is absent', async () => { + const { core, switcher } = setupPlugin(); + stubConfig(core, {}); + + const result = await switcher({} as any, baseCapabilities()); + + expect(result.queryEnhancements.pplLint).toBe(false); + }); + + it('returns capabilities unchanged and logs when loading dynamic config throws', async () => { + const { core, switcher, logger } = setupPlugin(); + core.dynamicConfigService.getStartService.mockRejectedValue(new Error('no config store')); + + const capabilities = baseCapabilities(); + const result = await switcher({} as any, capabilities); + + expect(result).toBe(capabilities); + expect(result.queryEnhancements.pplLint).toBe(false); + expect(logger.error).toHaveBeenCalled(); + }); +}); diff --git a/src/plugins/query_enhancements/server/plugin.ts b/src/plugins/query_enhancements/server/plugin.ts index a348e488034b..d53a3eaa495a 100644 --- a/src/plugins/query_enhancements/server/plugin.ts +++ b/src/plugins/query_enhancements/server/plugin.ts @@ -50,6 +50,49 @@ export class QueryEnhancementsPlugin public setup(core: CoreSetup, { data, dataSource }: QueryEnhancementsPluginSetupDependencies) { this.logger.debug('queryEnhancements: Setup'); + + // PPL lint capability — disabled by default until an operator enables it via + // the queryEnhancements.pplLint dynamic app config flag (see the switcher + // below). A follow-up PR will have the public plugin read + // capabilities.queryEnhancements.pplLint to decide whether to register the + // lint bridge; nothing consumes this capability yet. + core.capabilities.registerProvider(() => ({ + queryEnhancements: { pplLint: false }, + })); + + // Override the default with the value from DynamicConfigService. + core.capabilities.registerSwitcher(async (request, capabilities) => { + try { + const dynamicConfigServiceStart = await core.dynamicConfigService.getStartService(); + const client = dynamicConfigServiceStart.getClient(); + const store = dynamicConfigServiceStart.getAsyncLocalStore(); + + // Use pluginConfigPath, NOT { name: 'queryEnhancements' }: pathToString + // runs _.snakeCase on `name`, turning 'queryEnhancements' into + // 'query_enhancements' — the wrong namespace, which would throw, be + // swallowed here, and leave pplLint off forever. pluginConfigPath joins + // verbatim and matches configPath: ['queryEnhancements'] in the manifest. + const config = await client.getConfig( + { pluginConfigPath: ['queryEnhancements'] }, + store ? { asyncLocalStorageContext: store } : undefined + ); + + // Return only the changed subtree; recursiveApplyChanges merges it onto + // the resolved capabilities. `=== true` coerces explicitly — dynamic + // config writes are not schema-validated, so the stored value could be a + // non-boolean (e.g. the string 'true') that must not leak into the flag. + return { + queryEnhancements: { + ...(capabilities.queryEnhancements || {}), + pplLint: config.ppl?.lint?.enabled === true, + }, + }; + } catch (error) { + this.logger.error('Failed to load queryEnhancements dynamic config, using defaults', error); + return capabilities; + } + }); + const router = core.http.createRouter(); // Register server side APIs const client = core.opensearch.legacy.createClient('opensearch_enhancements', { diff --git a/src/plugins/query_enhancements/server/routes/index.test.ts b/src/plugins/query_enhancements/server/routes/index.test.ts index ee364964efe9..c28c94c19658 100644 --- a/src/plugins/query_enhancements/server/routes/index.test.ts +++ b/src/plugins/query_enhancements/server/routes/index.test.ts @@ -5,7 +5,7 @@ import { loggingSystemMock } from '../../../../core/server/mocks'; import { URI } from '../../common'; -import { coerceStatusCode, definePPLBundleRoute } from './index'; +import { coerceStatusCode, definePPLBundleRoute, resolveOpenSearchClient } from './index'; describe('coerceStatusCode', () => { it('should return 503 when input is 500', () => { @@ -207,3 +207,30 @@ describe('definePPLBundleRoute', () => { expect(result).toEqual(res.custom.mock.results[0].value); }); }); + +describe('resolveOpenSearchClient', () => { + it('resolves distinct clients for distinct dataSourceIds', async () => { + const clientA = { id: 'A' }; + const clientB = { id: 'B' }; + const getClient = jest.fn(async (id: string) => (id === 'ds-1' ? clientA : clientB)); + const context = { dataSource: { opensearch: { getClient } }, core: {} } as any; + + // Proves the id is actually forwarded, not that the helper returns a single shared client. + expect(await resolveOpenSearchClient(context, 'ds-1')).toBe(clientA); + expect(await resolveOpenSearchClient(context, 'ds-2')).toBe(clientB); + expect(getClient).toHaveBeenNthCalledWith(1, 'ds-1'); + expect(getClient).toHaveBeenNthCalledWith(2, 'ds-2'); + }); + + it('resolves asCurrentUser when no dataSourceId is given', async () => { + const asCurrentUser = { id: 'current' }; + const context = { core: { opensearch: { client: { asCurrentUser } } } } as any; + expect(await resolveOpenSearchClient(context)).toBe(asCurrentUser); + }); + + it('returns null when dataSourceId is given but the data source plugin is unavailable', async () => { + // No context.dataSource -> can't honor the requested id, so the caller responds 400. + const context = { core: { opensearch: { client: { asCurrentUser: {} } } } } as any; + expect(await resolveOpenSearchClient(context, 'ds-1')).toBeNull(); + }); +}); diff --git a/src/plugins/query_enhancements/server/routes/index.ts b/src/plugins/query_enhancements/server/routes/index.ts index 68fd458a124c..dd7812a6231d 100644 --- a/src/plugins/query_enhancements/server/routes/index.ts +++ b/src/plugins/query_enhancements/server/routes/index.ts @@ -8,6 +8,8 @@ import { IOpenSearchDashboardsResponse, IRouter, Logger, + OpenSearchClient, + RequestHandlerContext, ResponseError, } from '../../../../core/server'; import { IDataFrameResponse, IOpenSearchDashboardsSearchRequest } from '../../../data/common'; @@ -17,16 +19,40 @@ import { registerQueryAssistRoutes } from './query_assist'; import { registerDataSourceConnectionsRoutes } from './data_source_connection'; import { registerResourceRoutes } from './resources'; import { registerPPLCancelRoute } from './ppl_cancel'; +import { definePPLCalciteSettingsRoute } from './ppl_calcite_settings'; +import { definePPLExplainRoute } from './ppl_explain'; /** * Coerce status code to 503 for 500 errors from dependency services. Only use * this function to handle errors throw by other services, and not from OSD. */ -export const coerceStatusCode = (statusCode: number) => { +export const coerceStatusCode = (statusCode?: number) => { if (statusCode === 500) return 503; return statusCode || 503; }; +export const DATASOURCE_UNAVAILABLE_MESSAGE = + 'dataSourceId is not supported because data source plugin is unavailable'; + +/** + * Resolves the OpenSearch client for an optional dataSourceId. Returns the + * data source's client when a dataSourceId is given, the current-user client + * otherwise, or `null` when a dataSourceId is requested but the data source + * plugin is unavailable (the caller should respond 400 in that case). + */ +export async function resolveOpenSearchClient( + context: RequestHandlerContext, + dataSourceId?: string +): Promise { + if (dataSourceId) { + if (!context.dataSource?.opensearch?.getClient) { + return null; + } + return context.dataSource.opensearch.getClient(dataSourceId); + } + return context.core.opensearch.client.asCurrentUser; +} + /** * @experimental * @@ -192,4 +218,6 @@ export function defineRoutes( registerPPLCancelRoute(router, logger); definePPLBundleRoute(logger, router); + definePPLCalciteSettingsRoute(logger, router); + definePPLExplainRoute(logger, router); } diff --git a/src/plugins/query_enhancements/server/routes/ppl_calcite_settings.test.ts b/src/plugins/query_enhancements/server/routes/ppl_calcite_settings.test.ts new file mode 100644 index 000000000000..e5eac9318d56 --- /dev/null +++ b/src/plugins/query_enhancements/server/routes/ppl_calcite_settings.test.ts @@ -0,0 +1,289 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { loggingSystemMock } from '../../../../core/server/mocks'; +import { definePPLCalciteSettingsRoute } from './ppl_calcite_settings'; + +// Matches CALCITE_SETTINGS_PATH in ppl_calcite_settings.ts. The escaped dots are +// required: flat_settings keeps each key as a literal dotted string, and +// filter_path would otherwise read '.' as nesting and return an empty body. +const EXPECTED_PATH = + '/_cluster/settings?flat_settings=true&include_defaults=true' + + '&filter_path=*.plugins\\.calcite\\.enabled,*.plugins\\.calcite\\.all_join_types\\.allowed'; + +describe('definePPLCalciteSettingsRoute', () => { + const createResponse = () => ({ + ok: jest.fn((v) => v), + custom: jest.fn((v) => v), + }); + + const captureHandler = () => { + let handler: any; + const router = { + get: jest.fn((_, h) => { + handler = h; + }), + } as any; + const logger = loggingSystemMock.create().get(); + definePPLCalciteSettingsRoute(logger, router); + return { handler: () => handler, router, logger }; + }; + + it('uses the datasource client and GETs /_cluster/settings', async () => { + const { handler } = captureHandler(); + + const settings = { + body: { + defaults: { + 'plugins.calcite.enabled': 'true', + 'plugins.calcite.all_join_types.allowed': 'false', + }, + }, + }; + const requestMock = jest.fn().mockResolvedValue(settings); + const context = { + dataSource: { + opensearch: { + getClient: jest.fn().mockResolvedValue({ + transport: { request: requestMock }, + }), + }, + }, + core: { + opensearch: { client: { asCurrentUser: { transport: { request: jest.fn() } } } }, + }, + } as any; + const req = { query: { dataSourceId: 'ds-1' } } as any; + const res = createResponse(); + + const result = await handler()(context, req, res); + + expect(context.dataSource.opensearch.getClient).toHaveBeenCalledWith('ds-1'); + expect(requestMock).toHaveBeenCalledWith({ + method: 'GET', + path: EXPECTED_PATH, + }); + expect(res.ok).toHaveBeenCalledWith({ + body: { calciteEnabled: true, allJoinTypesAllowed: false }, + }); + expect(result).toEqual(res.ok.mock.results[0].value); + }); + + it('uses the core client when no dataSourceId is provided', async () => { + const { handler } = captureHandler(); + + const requestMock = jest.fn().mockResolvedValue({ body: { defaults: {} } }); + const context = { + dataSource: { opensearch: { getClient: jest.fn() } }, + core: { + opensearch: { client: { asCurrentUser: { transport: { request: requestMock } } } }, + }, + } as any; + const req = { query: {} } as any; + const res = createResponse(); + + await handler()(context, req, res); + + expect(context.dataSource.opensearch.getClient).not.toHaveBeenCalled(); + expect(requestMock).toHaveBeenCalledWith({ + method: 'GET', + path: EXPECTED_PATH, + }); + // Absent key on a successful read = no Calcite engine = disabled; join types not allowed. + expect(res.ok).toHaveBeenCalledWith({ + body: { calciteEnabled: false, allJoinTypesAllowed: false }, + }); + }); + + it('reports calciteEnabled:false for a cluster missing plugins.calcite.enabled (no/old SQL plugin)', async () => { + const { handler } = captureHandler(); + + // include_defaults=true surfaces plugins.calcite.enabled on any Calcite-capable + // cluster, so a successful read with the key absent means the engine isn't there. + // This documents the backward-compat contract for clusters with no/old SQL plugin. + const requestMock = jest.fn().mockResolvedValue({ body: { defaults: {} } }); + const context = { + dataSource: { opensearch: { getClient: jest.fn() } }, + core: { + opensearch: { client: { asCurrentUser: { transport: { request: requestMock } } } }, + }, + } as any; + const req = { query: {} } as any; + const res = createResponse(); + + await handler()(context, req, res); + + expect(res.ok).toHaveBeenCalledWith({ + body: { calciteEnabled: false, allJoinTypesAllowed: false }, + }); + }); + + it('honors transient over persistent over defaults precedence', async () => { + const { handler } = captureHandler(); + + const requestMock = jest.fn().mockResolvedValue({ + body: { + transient: { 'plugins.calcite.enabled': 'false' }, + persistent: { + 'plugins.calcite.enabled': 'true', + 'plugins.calcite.all_join_types.allowed': 'true', + }, + defaults: { + 'plugins.calcite.enabled': 'true', + 'plugins.calcite.all_join_types.allowed': 'false', + }, + }, + }); + const context = { + dataSource: { opensearch: { getClient: jest.fn() } }, + core: { + opensearch: { client: { asCurrentUser: { transport: { request: requestMock } } } }, + }, + } as any; + const req = { query: {} } as any; + const res = createResponse(); + + await handler()(context, req, res); + + // transient 'false' wins for calcite.enabled; persistent 'true' wins for join types. + expect(res.ok).toHaveBeenCalledWith({ + body: { calciteEnabled: false, allJoinTypesAllowed: true }, + }); + }); + + it('returns 400 when dataSourceId is provided but the data source plugin is unavailable', async () => { + const { handler } = captureHandler(); + + const requestMock = jest.fn(); + const context = { + core: { + opensearch: { client: { asCurrentUser: { transport: { request: requestMock } } } }, + }, + } as any; + const req = { query: { dataSourceId: 'ds-1' } } as any; + const res = createResponse(); + + const result = await handler()(context, req, res); + + expect(requestMock).not.toHaveBeenCalled(); + expect(res.custom).toHaveBeenCalledWith({ + statusCode: 400, + body: 'dataSourceId is not supported because data source plugin is unavailable', + }); + expect(result).toEqual(res.custom.mock.results[0].value); + }); + + it('swallows transport errors, logs, and returns safe defaults', async () => { + const { handler, logger } = captureHandler(); + + const context = { + dataSource: { opensearch: { getClient: jest.fn() } }, + core: { + opensearch: { + client: { + asCurrentUser: { + transport: { request: jest.fn().mockRejectedValue(new Error('boom')) }, + }, + }, + }, + }, + } as any; + const req = { query: {} } as any; + const res = createResponse(); + + await handler()(context, req, res); + + expect(res.ok).toHaveBeenCalledWith({ + body: { calciteEnabled: true, allJoinTypesAllowed: false }, + }); + expect(logger.debug).toHaveBeenCalledWith(expect.stringContaining('boom')); + }); + + it('unwraps a non-body transport result', async () => { + const { handler } = captureHandler(); + + const rawSettings = { + defaults: { 'plugins.calcite.enabled': 'false' }, + }; + const context = { + dataSource: { opensearch: { getClient: jest.fn() } }, + core: { + opensearch: { + client: { + asCurrentUser: { transport: { request: jest.fn().mockResolvedValue(rawSettings) } }, + }, + }, + }, + } as any; + const req = { query: {} } as any; + const res = createResponse(); + + await handler()(context, req, res); + + expect(res.ok).toHaveBeenCalledWith({ + body: { calciteEnabled: false, allJoinTypesAllowed: false }, + }); + }); + + it('normalizes typed-boolean setting values before comparing', async () => { + const { handler } = captureHandler(); + + // A future transport could serialize the values as real booleans rather than + // strings. String() normalization makes `false`/`true` compare like '"false"'/'"true"'. + const requestMock = jest.fn().mockResolvedValue({ + body: { + defaults: { + 'plugins.calcite.enabled': false, + 'plugins.calcite.all_join_types.allowed': true, + }, + }, + }); + const context = { + dataSource: { opensearch: { getClient: jest.fn() } }, + core: { + opensearch: { client: { asCurrentUser: { transport: { request: requestMock } } } }, + }, + } as any; + const req = { query: {} } as any; + const res = createResponse(); + + await handler()(context, req, res); + + expect(res.ok).toHaveBeenCalledWith({ + body: { calciteEnabled: false, allJoinTypesAllowed: true }, + }); + }); + + it('logs auth failures at warn while still failing open', async () => { + const { handler, logger } = captureHandler(); + + const context = { + dataSource: { opensearch: { getClient: jest.fn() } }, + core: { + opensearch: { + client: { + asCurrentUser: { + transport: { + request: jest.fn().mockRejectedValue({ statusCode: 403, message: 'forbidden' }), + }, + }, + }, + }, + }, + } as any; + const req = { query: {} } as any; + const res = createResponse(); + + await handler()(context, req, res); + + // Still fails open so the editor is never blocked... + expect(res.ok).toHaveBeenCalledWith({ + body: { calciteEnabled: true, allJoinTypesAllowed: false }, + }); + // ...but the permission failure is surfaced at warn, not buried at debug. + expect(logger.warn).toHaveBeenCalledWith(expect.stringContaining('403')); + expect(logger.debug).not.toHaveBeenCalled(); + }); +}); diff --git a/src/plugins/query_enhancements/server/routes/ppl_calcite_settings.ts b/src/plugins/query_enhancements/server/routes/ppl_calcite_settings.ts new file mode 100644 index 000000000000..e16053cba353 --- /dev/null +++ b/src/plugins/query_enhancements/server/routes/ppl_calcite_settings.ts @@ -0,0 +1,79 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { schema } from '@osd/config-schema'; +import { IRouter, Logger } from '../../../../core/server'; +import { API } from '../../common'; +import { DATASOURCE_UNAVAILABLE_MESSAGE, resolveOpenSearchClient } from '.'; + +// flat_settings keeps each calcite key as a literal dotted string +// ("plugins.calcite.enabled"), so the filter_path segments must escape those +// dots — filter_path treats an unescaped '.' as object nesting and would match +// nothing (returning an empty body, which the resolver below would misread as +// "calcite enabled"). '*.' matches the transient/persistent/defaults buckets. +const CALCITE_SETTINGS_PATH = + '/_cluster/settings?flat_settings=true&include_defaults=true' + + '&filter_path=*.plugins\\.calcite\\.enabled,*.plugins\\.calcite\\.all_join_types\\.allowed'; + +export function definePPLCalciteSettingsRoute(logger: Logger, router: IRouter) { + router.get( + { + path: API.PPL_CALCITE_SETTINGS, + validate: { + query: schema.object({ + dataSourceId: schema.maybe(schema.string()), + }), + }, + }, + async (context, req, res) => { + try { + const { dataSourceId } = req.query; + const client = await resolveOpenSearchClient(context, dataSourceId); + if (!client) { + return res.custom({ statusCode: 400, body: DATASOURCE_UNAVAILABLE_MESSAGE }); + } + + const result = await client.transport.request({ + method: 'GET', + path: CALCITE_SETTINGS_PATH, + }); + + const body = result?.body ?? result; + // Normalize to string so a typed-boolean value (e.g. JSON `false` from a + // future transport) compares the same as today's string `"false"`. + const resolveValue = (key: string): string | undefined => { + const raw = body?.transient?.[key] ?? body?.persistent?.[key] ?? body?.defaults?.[key]; + return raw === undefined || raw === null ? undefined : String(raw); + }; + + return res.ok({ + body: { + // A successful read with the key absent is definitive: include_defaults=true + // surfaces plugins.calcite.enabled on any Calcite-capable cluster, so its + // absence means there is no Calcite engine -> disabled. The catch block below + // deliberately returns true instead: an error can't distinguish "no plugin" + // from a transient failure, so it fails open. Don't reconcile the two paths. + calciteEnabled: resolveValue('plugins.calcite.enabled') === 'true', + allJoinTypesAllowed: resolveValue('plugins.calcite.all_join_types.allowed') === 'true', + }, + }); + } catch (err) { + const status = (err as { statusCode?: number; meta?: { statusCode?: number } })?.statusCode; + const metaStatus = (err as { meta?: { statusCode?: number } })?.meta?.statusCode; + const message = err instanceof Error ? err.message : String(err); + // Fail open: a missing/failed cluster-settings read must not block the + // editor. Calcite is assumed enabled (the engine default) so lint rules + // still run. Surface auth/permission failures at warn so an operator can + // see them; everything else stays at debug. + if (status === 401 || status === 403 || metaStatus === 401 || metaStatus === 403) { + logger.warn(`PPL calcite settings unauthorized (${status ?? metaStatus}): ${message}`); + } else { + logger.debug(`PPL calcite settings error: ${message}`); + } + return res.ok({ body: { calciteEnabled: true, allJoinTypesAllowed: false } }); + } + } + ); +} diff --git a/src/plugins/query_enhancements/server/routes/ppl_explain.test.ts b/src/plugins/query_enhancements/server/routes/ppl_explain.test.ts new file mode 100644 index 000000000000..396d82db2dab --- /dev/null +++ b/src/plugins/query_enhancements/server/routes/ppl_explain.test.ts @@ -0,0 +1,211 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { loggingSystemMock } from '../../../../core/server/mocks'; +import { URI } from '../../common'; +import { definePPLExplainRoute } from './ppl_explain'; + +describe('definePPLExplainRoute', () => { + const createResponse = () => ({ + ok: jest.fn((v) => v), + custom: jest.fn((v) => v), + }); + + const captureHandler = () => { + let handler: any; + const router = { + post: jest.fn((_, h) => { + handler = h; + }), + } as any; + const logger = loggingSystemMock.create().get(); + definePPLExplainRoute(logger, router); + return { handler: () => handler, router }; + }; + + it('uses the datasource client and POSTs to /_plugins/_ppl/_explain', async () => { + const { handler } = captureHandler(); + + const calcitePlan = { calcite: { logical: 'L', physical: 'P' } }; + const requestMock = jest.fn().mockResolvedValue({ body: calcitePlan }); + const context = { + dataSource: { + opensearch: { + getClient: jest.fn().mockResolvedValue({ + transport: { request: requestMock }, + }), + }, + }, + core: { + opensearch: { client: { asCurrentUser: { transport: { request: jest.fn() } } } }, + }, + } as any; + const req = { + query: { dataSourceId: 'ds-1' }, + body: { query: 'source=accounts | head 1' }, + } as any; + const res = createResponse(); + + const result = await handler()(context, req, res); + + expect(context.dataSource.opensearch.getClient).toHaveBeenCalledWith('ds-1'); + expect(requestMock).toHaveBeenCalledWith({ + method: 'POST', + path: `${URI.PPL}/_explain`, + body: { query: 'source=accounts | head 1' }, + }); + expect(res.ok).toHaveBeenCalledWith({ body: calcitePlan }); + expect(result).toEqual(res.ok.mock.results[0].value); + }); + + it('uses the core client when no dataSourceId is provided', async () => { + const { handler } = captureHandler(); + + const requestMock = jest.fn().mockResolvedValue({ body: { calcite: {} } }); + const context = { + dataSource: { opensearch: { getClient: jest.fn() } }, + core: { + opensearch: { client: { asCurrentUser: { transport: { request: requestMock } } } }, + }, + } as any; + const req = { query: {}, body: { query: 'source=accounts' } } as any; + const res = createResponse(); + + await handler()(context, req, res); + + expect(context.dataSource.opensearch.getClient).not.toHaveBeenCalled(); + expect(requestMock).toHaveBeenCalledWith({ + method: 'POST', + path: `${URI.PPL}/_explain`, + body: { query: 'source=accounts' }, + }); + // requestMock resolves { body: { calcite: {} } }, so the unwrapped body is { calcite: {} }. + expect(res.ok).toHaveBeenCalledWith({ body: { calcite: {} } }); + }); + + it('coerces 500-class errors to 503', async () => { + const { handler } = captureHandler(); + + const context = { + dataSource: { opensearch: { getClient: jest.fn() } }, + core: { + opensearch: { + client: { + asCurrentUser: { + transport: { + request: jest + .fn() + .mockRejectedValue({ statusCode: 500, message: 'backend failure' }), + }, + }, + }, + }, + }, + } as any; + const req = { query: {}, body: { query: 'source=accounts' } } as any; + const res = createResponse(); + + const result = await handler()(context, req, res); + + expect(res.custom).toHaveBeenCalledWith({ statusCode: 503, body: 'backend failure' }); + expect(result).toEqual(res.custom.mock.results[0].value); + }); + + it('reads err.status when only that field is set (older opensearch-js shape)', async () => { + const { handler } = captureHandler(); + + const context = { + dataSource: { opensearch: { getClient: jest.fn() } }, + core: { + opensearch: { + client: { + asCurrentUser: { + transport: { + request: jest.fn().mockRejectedValue({ status: 400, message: 'bad request' }), + }, + }, + }, + }, + }, + } as any; + const req = { query: {}, body: { query: 'source=accounts' } } as any; + const res = createResponse(); + + await handler()(context, req, res); + + expect(res.custom).toHaveBeenCalledWith({ statusCode: 400, body: 'bad request' }); + }); + + it('reads err.meta.statusCode when only that field is set (opensearch-js 2.x ResponseError shape)', async () => { + const { handler } = captureHandler(); + + const context = { + dataSource: { opensearch: { getClient: jest.fn() } }, + core: { + opensearch: { + client: { + asCurrentUser: { + transport: { + request: jest + .fn() + .mockRejectedValue({ meta: { statusCode: 404 }, message: 'not found' }), + }, + }, + }, + }, + }, + } as any; + const req = { query: {}, body: { query: 'source=accounts' } } as any; + const res = createResponse(); + + await handler()(context, req, res); + + expect(res.custom).toHaveBeenCalledWith({ statusCode: 404, body: 'not found' }); + }); + + it('returns 400 when dataSourceId is provided but the data source plugin is unavailable', async () => { + const { handler } = captureHandler(); + + const requestMock = jest.fn(); + const context = { + core: { + opensearch: { client: { asCurrentUser: { transport: { request: requestMock } } } }, + }, + } as any; + const req = { query: { dataSourceId: 'ds-1' }, body: { query: 'source=accounts' } } as any; + const res = createResponse(); + + const result = await handler()(context, req, res); + + expect(requestMock).not.toHaveBeenCalled(); + expect(res.custom).toHaveBeenCalledWith({ + statusCode: 400, + body: 'dataSourceId is not supported because data source plugin is unavailable', + }); + expect(result).toEqual(res.custom.mock.results[0].value); + }); + + it('unwraps a non-body transport result', async () => { + const { handler } = captureHandler(); + + const rawPlan = { calcite: { logical: 'L', physical: 'P' } }; + const context = { + dataSource: { opensearch: { getClient: jest.fn() } }, + core: { + opensearch: { + client: { + asCurrentUser: { transport: { request: jest.fn().mockResolvedValue(rawPlan) } }, + }, + }, + }, + } as any; + const req = { query: {}, body: { query: 'source=accounts' } } as any; + const res = createResponse(); + + await handler()(context, req, res); + + expect(res.ok).toHaveBeenCalledWith({ body: rawPlan }); + }); +}); diff --git a/src/plugins/query_enhancements/server/routes/ppl_explain.ts b/src/plugins/query_enhancements/server/routes/ppl_explain.ts new file mode 100644 index 000000000000..03c59737e298 --- /dev/null +++ b/src/plugins/query_enhancements/server/routes/ppl_explain.ts @@ -0,0 +1,65 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { schema } from '@osd/config-schema'; +import { IRouter, Logger } from '../../../../core/server'; +import { API, URI } from '../../common'; +import { coerceStatusCode, DATASOURCE_UNAVAILABLE_MESSAGE, resolveOpenSearchClient } from '.'; + +/** + * Defines the PPL explain proxy route. Forwards a query to OpenSearch + * `POST /_plugins/_ppl/_explain`, which plans the query without executing it and + * returns the Calcite physical plan. The explain-backed lint rules read that + * plan to flag pushdown anti-patterns. Modeled on `definePPLBundleRoute`. + * + * The response is the unwrapped transport body (`result.body ?? result`), which + * matches `definePPLBundleRoute`. The client parser must validate the plan shape + * before reading it rather than assume a fixed envelope. + */ +export function definePPLExplainRoute(logger: Logger, router: IRouter) { + router.post( + { + path: API.PPL_EXPLAIN, + validate: { + // maxLength is belt-and-suspenders: OSD's server.maxPayload (1 MiB default) + // already bounds the body. 64 KB is 2-4x the largest realistic interactive + // PPL pipeline, and makes the cap explicit + independent of global config. + body: schema.object({ query: schema.string({ minLength: 1, maxLength: 65536 }) }), + query: schema.object({ dataSourceId: schema.maybe(schema.string()) }), + }, + }, + async (context, req, res) => { + try { + const { dataSourceId } = req.query; + const client = await resolveOpenSearchClient(context, dataSourceId); + if (!client) { + return res.custom({ statusCode: 400, body: DATASOURCE_UNAVAILABLE_MESSAGE }); + } + + const result = await client.transport.request({ + method: 'POST', + path: `${URI.PPL}/_explain`, + body: { query: req.body.query }, + }); + + const body = result?.body ?? result; + return res.ok({ body }); + } catch (err) { + const e = err as { + message?: string; + status?: number; + statusCode?: number; + meta?: { statusCode?: number }; + }; + const message = e.message ?? 'Failed to explain PPL query'; + logger.debug(`PPL explain error: ${message}`); + return res.custom({ + statusCode: coerceStatusCode(e.status ?? e.statusCode ?? e.meta?.statusCode), + body: message, + }); + } + } + ); +} From 27af8a23ddf759755239ebc2c47aae58e15b5c5f Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Wed, 24 Jun 2026 17:38:57 -0400 Subject: [PATCH 18/88] Onboard new backport-pr re-usable github workflow (OpenSearch-Dashboards) (#12272) - Replace old backport workflow (VachaShah/backport + GitHub App) with reusable workflow - Remove delete_backport_branch.yml (now handled by reusable workflow) Signed-off-by: Peter Zhu --- .github/workflows/backport.yml | 42 +++----------------- .github/workflows/delete_backport_branch.yml | 22 ---------- 2 files changed, 6 insertions(+), 58 deletions(-) delete mode 100644 .github/workflows/delete_backport_branch.yml diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index 8892cc3a8635..b95bc17119e8 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -1,42 +1,12 @@ +--- name: Backport on: pull_request_target: - types: - - closed - - labeled + types: [closed, labeled] jobs: backport: - runs-on: ubuntu-latest - permissions: - contents: write - pull-requests: write - name: Backport - # Only react to merged PRs for security reasons. - # See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target. - if: > - github.event.pull_request.merged - && ( - github.event.action == 'closed' - || ( - github.event.action == 'labeled' - && contains(github.event.label.name, 'backport') - ) - ) - steps: - - name: GitHub App token - id: github_app_token - uses: tibdex/github-app-token@1901dc7d52169e70c27a8da37aef0d423e2867a2 # v1.5.0 - with: - app_id: ${{ secrets.APP_ID }} - private_key: ${{ secrets.APP_PRIVATE_KEY }} - # opensearch-trigger-bot installation ID - installation_id: 22958780 - - - name: Backport - uses: VachaShah/backport@142d3b8a8c70dc54db515e653e5ed3c3fac64100 # v2.2.0 - with: - github_token: ${{ steps.github_app_token.outputs.token }} - head_template: backport/backport-<%= number %>-to-<%= base %> - labels_template: "<%= JSON.stringify([...labels, 'autocut']) %>" - failure_labels: 'failed backport' + if: github.repository == 'opensearch-project/OpenSearch-Dashboards' + uses: opensearch-project/opensearch-build/.github/workflows/backport-pr.yml@main + secrets: + OPENSEARCH_CI_BOT_TOKEN: ${{ secrets.OPENSEARCH_CI_BOT_TOKEN }} diff --git a/.github/workflows/delete_backport_branch.yml b/.github/workflows/delete_backport_branch.yml deleted file mode 100644 index d12a36e99a2d..000000000000 --- a/.github/workflows/delete_backport_branch.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Delete merged branch of the backport PRs -on: - pull_request: - types: - - closed - -jobs: - delete-branch: - runs-on: ubuntu-latest - permissions: - contents: write - if: startsWith(github.event.pull_request.head.ref,'backport/') - steps: - - name: Delete merged branch - uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7 - with: - script: | - github.rest.git.deleteRef({ - owner: context.repo.owner, - repo: context.repo.repo, - ref: `heads/${context.payload.pull_request.head.ref}`, - }) From 861192ba3d9faeb509815a1d180417d6ed228f32 Mon Sep 17 00:00:00 2001 From: Yulong Ruan Date: Thu, 25 Jun 2026 10:55:29 +0800 Subject: [PATCH 19/88] fix(data-explorer): fields sidebar collapse button not working in Safari (#12231) Signed-off-by: Yulong Ruan --- .../public/components/app_container.tsx | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/plugins/data_explorer/public/components/app_container.tsx b/src/plugins/data_explorer/public/components/app_container.tsx index 63f759f65408..e44a03e00367 100644 --- a/src/plugins/data_explorer/public/components/app_container.tsx +++ b/src/plugins/data_explorer/public/components/app_container.tsx @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import React, { memo, useRef } from 'react'; +import React, { memo, useCallback, useRef } from 'react'; import { EuiFlexGroup, EuiFlexItem, @@ -38,6 +38,19 @@ export const AppContainer = React.memo( const datasetSelectorRef = useRef(null); const datePickerRef = useRef(null); + // In Safari, mousedown on the collapse toggle moves focus away from the resizer, + // triggering a re-render that hides the button before the click event fires. + // Preventing default on mousedown preserves the resizer's focus state. + const handleResizableMouseDown = useCallback((e: React.MouseEvent) => { + const target = e.target as HTMLElement; + if ( + target.closest('.ouiResizableToggleButton') || + target.closest('.euiResizableToggleButton') + ) { + e.preventDefault(); + } + }, []); + if (!view) { return ; } @@ -90,7 +103,10 @@ export const AppContainer = React.memo( {/* TODO: improve fallback state */} Loading...}> - + {(EuiResizablePanel, EuiResizableButton) => ( <> Date: Thu, 25 Jun 2026 10:55:46 +0800 Subject: [PATCH 20/88] fix: it should not store flavor as explore object type when creating (#12221) visualization snapshot Signed-off-by: Yulong Ruan --- .../components/add_to_dashboard/add_to_dashboard_button.tsx | 5 ++--- .../top_nav/top_nav_links/top_nav_save/top_nav_save.tsx | 2 +- .../agent_traces/public/saved_agent_traces/transforms.ts | 2 +- .../components/visualizations/add_to_dashboard_button.tsx | 5 ++--- src/plugins/explore/public/saved_explore/transforms.ts | 2 +- 5 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/plugins/agent_traces/public/components/add_to_dashboard/add_to_dashboard_button.tsx b/src/plugins/agent_traces/public/components/add_to_dashboard/add_to_dashboard_button.tsx index 8f3bc5a2828f..38bc9e37794b 100644 --- a/src/plugins/agent_traces/public/components/add_to_dashboard/add_to_dashboard_button.tsx +++ b/src/plugins/agent_traces/public/components/add_to_dashboard/add_to_dashboard_button.tsx @@ -25,7 +25,6 @@ import { saveStateToSavedObject } from '../../saved_agent_traces/transforms'; import { addToDashboard } from './add_to_dashboard'; import { saveSavedAgentTraces } from '../../helpers/save_agent_traces'; import { useCurrentAgentTracesId } from '../../application/utils/hooks/use_current_agent_traces_id'; -import { AgentTracesFlavor } from '../../../common'; import { AgentTracesServices } from '../../types'; import { getVisualizationBuilder } from '../visualizations/visualization_builder_singleton'; import { ExecutionContextSearch } from '../../../../expressions/common'; @@ -82,7 +81,6 @@ export const SaveAndAddButtonWithModal = ({ dataset }: { dataset?: IndexPattern const tabDefinition = services.tabRegistry?.getTab?.(uiState.activeTabId); const savedAgentTracesIdFromUrl = useCurrentAgentTracesId(); - const flavorId = AgentTracesFlavor.Traces; const saveObjectsClient = savedObjects.client; @@ -103,8 +101,9 @@ export const SaveAndAddButtonWithModal = ({ dataset }: { dataset?: IndexPattern }: OnSaveProps) => { const savedAgentTracesWithState = saveStateToSavedObject( savedAgentTraces, - flavorId, tabDefinition!, + // Don't store flavor for visualization snapshot + undefined, { chartType: chartConfig?.type, axesMapping: chartConfig?.axesMapping, diff --git a/src/plugins/agent_traces/public/components/top_nav/top_nav_links/top_nav_save/top_nav_save.tsx b/src/plugins/agent_traces/public/components/top_nav/top_nav_links/top_nav_save/top_nav_save.tsx index 4d1266a68607..6eb0113bbad8 100644 --- a/src/plugins/agent_traces/public/components/top_nav/top_nav_links/top_nav_save/top_nav_save.tsx +++ b/src/plugins/agent_traces/public/components/top_nav/top_nav_links/top_nav_save/top_nav_save.tsx @@ -64,8 +64,8 @@ export const getSaveButtonRun = ( }: OnSaveProps): Promise => { const savedAgentTracesWithState = saveStateToSavedObject( savedAgentTraces, - saveStateProps.flavorId ?? 'logs', saveStateProps.tabDefinition!, + saveStateProps.flavorId ?? 'logs', {}, saveStateProps.dataset, saveStateProps.activeTabId diff --git a/src/plugins/agent_traces/public/saved_agent_traces/transforms.ts b/src/plugins/agent_traces/public/saved_agent_traces/transforms.ts index 953d1b0db23d..4fc7df6d265e 100644 --- a/src/plugins/agent_traces/public/saved_agent_traces/transforms.ts +++ b/src/plugins/agent_traces/public/saved_agent_traces/transforms.ts @@ -24,8 +24,8 @@ interface VisState { export const saveStateToSavedObject = ( obj: SavedAgentTraces, - flavorId: string, tabDefinition: TabDefinition, + flavorId?: string, visState?: VisState, dataset?: IndexPattern | Dataset, activeTabId?: string diff --git a/src/plugins/explore/public/components/visualizations/add_to_dashboard_button.tsx b/src/plugins/explore/public/components/visualizations/add_to_dashboard_button.tsx index 30d553db10d4..44e6de3a1b90 100644 --- a/src/plugins/explore/public/components/visualizations/add_to_dashboard_button.tsx +++ b/src/plugins/explore/public/components/visualizations/add_to_dashboard_button.tsx @@ -25,7 +25,6 @@ import { saveStateToSavedObject } from '../../saved_explore/transforms'; import { addToDashboard } from './utils/add_to_dashboard'; import { saveSavedExplore } from '../../helpers/save_explore'; import { useCurrentExploreId } from '../../application/utils/hooks/use_current_explore_id'; -import { useFlavorId } from '../../../public/helpers/use_flavor_id'; import { useSearchContext } from '../query_panel/utils/use_search_context'; import { ExploreServices } from '../../types'; import { getVisualizationBuilder } from './visualization_builder'; @@ -84,7 +83,6 @@ export const SaveAndAddButtonWithModal = ({ dataset }: { dataset?: IndexPattern const tabDefinition = services.tabRegistry?.getTab?.(activeTabId); const savedExploreIdFromUrl = useCurrentExploreId(); - const flavorId = useFlavorId(); const saveObjectsClient = savedObjects.client; @@ -104,7 +102,8 @@ export const SaveAndAddButtonWithModal = ({ dataset }: { dataset?: IndexPattern const savedExploreWithState = saveStateToSavedObject( savedExplore, - flavorId ?? 'logs', + // Don't store flavor for visualization snapshot + undefined, tabDefinition, { chartType: chartConfig?.type, diff --git a/src/plugins/explore/public/saved_explore/transforms.ts b/src/plugins/explore/public/saved_explore/transforms.ts index d441d18825f1..c77e213ab805 100644 --- a/src/plugins/explore/public/saved_explore/transforms.ts +++ b/src/plugins/explore/public/saved_explore/transforms.ts @@ -34,7 +34,7 @@ interface VisState { export const saveStateToSavedObject = ( obj: SavedExplore, - flavorId: string, + flavorId?: string, tabDefinition?: TabDefinition, visState?: VisState, dataset?: IndexPattern | Dataset, From 3a3f498ab42ba2cebd256a58146bd2adbc0f27cc Mon Sep 17 00:00:00 2001 From: Yulong Ruan Date: Thu, 25 Jun 2026 12:01:05 +0800 Subject: [PATCH 21/88] refactor(vis): clean up uniqueValuesCount/validValuesCount and update column identifier (#12218) * clean up uniqueValuesCount/validValuesCount Signed-off-by: Yulong Ruan * fix lint Signed-off-by: Yulong Ruan --------- Signed-off-by: Yulong Ruan --- .../visualization_container.test.tsx | 4 --- .../area/area_vis_options.test.tsx | 8 ----- .../visualizations/area/to_expression.test.ts | 8 ----- .../bar/bar_vis_options.test.tsx | 14 -------- .../visualizations/bar/to_expression.test.ts | 10 ------ .../bar_gauge/bar_gauge_vis_options.test.tsx | 4 --- .../chart_type_selector.test.tsx | 6 ---- .../gauge/gauge_vis_options.test.tsx | 4 --- .../gauge/to_expression.test.ts | 2 -- .../heatmap/heatmap_vis_options.test.tsx | 6 ---- .../heatmap/to_expression.test.ts | 6 ---- .../histogram/histogram_vis_options.test.tsx | 4 --- .../histogram/to_expression.test.ts | 4 --- .../line/line_vis_options.test.tsx | 6 ---- .../visualizations/line/to_expression.test.ts | 10 ------ .../metric/metric_utils.test.ts | 2 -- .../metric/metric_vis_options.test.tsx | 4 --- .../metric/to_expression.test.ts | 4 --- .../pie/pie_vis_options.test.tsx | 4 --- .../visualizations/pie/to_expression.test.ts | 4 --- .../scatter/scatter_vis_options.test.tsx | 10 ------ .../scatter/to_expression.test.ts | 8 ----- .../split_field_selector.test.tsx | 6 ---- .../state_timeline_vis_options.test.tsx | 8 ----- .../state_timeline/to_expression.test.ts | 8 ----- .../style_panel/axes/axes_selector.test.tsx | 8 ----- .../axes/standard_axes_options.test.tsx | 6 ---- .../table/data_link_options.test.tsx | 6 ---- .../visualizations/table/table_vis.test.tsx | 4 --- .../table/table_vis_filter.test.tsx | 4 --- .../table/table_vis_footer_options.test.tsx | 6 ---- .../table/table_vis_options.test.tsx | 6 ---- .../public/components/visualizations/types.ts | 6 ++-- .../visualizations/utils/axis.test.ts | 2 -- .../utils/normalize_result_rows.ts | 30 +++------------- .../visualizations/utils/utils.test.ts | 4 --- .../visualization_builder.test.ts | 34 +++++-------------- .../visualization_builder_utils.test.ts | 8 ----- .../visualization_container.test.tsx | 4 --- .../visualization_registry.test.ts | 32 ----------------- .../visualization_render.test.tsx | 4 --- 41 files changed, 15 insertions(+), 303 deletions(-) diff --git a/src/plugins/agent_traces/public/components/visualizations/visualization_container.test.tsx b/src/plugins/agent_traces/public/components/visualizations/visualization_container.test.tsx index 9c1587f41380..7ac897a934ed 100644 --- a/src/plugins/agent_traces/public/components/visualizations/visualization_container.test.tsx +++ b/src/plugins/agent_traces/public/components/visualizations/visualization_container.test.tsx @@ -51,8 +51,6 @@ const mockVisualizationBuilder = { name: 'count', schema: 'numerical', column: 'count', - validValuesCount: 2, - uniqueValuesCount: 2, }, ], categoricalColumns: [ @@ -61,8 +59,6 @@ const mockVisualizationBuilder = { name: 'field1', schema: 'categorical', column: 'field1', - validValuesCount: 2, - uniqueValuesCount: 2, }, ], dateColumns: [], diff --git a/src/plugins/explore/public/components/visualizations/area/area_vis_options.test.tsx b/src/plugins/explore/public/components/visualizations/area/area_vis_options.test.tsx index 498ab41d2034..4899d4e5f84d 100644 --- a/src/plugins/explore/public/components/visualizations/area/area_vis_options.test.tsx +++ b/src/plugins/explore/public/components/visualizations/area/area_vis_options.test.tsx @@ -138,8 +138,6 @@ describe('AreaVisStyleControls', () => { name: 'Date', schema: VisFieldType.Date, column: 'date', - validValuesCount: 100, - uniqueValuesCount: 50, }, ], [AxisRole.Y]: [ @@ -148,8 +146,6 @@ describe('AreaVisStyleControls', () => { name: 'Count', schema: VisFieldType.Numerical, column: 'count', - validValuesCount: 100, - uniqueValuesCount: 50, }, ], [AxisRole.COLOR]: [ @@ -158,8 +154,6 @@ describe('AreaVisStyleControls', () => { name: 'Category', schema: VisFieldType.Categorical, column: 'category', - validValuesCount: 10, - uniqueValuesCount: 5, }, ], }, @@ -189,8 +183,6 @@ describe('AreaVisStyleControls', () => { name: 'Category', schema: VisFieldType.Categorical, column: 'category', - validValuesCount: 10, - uniqueValuesCount: 5, }, ], }, diff --git a/src/plugins/explore/public/components/visualizations/area/to_expression.test.ts b/src/plugins/explore/public/components/visualizations/area/to_expression.test.ts index 378da3b31f8e..3ef4f77993c8 100644 --- a/src/plugins/explore/public/components/visualizations/area/to_expression.test.ts +++ b/src/plugins/explore/public/components/visualizations/area/to_expression.test.ts @@ -27,8 +27,6 @@ describe('Area Chart to_expression', () => { name: 'Value', schema: VisFieldType.Numerical, column: 'value', - validValuesCount: 6, - uniqueValuesCount: 5, }; const mockDateColumn: VisColumn = { @@ -36,8 +34,6 @@ describe('Area Chart to_expression', () => { name: 'Date', schema: VisFieldType.Date, column: 'date', - validValuesCount: 6, - uniqueValuesCount: 3, }; const mockCategoricalColumns: VisColumn[] = [ @@ -46,16 +42,12 @@ describe('Area Chart to_expression', () => { name: 'Category', schema: VisFieldType.Categorical, column: 'category', - validValuesCount: 6, - uniqueValuesCount: 2, }, { id: 4, name: 'Category2', schema: VisFieldType.Categorical, column: 'category2', - validValuesCount: 6, - uniqueValuesCount: 2, }, ]; diff --git a/src/plugins/explore/public/components/visualizations/bar/bar_vis_options.test.tsx b/src/plugins/explore/public/components/visualizations/bar/bar_vis_options.test.tsx index cb0ac9387396..3863ec97aca2 100644 --- a/src/plugins/explore/public/components/visualizations/bar/bar_vis_options.test.tsx +++ b/src/plugins/explore/public/components/visualizations/bar/bar_vis_options.test.tsx @@ -28,8 +28,6 @@ const mockNumericalColumns: VisColumn[] = [ name: 'value 1', schema: VisFieldType.Numerical, column: 'x1', - validValuesCount: 6, - uniqueValuesCount: 6, }, ]; const mockCategoricalColumns: VisColumn[] = [ @@ -38,8 +36,6 @@ const mockCategoricalColumns: VisColumn[] = [ name: 'Category', column: 'category', schema: VisFieldType.Categorical, - validValuesCount: 100, - uniqueValuesCount: 10, }, ]; @@ -274,8 +270,6 @@ describe('BarVisStyleControls', () => { name: 'Color Category', schema: VisFieldType.Categorical, column: 'color', - validValuesCount: 10, - uniqueValuesCount: 5, }, ], }, @@ -301,8 +295,6 @@ describe('BarVisStyleControls', () => { name: 'Color Category', schema: VisFieldType.Categorical, column: 'color', - validValuesCount: 10, - uniqueValuesCount: 5, }, ], [AxisRole.FACET]: [ @@ -311,8 +303,6 @@ describe('BarVisStyleControls', () => { name: 'Facet Category', schema: VisFieldType.Categorical, column: 'facet', - validValuesCount: 10, - uniqueValuesCount: 5, }, ], }, @@ -338,8 +328,6 @@ describe('BarVisStyleControls', () => { name: 'Color Category', schema: VisFieldType.Categorical, column: 'color', - validValuesCount: 10, - uniqueValuesCount: 5, }, ], }, @@ -487,8 +475,6 @@ describe('BarVisStyleControls', () => { name: 'Date X', schema: VisFieldType.Date, column: 'column', - validValuesCount: 100, - uniqueValuesCount: 50, }, ], }, diff --git a/src/plugins/explore/public/components/visualizations/bar/to_expression.test.ts b/src/plugins/explore/public/components/visualizations/bar/to_expression.test.ts index e9cb325314bb..ab5deb9d977f 100644 --- a/src/plugins/explore/public/components/visualizations/bar/to_expression.test.ts +++ b/src/plugins/explore/public/components/visualizations/bar/to_expression.test.ts @@ -19,8 +19,6 @@ describe('bar to_expression', () => { name: 'Count', column: 'count', schema: VisFieldType.Numerical, - validValuesCount: 100, - uniqueValuesCount: 50, }; const mockCategoricalColumn: VisColumn = { @@ -28,8 +26,6 @@ describe('bar to_expression', () => { name: 'Category', column: 'category', schema: VisFieldType.Categorical, - validValuesCount: 100, - uniqueValuesCount: 10, }; const mockCategoricalColumn2: VisColumn = { @@ -37,8 +33,6 @@ describe('bar to_expression', () => { name: 'Category2', column: 'category2', schema: VisFieldType.Categorical, - validValuesCount: 100, - uniqueValuesCount: 10, }; const mockDateColumn: VisColumn = { @@ -46,8 +40,6 @@ describe('bar to_expression', () => { name: 'Date', column: 'date', schema: VisFieldType.Date, - validValuesCount: 100, - uniqueValuesCount: 50, }; const mockData = [ @@ -247,8 +239,6 @@ describe('bar to_expression', () => { name: 'sum', column: 'sum', schema: VisFieldType.Numerical, - validValuesCount: 100, - uniqueValuesCount: 50, }; test('creates a double numerical bar chart ECharts spec', () => { diff --git a/src/plugins/explore/public/components/visualizations/bar_gauge/bar_gauge_vis_options.test.tsx b/src/plugins/explore/public/components/visualizations/bar_gauge/bar_gauge_vis_options.test.tsx index d827c1716e8a..7c38918dd6ae 100644 --- a/src/plugins/explore/public/components/visualizations/bar_gauge/bar_gauge_vis_options.test.tsx +++ b/src/plugins/explore/public/components/visualizations/bar_gauge/bar_gauge_vis_options.test.tsx @@ -14,8 +14,6 @@ const mockNumericalColumns: VisColumn[] = [ name: 'Value', schema: VisFieldType.Numerical, column: 'value', - validValuesCount: 6, - uniqueValuesCount: 6, }, ]; const mockCategoricalColumns: VisColumn[] = [ @@ -24,8 +22,6 @@ const mockCategoricalColumns: VisColumn[] = [ name: 'Category', column: 'category', schema: VisFieldType.Categorical, - validValuesCount: 100, - uniqueValuesCount: 10, }, ]; diff --git a/src/plugins/explore/public/components/visualizations/chart_type_selector.test.tsx b/src/plugins/explore/public/components/visualizations/chart_type_selector.test.tsx index f8253ec1cec3..d2584840d2a8 100644 --- a/src/plugins/explore/public/components/visualizations/chart_type_selector.test.tsx +++ b/src/plugins/explore/public/components/visualizations/chart_type_selector.test.tsx @@ -36,8 +36,6 @@ describe('ChartTypeSelector', () => { name: 'count', schema: VisFieldType.Numerical, column: 'count', - validValuesCount: 100, - uniqueValuesCount: 50, }, ]; @@ -47,8 +45,6 @@ describe('ChartTypeSelector', () => { name: 'category', schema: VisFieldType.Categorical, column: 'category', - validValuesCount: 100, - uniqueValuesCount: 10, }, ]; @@ -58,8 +54,6 @@ describe('ChartTypeSelector', () => { name: 'timestamp', schema: VisFieldType.Date, column: 'timestamp', - validValuesCount: 100, - uniqueValuesCount: 80, }, ]; diff --git a/src/plugins/explore/public/components/visualizations/gauge/gauge_vis_options.test.tsx b/src/plugins/explore/public/components/visualizations/gauge/gauge_vis_options.test.tsx index d141beace2e0..08e388ef2e05 100644 --- a/src/plugins/explore/public/components/visualizations/gauge/gauge_vis_options.test.tsx +++ b/src/plugins/explore/public/components/visualizations/gauge/gauge_vis_options.test.tsx @@ -59,8 +59,6 @@ describe('GaugeVisStyleControls', () => { name: 'value', schema: VisFieldType.Numerical, column: 'field-1', - validValuesCount: 1, - uniqueValuesCount: 1, }, }, updateVisualization: jest.fn(), @@ -72,8 +70,6 @@ describe('GaugeVisStyleControls', () => { name: 'value', schema: VisFieldType.Numerical, column: 'field-1', - validValuesCount: 1, - uniqueValuesCount: 1, }, ], categoricalColumns: [], diff --git a/src/plugins/explore/public/components/visualizations/gauge/to_expression.test.ts b/src/plugins/explore/public/components/visualizations/gauge/to_expression.test.ts index a5dc520fa11a..ae3170fc3f34 100644 --- a/src/plugins/explore/public/components/visualizations/gauge/to_expression.test.ts +++ b/src/plugins/explore/public/components/visualizations/gauge/to_expression.test.ts @@ -13,8 +13,6 @@ describe('createGauge', () => { name: 'value', column: 'value', schema: VisFieldType.Numerical, - validValuesCount: 100, - uniqueValuesCount: 50, }; const mockData = [{ value: 10 }, { value: 20 }, { value: 30 }]; diff --git a/src/plugins/explore/public/components/visualizations/heatmap/heatmap_vis_options.test.tsx b/src/plugins/explore/public/components/visualizations/heatmap/heatmap_vis_options.test.tsx index 7a0b55ece927..0e7db6489df7 100644 --- a/src/plugins/explore/public/components/visualizations/heatmap/heatmap_vis_options.test.tsx +++ b/src/plugins/explore/public/components/visualizations/heatmap/heatmap_vis_options.test.tsx @@ -28,24 +28,18 @@ const mockNumericalColumns: VisColumn[] = [ name: 'value 1', schema: VisFieldType.Numerical, column: 'x1', - validValuesCount: 6, - uniqueValuesCount: 6, }, { id: 2, name: 'value 2', schema: VisFieldType.Numerical, column: 'x2', - validValuesCount: 6, - uniqueValuesCount: 6, }, { id: 3, name: 'value 3', schema: VisFieldType.Numerical, column: 'x3', - validValuesCount: 6, - uniqueValuesCount: 6, }, ]; diff --git a/src/plugins/explore/public/components/visualizations/heatmap/to_expression.test.ts b/src/plugins/explore/public/components/visualizations/heatmap/to_expression.test.ts index 41dffacc3dc5..a0a9ee7af0ec 100644 --- a/src/plugins/explore/public/components/visualizations/heatmap/to_expression.test.ts +++ b/src/plugins/explore/public/components/visualizations/heatmap/to_expression.test.ts @@ -21,16 +21,12 @@ describe('Heatmap to_expression', () => { name: 'Category1', schema: VisFieldType.Categorical, column: 'category1', - validValuesCount: 4, - uniqueValuesCount: 2, }, { id: 2, name: 'Category2', schema: VisFieldType.Categorical, column: 'category2', - validValuesCount: 4, - uniqueValuesCount: 2, }, ]; @@ -40,8 +36,6 @@ describe('Heatmap to_expression', () => { name: 'Value', schema: VisFieldType.Numerical, column: 'value', - validValuesCount: 4, - uniqueValuesCount: 4, }, ]; diff --git a/src/plugins/explore/public/components/visualizations/histogram/histogram_vis_options.test.tsx b/src/plugins/explore/public/components/visualizations/histogram/histogram_vis_options.test.tsx index 76841c0d15b6..aa881a309137 100644 --- a/src/plugins/explore/public/components/visualizations/histogram/histogram_vis_options.test.tsx +++ b/src/plugins/explore/public/components/visualizations/histogram/histogram_vis_options.test.tsx @@ -15,8 +15,6 @@ const mockNumericalColumns: VisColumn[] = [ name: 'value 1', schema: VisFieldType.Numerical, column: 'x1', - validValuesCount: 6, - uniqueValuesCount: 6, }, { @@ -24,8 +22,6 @@ const mockNumericalColumns: VisColumn[] = [ name: 'value 2', schema: VisFieldType.Numerical, column: 'x2', - validValuesCount: 6, - uniqueValuesCount: 6, }, ]; diff --git a/src/plugins/explore/public/components/visualizations/histogram/to_expression.test.ts b/src/plugins/explore/public/components/visualizations/histogram/to_expression.test.ts index 09dc0f2a1b75..7ddfdbcced26 100644 --- a/src/plugins/explore/public/components/visualizations/histogram/to_expression.test.ts +++ b/src/plugins/explore/public/components/visualizations/histogram/to_expression.test.ts @@ -13,8 +13,6 @@ describe('Histogram to_expression', () => { name: 'Count', column: 'count', schema: VisFieldType.Numerical, - validValuesCount: 100, - uniqueValuesCount: 50, }; const mockNumericalColumn2: VisColumn = { @@ -22,8 +20,6 @@ describe('Histogram to_expression', () => { name: 'Sum', column: 'sum', schema: VisFieldType.Numerical, - validValuesCount: 100, - uniqueValuesCount: 50, }; const mockData = [ diff --git a/src/plugins/explore/public/components/visualizations/line/line_vis_options.test.tsx b/src/plugins/explore/public/components/visualizations/line/line_vis_options.test.tsx index 28648f220423..6fa442536043 100644 --- a/src/plugins/explore/public/components/visualizations/line/line_vis_options.test.tsx +++ b/src/plugins/explore/public/components/visualizations/line/line_vis_options.test.tsx @@ -165,8 +165,6 @@ describe('LineVisStyleControls', () => { name: 'value', schema: VisFieldType.Numerical, column: 'field-1', - validValuesCount: 1, - uniqueValuesCount: 1, }; const mockCategoricalColumn = { @@ -174,8 +172,6 @@ describe('LineVisStyleControls', () => { name: 'category', schema: VisFieldType.Categorical, column: 'field-2', - validValuesCount: 1, - uniqueValuesCount: 1, }; const mockDateColumn = { @@ -183,8 +179,6 @@ describe('LineVisStyleControls', () => { name: 'date', schema: VisFieldType.Date, column: 'field-0', - validValuesCount: 1, - uniqueValuesCount: 1, }; const mockAxisColumnMappings: AxisColumnMappings = { diff --git a/src/plugins/explore/public/components/visualizations/line/to_expression.test.ts b/src/plugins/explore/public/components/visualizations/line/to_expression.test.ts index 45bca11000f0..2ed3288d167a 100644 --- a/src/plugins/explore/public/components/visualizations/line/to_expression.test.ts +++ b/src/plugins/explore/public/components/visualizations/line/to_expression.test.ts @@ -25,8 +25,6 @@ describe('Line Chart to_expression', () => { name: 'Date', schema: VisFieldType.Date, column: 'date', - validValuesCount: 3, - uniqueValuesCount: 3, }; const mockNumericColumn: VisColumn = { @@ -34,8 +32,6 @@ describe('Line Chart to_expression', () => { name: 'Value', schema: VisFieldType.Numerical, column: 'value', - validValuesCount: 3, - uniqueValuesCount: 3, }; const mockNumericColumn2: VisColumn = { @@ -43,8 +39,6 @@ describe('Line Chart to_expression', () => { name: 'Value2', schema: VisFieldType.Numerical, column: 'value2', - validValuesCount: 3, - uniqueValuesCount: 3, }; const mockCategoricalColumn: VisColumn = { @@ -52,8 +46,6 @@ describe('Line Chart to_expression', () => { name: 'Category', schema: VisFieldType.Categorical, column: 'category', - validValuesCount: 3, - uniqueValuesCount: 2, }; const mockCategoricalColumn2: VisColumn = { @@ -61,8 +53,6 @@ describe('Line Chart to_expression', () => { name: 'Category2', schema: VisFieldType.Categorical, column: 'category2', - validValuesCount: 3, - uniqueValuesCount: 2, }; const mockStyles = { diff --git a/src/plugins/explore/public/components/visualizations/metric/metric_utils.test.ts b/src/plugins/explore/public/components/visualizations/metric/metric_utils.test.ts index 560350836e32..77c6f96ae429 100644 --- a/src/plugins/explore/public/components/visualizations/metric/metric_utils.test.ts +++ b/src/plugins/explore/public/components/visualizations/metric/metric_utils.test.ts @@ -19,8 +19,6 @@ describe('metric_utils', () => { name: 'Test Metric', schema: VisFieldType.Numerical, column: 'value_field', - validValuesCount: 10, - uniqueValuesCount: 8, }; const createMockState = (overrides = {}): EChartsSpecState => ({ diff --git a/src/plugins/explore/public/components/visualizations/metric/metric_vis_options.test.tsx b/src/plugins/explore/public/components/visualizations/metric/metric_vis_options.test.tsx index a2579e0b52ca..5e7729cf9386 100644 --- a/src/plugins/explore/public/components/visualizations/metric/metric_vis_options.test.tsx +++ b/src/plugins/explore/public/components/visualizations/metric/metric_vis_options.test.tsx @@ -43,8 +43,6 @@ describe('MetricVisStyleControls', () => { name: 'value', schema: VisFieldType.Numerical, column: 'field-1', - validValuesCount: 1, - uniqueValuesCount: 1, }, ], }, @@ -57,8 +55,6 @@ describe('MetricVisStyleControls', () => { name: 'value', schema: VisFieldType.Numerical, column: 'field-1', - validValuesCount: 1, - uniqueValuesCount: 1, }, ], categoricalColumns: [], diff --git a/src/plugins/explore/public/components/visualizations/metric/to_expression.test.ts b/src/plugins/explore/public/components/visualizations/metric/to_expression.test.ts index 8f8fefcc75f9..aa21e9b8cb63 100644 --- a/src/plugins/explore/public/components/visualizations/metric/to_expression.test.ts +++ b/src/plugins/explore/public/components/visualizations/metric/to_expression.test.ts @@ -15,8 +15,6 @@ describe('Metric to_expression', () => { name: 'Value', schema: VisFieldType.Numerical, column: 'value', - validValuesCount: 2, - uniqueValuesCount: 2, }; const dateColumn: VisColumn = { @@ -24,8 +22,6 @@ describe('Metric to_expression', () => { name: 'Date', schema: VisFieldType.Date, column: 'date', - validValuesCount: 2, - uniqueValuesCount: 2, }; const mockStyles: MetricChartStyle = { diff --git a/src/plugins/explore/public/components/visualizations/pie/pie_vis_options.test.tsx b/src/plugins/explore/public/components/visualizations/pie/pie_vis_options.test.tsx index 7202740d69b7..e2eb298fd22c 100644 --- a/src/plugins/explore/public/components/visualizations/pie/pie_vis_options.test.tsx +++ b/src/plugins/explore/public/components/visualizations/pie/pie_vis_options.test.tsx @@ -81,8 +81,6 @@ describe('PieVisStyleControls', () => { name: 'value', schema: VisFieldType.Numerical, column: 'field-1', - validValuesCount: 1, - uniqueValuesCount: 1, }; const categoricalColumn = { @@ -90,8 +88,6 @@ describe('PieVisStyleControls', () => { name: 'category', schema: VisFieldType.Categorical, column: 'field-2', - validValuesCount: 1, - uniqueValuesCount: 1, }; const mockProps: PieVisStyleControlsProps = { diff --git a/src/plugins/explore/public/components/visualizations/pie/to_expression.test.ts b/src/plugins/explore/public/components/visualizations/pie/to_expression.test.ts index dce0a609855e..3207d79fae59 100644 --- a/src/plugins/explore/public/components/visualizations/pie/to_expression.test.ts +++ b/src/plugins/explore/public/components/visualizations/pie/to_expression.test.ts @@ -19,8 +19,6 @@ describe('Pie Chart to_expression', () => { name: 'Value', schema: VisFieldType.Numerical, column: 'value', - validValuesCount: 3, - uniqueValuesCount: 3, }; const categoricalColumn: VisColumn = { @@ -28,8 +26,6 @@ describe('Pie Chart to_expression', () => { name: 'Category', schema: VisFieldType.Categorical, column: 'category', - validValuesCount: 3, - uniqueValuesCount: 3, }; const mockStyles: PieChartStyle = { diff --git a/src/plugins/explore/public/components/visualizations/scatter/scatter_vis_options.test.tsx b/src/plugins/explore/public/components/visualizations/scatter/scatter_vis_options.test.tsx index 3d0a393f02db..0df05d8a65b0 100644 --- a/src/plugins/explore/public/components/visualizations/scatter/scatter_vis_options.test.tsx +++ b/src/plugins/explore/public/components/visualizations/scatter/scatter_vis_options.test.tsx @@ -28,16 +28,12 @@ const mockNumericalColumns: VisColumn[] = [ name: 'X Value', schema: VisFieldType.Numerical, column: 'x', - validValuesCount: 6, - uniqueValuesCount: 6, }, { id: 2, name: 'Y Value', schema: VisFieldType.Numerical, column: 'y', - validValuesCount: 6, - uniqueValuesCount: 6, }, ]; @@ -47,8 +43,6 @@ const mockCategoricalColumns: VisColumn[] = [ name: 'Category', schema: VisFieldType.Categorical, column: 'category', - validValuesCount: 6, - uniqueValuesCount: 2, }, ]; @@ -210,8 +204,6 @@ describe('ScatterVisStyleControls (updated structure)', () => { name: 'Category', schema: VisFieldType.Categorical, column: 'category', - validValuesCount: 6, - uniqueValuesCount: 2, }, }, }; @@ -225,8 +217,6 @@ describe('ScatterVisStyleControls (updated structure)', () => { name: 'Size Value', schema: VisFieldType.Numerical, column: 'size', - validValuesCount: 6, - uniqueValuesCount: 6, }, }, }; diff --git a/src/plugins/explore/public/components/visualizations/scatter/to_expression.test.ts b/src/plugins/explore/public/components/visualizations/scatter/to_expression.test.ts index 2985997a7d19..7f6dd19ceac9 100644 --- a/src/plugins/explore/public/components/visualizations/scatter/to_expression.test.ts +++ b/src/plugins/explore/public/components/visualizations/scatter/to_expression.test.ts @@ -24,24 +24,18 @@ describe('Scatter Chart to_expression', () => { name: 'X Value', schema: VisFieldType.Numerical, column: 'x', - validValuesCount: 3, - uniqueValuesCount: 3, }, { id: 2, name: 'Y Value', schema: VisFieldType.Numerical, column: 'y', - validValuesCount: 3, - uniqueValuesCount: 3, }, { id: 3, name: 'Size', schema: VisFieldType.Numerical, column: 'size', - validValuesCount: 3, - uniqueValuesCount: 3, }, ]; @@ -50,8 +44,6 @@ describe('Scatter Chart to_expression', () => { name: 'Category', schema: VisFieldType.Categorical, column: 'category', - validValuesCount: 3, - uniqueValuesCount: 2, }; const mockStyles: ScatterChartStyle = { diff --git a/src/plugins/explore/public/components/visualizations/split_field_selector.test.tsx b/src/plugins/explore/public/components/visualizations/split_field_selector.test.tsx index 9ebf182c10e9..c1c961b87b25 100644 --- a/src/plugins/explore/public/components/visualizations/split_field_selector.test.tsx +++ b/src/plugins/explore/public/components/visualizations/split_field_selector.test.tsx @@ -14,16 +14,12 @@ describe('SplitFieldSelector', () => { name: 'region', schema: VisFieldType.Categorical, column: 'region', - validValuesCount: 100, - uniqueValuesCount: 5, }, { id: 2, name: 'status', schema: VisFieldType.Categorical, column: 'status', - validValuesCount: 100, - uniqueValuesCount: 3, }, ]; @@ -33,8 +29,6 @@ describe('SplitFieldSelector', () => { name: 'count', schema: VisFieldType.Numerical, column: 'count', - validValuesCount: 100, - uniqueValuesCount: 50, }, ]; diff --git a/src/plugins/explore/public/components/visualizations/state_timeline/state_timeline_vis_options.test.tsx b/src/plugins/explore/public/components/visualizations/state_timeline/state_timeline_vis_options.test.tsx index 1569b22429f3..7a5e4a5e0a35 100644 --- a/src/plugins/explore/public/components/visualizations/state_timeline/state_timeline_vis_options.test.tsx +++ b/src/plugins/explore/public/components/visualizations/state_timeline/state_timeline_vis_options.test.tsx @@ -18,8 +18,6 @@ const mockNumericalColumns: VisColumn[] = [ name: 'value 1', schema: VisFieldType.Numerical, column: 'v1', - validValuesCount: 6, - uniqueValuesCount: 6, }, ]; @@ -29,16 +27,12 @@ const mockCateColumns: VisColumn[] = [ name: 'cate 1', schema: VisFieldType.Categorical, column: 'c1', - validValuesCount: 6, - uniqueValuesCount: 6, }, { id: 2, name: 'cate 2', schema: VisFieldType.Categorical, column: 'c2', - validValuesCount: 6, - uniqueValuesCount: 6, }, ]; @@ -48,8 +42,6 @@ const mockTimeColumns: VisColumn[] = [ name: 'date 1', schema: VisFieldType.Date, column: 'd1', - validValuesCount: 6, - uniqueValuesCount: 6, }, ]; diff --git a/src/plugins/explore/public/components/visualizations/state_timeline/to_expression.test.ts b/src/plugins/explore/public/components/visualizations/state_timeline/to_expression.test.ts index 8089252f7c6e..57ed6d33c38a 100644 --- a/src/plugins/explore/public/components/visualizations/state_timeline/to_expression.test.ts +++ b/src/plugins/explore/public/components/visualizations/state_timeline/to_expression.test.ts @@ -23,8 +23,6 @@ describe('State Timeline to_expression', () => { name: 'Time', schema: VisFieldType.Date, column: 'timestamp', - validValuesCount: 3, - uniqueValuesCount: 3, }; const mockCateColumn1: VisColumn = { @@ -32,8 +30,6 @@ describe('State Timeline to_expression', () => { name: 'Group', schema: VisFieldType.Categorical, column: 'group', - validValuesCount: 3, - uniqueValuesCount: 2, }; const mockCateColumn2: VisColumn = { @@ -41,8 +37,6 @@ describe('State Timeline to_expression', () => { name: 'Color', schema: VisFieldType.Categorical, column: 'color', - validValuesCount: 3, - uniqueValuesCount: 2, }; const mockNumColumn: VisColumn = { @@ -50,8 +44,6 @@ describe('State Timeline to_expression', () => { name: 'NumValue', schema: VisFieldType.Numerical, column: 'numValue', - validValuesCount: 3, - uniqueValuesCount: 3, }; const mockStyles = { diff --git a/src/plugins/explore/public/components/visualizations/style_panel/axes/axes_selector.test.tsx b/src/plugins/explore/public/components/visualizations/style_panel/axes/axes_selector.test.tsx index 1c3c6e2fa575..47b3ed4eb279 100644 --- a/src/plugins/explore/public/components/visualizations/style_panel/axes/axes_selector.test.tsx +++ b/src/plugins/explore/public/components/visualizations/style_panel/axes/axes_selector.test.tsx @@ -41,16 +41,12 @@ describe('AxesSelectPanel', () => { name: 'count', schema: VisFieldType.Numerical, column: 'count', - validValuesCount: 100, - uniqueValuesCount: 50, }, { id: 2, name: 'price', schema: VisFieldType.Numerical, column: 'price', - validValuesCount: 100, - uniqueValuesCount: 60, }, ]; @@ -60,8 +56,6 @@ describe('AxesSelectPanel', () => { name: 'category', schema: VisFieldType.Categorical, column: 'category', - validValuesCount: 100, - uniqueValuesCount: 10, }, ]; @@ -71,8 +65,6 @@ describe('AxesSelectPanel', () => { name: 'timestamp', schema: VisFieldType.Date, column: 'timestamp', - validValuesCount: 100, - uniqueValuesCount: 80, }, ]; diff --git a/src/plugins/explore/public/components/visualizations/style_panel/axes/standard_axes_options.test.tsx b/src/plugins/explore/public/components/visualizations/style_panel/axes/standard_axes_options.test.tsx index 55d6ee67387a..c3325ffdec26 100644 --- a/src/plugins/explore/public/components/visualizations/style_panel/axes/standard_axes_options.test.tsx +++ b/src/plugins/explore/public/components/visualizations/style_panel/axes/standard_axes_options.test.tsx @@ -108,16 +108,12 @@ describe('AllAxesOptions', () => { column: 'category', id: 0, schema: VisFieldType.Categorical, - validValuesCount: 1, - uniqueValuesCount: 1, }, [AxisRole.Y]: { name: 'value', column: 'value', id: 1, schema: VisFieldType.Numerical, - validValuesCount: 1, - uniqueValuesCount: 1, }, }, showFullTimeRange: false, @@ -328,8 +324,6 @@ describe('AllAxesOptions', () => { name: 'category', column: 'category', schema: VisFieldType.Categorical, - validValuesCount: 10, - uniqueValuesCount: 5, }, }; diff --git a/src/plugins/explore/public/components/visualizations/table/data_link_options.test.tsx b/src/plugins/explore/public/components/visualizations/table/data_link_options.test.tsx index ea831702f756..5735cec4ae5a 100644 --- a/src/plugins/explore/public/components/visualizations/table/data_link_options.test.tsx +++ b/src/plugins/explore/public/components/visualizations/table/data_link_options.test.tsx @@ -14,8 +14,6 @@ const numericalColumns: VisColumn[] = [ column: 'num1', name: 'Num1', schema: VisFieldType.Numerical, - validValuesCount: 0, - uniqueValuesCount: 0, }, ]; @@ -25,8 +23,6 @@ const categoricalColumns: VisColumn[] = [ column: 'cat1', name: 'Cat1', schema: VisFieldType.Categorical, - validValuesCount: 0, - uniqueValuesCount: 0, }, ]; @@ -36,8 +32,6 @@ const dateColumns: VisColumn[] = [ column: 'date1', name: 'Date1', schema: VisFieldType.Date, - validValuesCount: 0, - uniqueValuesCount: 0, }, ]; diff --git a/src/plugins/explore/public/components/visualizations/table/table_vis.test.tsx b/src/plugins/explore/public/components/visualizations/table/table_vis.test.tsx index 4104a5d75fdb..3a67d30d8512 100644 --- a/src/plugins/explore/public/components/visualizations/table/table_vis.test.tsx +++ b/src/plugins/explore/public/components/visualizations/table/table_vis.test.tsx @@ -191,16 +191,12 @@ describe('TableVis', () => { name: 'Column 1', column: 'column1', schema: VisFieldType.Numerical, - validValuesCount: 2, - uniqueValuesCount: 2, }, { id: 2, name: 'Column 2', column: 'column2', schema: VisFieldType.Categorical, - validValuesCount: 2, - uniqueValuesCount: 2, }, ]; const mockRows = [ diff --git a/src/plugins/explore/public/components/visualizations/table/table_vis_filter.test.tsx b/src/plugins/explore/public/components/visualizations/table/table_vis_filter.test.tsx index 235666aca171..2509ee4897fe 100644 --- a/src/plugins/explore/public/components/visualizations/table/table_vis_filter.test.tsx +++ b/src/plugins/explore/public/components/visualizations/table/table_vis_filter.test.tsx @@ -13,8 +13,6 @@ describe('TableColumnHeader', () => { column: 'test_col', schema: VisFieldType.Categorical, id: 1, - validValuesCount: 3, - uniqueValuesCount: 3, }; const mockSetFilters = jest.fn(); @@ -67,8 +65,6 @@ describe('ColumnFilterContent', () => { column: 'test_col', schema: VisFieldType.Categorical, id: 1, - validValuesCount: 3, - uniqueValuesCount: 3, }; const mockOnApply = jest.fn(); diff --git a/src/plugins/explore/public/components/visualizations/table/table_vis_footer_options.test.tsx b/src/plugins/explore/public/components/visualizations/table/table_vis_footer_options.test.tsx index d83aacc68925..e1250876b818 100644 --- a/src/plugins/explore/public/components/visualizations/table/table_vis_footer_options.test.tsx +++ b/src/plugins/explore/public/components/visualizations/table/table_vis_footer_options.test.tsx @@ -71,16 +71,12 @@ const numericalColumns: VisColumn[] = [ name: 'Price', schema: VisFieldType.Numerical, column: 'price', - validValuesCount: 100, - uniqueValuesCount: 100, }, { id: 2, name: 'Count', schema: VisFieldType.Numerical, column: 'count', - validValuesCount: 100, - uniqueValuesCount: 100, }, ]; @@ -90,8 +86,6 @@ const categoricalColumns: VisColumn[] = [ name: 'Category', schema: VisFieldType.Categorical, column: 'category', - validValuesCount: 50, - uniqueValuesCount: 10, }, ]; diff --git a/src/plugins/explore/public/components/visualizations/table/table_vis_options.test.tsx b/src/plugins/explore/public/components/visualizations/table/table_vis_options.test.tsx index e4a02f413dc8..853eafa80c9a 100644 --- a/src/plugins/explore/public/components/visualizations/table/table_vis_options.test.tsx +++ b/src/plugins/explore/public/components/visualizations/table/table_vis_options.test.tsx @@ -33,8 +33,6 @@ describe('TableVisStyleControls', () => { name: 'Value', schema: VisFieldType.Numerical, column: 'field-1', - validValuesCount: 10, - uniqueValuesCount: 5, }; const mockCategoricalColumn: VisColumn = { @@ -42,8 +40,6 @@ describe('TableVisStyleControls', () => { name: 'Category', schema: VisFieldType.Categorical, column: 'field-2', - validValuesCount: 10, - uniqueValuesCount: 3, }; const mockDateColumn: VisColumn = { @@ -51,8 +47,6 @@ describe('TableVisStyleControls', () => { name: 'Date', schema: VisFieldType.Date, column: 'field-3', - validValuesCount: 10, - uniqueValuesCount: 10, }; const defaultStyleOptions: TableChartStyle = { diff --git a/src/plugins/explore/public/components/visualizations/types.ts b/src/plugins/explore/public/components/visualizations/types.ts index 659cc42934dc..80f2476e7994 100644 --- a/src/plugins/explore/public/components/visualizations/types.ts +++ b/src/plugins/explore/public/components/visualizations/types.ts @@ -2,7 +2,7 @@ * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ - +import type { EChartsOption } from 'echarts'; import { ChartStyles } from '../visualizations/utils/use_visualization_types'; import { ChartConfig } from './visualization_builder.types'; @@ -26,8 +26,6 @@ export interface VisColumn { name: string; schema: VisFieldType; column: string; - validValuesCount: number; - uniqueValuesCount: number; } export enum VisFieldType { @@ -293,7 +291,7 @@ export interface ConnectNullValuesOption { } export interface RendererSpecConfig { - spec?: echarts.EChartsOption; + spec?: EChartsOption; name?: string; data: Array>; } diff --git a/src/plugins/explore/public/components/visualizations/utils/axis.test.ts b/src/plugins/explore/public/components/visualizations/utils/axis.test.ts index c00c0d702ed6..6f6bc14115d4 100644 --- a/src/plugins/explore/public/components/visualizations/utils/axis.test.ts +++ b/src/plugins/explore/public/components/visualizations/utils/axis.test.ts @@ -18,8 +18,6 @@ describe('getAxisConfigByColumnMapping', () => { name: 'test_column', schema: VisFieldType.Numerical, column: 'test_column', - validValuesCount: 100, - uniqueValuesCount: 50, }; // Mock StandardAxes configurations diff --git a/src/plugins/explore/public/components/visualizations/utils/normalize_result_rows.ts b/src/plugins/explore/public/components/visualizations/utils/normalize_result_rows.ts index 9a75b381c24b..59e920fdda70 100644 --- a/src/plugins/explore/public/components/visualizations/utils/normalize_result_rows.ts +++ b/src/plugins/explore/public/components/visualizations/utils/normalize_result_rows.ts @@ -16,9 +16,7 @@ export const normalizeResultRows = ( id: index, schema: FIELD_TYPE_MAP[field.type || ''] || VisFieldType.Unknown, name: field.name || '', - column: `field-${index}`, - validValuesCount: 0, - uniqueValuesCount: 0, + column: field.name || '', }; }); @@ -32,30 +30,12 @@ export const normalizeResultRows = ( return transformedRow; }); - // count validValues and uniqueValues - const columnsWithStats: VisColumn[] = columns.map((column) => { - const values = transformedData.map((row) => row[column.column]); - const validValues = values.filter((v) => v !== null && v !== undefined); - const uniqueValues = new Set(validValues); - return { - ...column, - validValuesCount: validValues.length ?? 0, - uniqueValuesCount: uniqueValues.size ?? 0, - }; - }); - - const numericalColumns = columnsWithStats.filter( - (column) => column.schema === VisFieldType.Numerical - ); - const categoricalColumns = columnsWithStats.filter( - (column) => column.schema === VisFieldType.Categorical - ); - const dateColumns = columnsWithStats.filter((column) => column.schema === VisFieldType.Date); + const numericalColumns = columns.filter((column) => column.schema === VisFieldType.Numerical); + const categoricalColumns = columns.filter((column) => column.schema === VisFieldType.Categorical); + const dateColumns = columns.filter((column) => column.schema === VisFieldType.Date); // unknownColumns should only be used for table display, not for the auto-vis logic - const unknownColumns = columnsWithStats.filter( - (column) => column.schema === VisFieldType.Unknown - ); + const unknownColumns = columns.filter((column) => column.schema === VisFieldType.Unknown); return { transformedData, numericalColumns, categoricalColumns, dateColumns, unknownColumns }; }; diff --git a/src/plugins/explore/public/components/visualizations/utils/utils.test.ts b/src/plugins/explore/public/components/visualizations/utils/utils.test.ts index db0e0b8d1518..30588b705d7e 100644 --- a/src/plugins/explore/public/components/visualizations/utils/utils.test.ts +++ b/src/plugins/explore/public/components/visualizations/utils/utils.test.ts @@ -13,8 +13,6 @@ describe('applyAxisStyling', () => { name: 'X Value', schema: VisFieldType.Numerical, column: 'x', - validValuesCount: 6, - uniqueValuesCount: 6, }; const defaultAxisStyle = { @@ -131,8 +129,6 @@ describe('getSchemaByAxis', () => { id: 1, name: 'Test Axis', column: 'test', - validValuesCount: 10, - uniqueValuesCount: 10, }; it('returns quantitative for Numerical schema', () => { diff --git a/src/plugins/explore/public/components/visualizations/visualization_builder.test.ts b/src/plugins/explore/public/components/visualizations/visualization_builder.test.ts index 88e30663d70e..6914a624ade7 100644 --- a/src/plugins/explore/public/components/visualizations/visualization_builder.test.ts +++ b/src/plugins/explore/public/components/visualizations/visualization_builder.test.ts @@ -11,11 +11,7 @@ import { VisualizationRegistryService } from '../../services/visualization_regis // Register all built-in visualizations into the singleton registry new VisualizationRegistryService(); -const createMockVisColumns = ( - size: number, - type: VisFieldType, - options = { validValuesCount: 1, uniqueValuesCount: 1 } -) => { +const createMockVisColumns = (size: number, type: VisFieldType) => { const result: VisColumn[] = []; for (let i = 0; i < size; i++) { result.push({ @@ -23,7 +19,6 @@ const createMockVisColumns = ( name: `name-${type}-${i}`, schema: type, column: `field-${type}-${i}`, - ...options, }); } return result; @@ -322,10 +317,7 @@ describe('VisualizationBuilder', () => { // Multi data points won't work with metric builder.onDataChange({ - numericalColumns: createMockVisColumns(2, VisFieldType.Numerical, { - validValuesCount: 2, - uniqueValuesCount: 2, - }), + numericalColumns: createMockVisColumns(2, VisFieldType.Numerical), categoricalColumns: [], dateColumns: [], transformedData: [], @@ -357,10 +349,7 @@ describe('VisualizationBuilder', () => { }); builder.onDataChange({ - numericalColumns: createMockVisColumns(2, VisFieldType.Numerical, { - validValuesCount: 2, - uniqueValuesCount: 2, - }), + numericalColumns: createMockVisColumns(2, VisFieldType.Numerical), categoricalColumns: [], dateColumns: [], transformedData: [], @@ -392,10 +381,7 @@ describe('VisualizationBuilder', () => { }); builder.onDataChange({ - numericalColumns: createMockVisColumns(2, VisFieldType.Numerical, { - validValuesCount: 2, - uniqueValuesCount: 2, - }), + numericalColumns: createMockVisColumns(2, VisFieldType.Numerical), categoricalColumns: [], dateColumns: [], transformedData: [], @@ -569,29 +555,25 @@ describe('VisualizationBuilder', () => { expect(builder.data$.value).toEqual({ categoricalColumns: [ { - column: 'field-1', + column: 'name', id: 1, name: 'name', schema: 'categorical', - uniqueValuesCount: 1, - validValuesCount: 1, }, ], dateColumns: [], numericalColumns: [ { - column: 'field-0', + column: 'age', id: 0, name: 'age', schema: 'numerical', - uniqueValuesCount: 1, - validValuesCount: 1, }, ], transformedData: [ { - 'field-0': 10, - 'field-1': 'name', + age: 10, + name: 'name', }, ], unknownColumns: [], diff --git a/src/plugins/explore/public/components/visualizations/visualization_builder_utils.test.ts b/src/plugins/explore/public/components/visualizations/visualization_builder_utils.test.ts index 424fba1f1b3b..e54ff8a3b902 100644 --- a/src/plugins/explore/public/components/visualizations/visualization_builder_utils.test.ts +++ b/src/plugins/explore/public/components/visualizations/visualization_builder_utils.test.ts @@ -50,24 +50,18 @@ describe('visualization_container_utils', () => { name: 'count', schema: VisFieldType.Numerical, column: 'count', - validValuesCount: 100, - uniqueValuesCount: 50, }, { id: 2, name: 'category', schema: VisFieldType.Categorical, column: 'category', - validValuesCount: 100, - uniqueValuesCount: 10, }, { id: 3, name: 'timestamp', schema: VisFieldType.Date, column: 'timestamp', - validValuesCount: 100, - uniqueValuesCount: 80, }, ]; @@ -224,8 +218,6 @@ describe('visualization_container_utils', () => { name: 'average', schema: VisFieldType.Numerical, column: 'average', - validValuesCount: 100, - uniqueValuesCount: 30, }, ]; diff --git a/src/plugins/explore/public/components/visualizations/visualization_container.test.tsx b/src/plugins/explore/public/components/visualizations/visualization_container.test.tsx index afc2c20465d1..2a120360db1e 100644 --- a/src/plugins/explore/public/components/visualizations/visualization_container.test.tsx +++ b/src/plugins/explore/public/components/visualizations/visualization_container.test.tsx @@ -53,8 +53,6 @@ const mockVisualizationBuilder = { name: 'count', schema: VisFieldType.Numerical, column: 'count', - validValuesCount: 2, - uniqueValuesCount: 2, }, ], categoricalColumns: [ @@ -63,8 +61,6 @@ const mockVisualizationBuilder = { name: 'field1', schema: VisFieldType.Categorical, column: 'field1', - validValuesCount: 2, - uniqueValuesCount: 2, }, ], dateColumns: [], diff --git a/src/plugins/explore/public/components/visualizations/visualization_registry.test.ts b/src/plugins/explore/public/components/visualizations/visualization_registry.test.ts index c02ac910080f..ae9727541243 100644 --- a/src/plugins/explore/public/components/visualizations/visualization_registry.test.ts +++ b/src/plugins/explore/public/components/visualizations/visualization_registry.test.ts @@ -90,24 +90,18 @@ describe('VisualizationRegistry', () => { name: 'value', schema: VisFieldType.Numerical, column: 'value', - validValuesCount: 1, - uniqueValuesCount: 1, }; const catCol: VisColumn = { id: 2, name: 'category', schema: VisFieldType.Categorical, column: 'category', - validValuesCount: 1, - uniqueValuesCount: 1, }; const dateCol: VisColumn = { id: 3, name: 'timestamp', schema: VisFieldType.Date, column: 'timestamp', - validValuesCount: 1, - uniqueValuesCount: 1, }; it('should return exact matches when column counts match rule mappings', () => { @@ -227,8 +221,6 @@ describe('VisualizationRegistry', () => { name: 'value', schema: VisFieldType.Numerical, column: 'value', - validValuesCount: 1, - uniqueValuesCount: 1, }; it('should return null when no rules match', () => { @@ -283,16 +275,12 @@ describe('VisualizationRegistry', () => { name: 'count', schema: VisFieldType.Numerical, column: 'count', - validValuesCount: 1, - uniqueValuesCount: 1, }; const catCol: VisColumn = { id: 2, name: 'category', schema: VisFieldType.Categorical, column: 'category', - validValuesCount: 1, - uniqueValuesCount: 1, }; const result = registry.getAxesMappingByRule(rule, [numCol], [catCol], []); @@ -327,24 +315,18 @@ describe('VisualizationRegistry', () => { name: 'revenue', schema: VisFieldType.Numerical, column: 'revenue', - validValuesCount: 1, - uniqueValuesCount: 1, }; const numCol2: VisColumn = { id: 2, name: 'cost', schema: VisFieldType.Numerical, column: 'cost', - validValuesCount: 1, - uniqueValuesCount: 1, }; const dateCol: VisColumn = { id: 3, name: 'timestamp', schema: VisFieldType.Date, column: 'timestamp', - validValuesCount: 1, - uniqueValuesCount: 1, }; const result = registry.getAxesMappingByRule(rule, [numCol1, numCol2], [], [dateCol]); @@ -367,8 +349,6 @@ describe('VisualizationRegistry', () => { name: 'timestamp', schema: VisFieldType.Date, column: 'timestamp', - validValuesCount: 1, - uniqueValuesCount: 1, }; const result = registry.getAxesMappingByRule(rule, [], [], [dateCol]); @@ -382,24 +362,18 @@ describe('VisualizationRegistry', () => { name: 'value', schema: VisFieldType.Numerical, column: 'value', - validValuesCount: 1, - uniqueValuesCount: 1, }; const catCol: VisColumn = { id: 2, name: 'category', schema: VisFieldType.Categorical, column: 'category', - validValuesCount: 1, - uniqueValuesCount: 1, }; const dateCol: VisColumn = { id: 3, name: 'timestamp', schema: VisFieldType.Date, column: 'timestamp', - validValuesCount: 1, - uniqueValuesCount: 1, }; const allColumns = [numCol, catCol, dateCol]; @@ -510,8 +484,6 @@ describe('VisualizationRegistry', () => { name: 'value2', schema: VisFieldType.Numerical, column: 'value2', - validValuesCount: 1, - uniqueValuesCount: 1, }; const rule = makeRule(100, [ { @@ -552,8 +524,6 @@ describe('VisualizationRegistry', () => { name: 'value2', schema: VisFieldType.Numerical, column: 'value2', - validValuesCount: 1, - uniqueValuesCount: 1, }; const rule = makeRule(100, [ { @@ -600,8 +570,6 @@ describe('VisualizationRegistry', () => { name, schema, column: name, - validValuesCount: 10, - uniqueValuesCount: 5, }); it('should return the saved mapping when all fields still exist and types match', () => { diff --git a/src/plugins/explore/public/components/visualizations/visualization_render.test.tsx b/src/plugins/explore/public/components/visualizations/visualization_render.test.tsx index 874002efa40e..35ed2105d543 100644 --- a/src/plugins/explore/public/components/visualizations/visualization_render.test.tsx +++ b/src/plugins/explore/public/components/visualizations/visualization_render.test.tsx @@ -65,8 +65,6 @@ describe('VisualizationRender', () => { name: 'count', schema: VisFieldType.Numerical, column: 'count', - validValuesCount: 2, - uniqueValuesCount: 2, }, ], categoricalColumns: [ @@ -75,8 +73,6 @@ describe('VisualizationRender', () => { name: 'field1', schema: VisFieldType.Categorical, column: 'field1', - validValuesCount: 2, - uniqueValuesCount: 2, }, ], dateColumns: [], From 1076784ebebf415cf9d260f3218649162728463f Mon Sep 17 00:00:00 2001 From: Tomasz Kania Date: Thu, 25 Jun 2026 06:34:02 +0200 Subject: [PATCH 22/88] chore(deps): babel 7.29.7 (#12271) Signed-off-by: Tomasz Kania --- cypress.config.ts | 4 +- package.json | 14 +- .../package.json | 2 +- packages/osd-analytics/package.json | 2 +- packages/osd-babel-preset/common_preset.js | 4 - packages/osd-babel-preset/package.json | 14 +- packages/osd-dev-utils/package.json | 2 +- .../osd-eslint-plugin-eslint/package.json | 2 +- packages/osd-i18n/package.json | 4 +- packages/osd-interpreter/package.json | 10 +- packages/osd-monaco/package.json | 12 +- packages/osd-opensearch/package.json | 2 +- packages/osd-optimizer/package.json | 4 +- packages/osd-pm/package.json | 6 +- packages/osd-test/package.json | 2 +- yarn.lock | 1711 ++++++++--------- 16 files changed, 869 insertions(+), 926 deletions(-) diff --git a/cypress.config.ts b/cypress.config.ts index ca4f30bca90a..90df19913b0a 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -112,8 +112,8 @@ function setupNodeEvents( '@babel/preset-typescript', ], plugins: [ - '@babel/plugin-proposal-optional-chaining', - '@babel/plugin-proposal-nullish-coalescing-operator', + '@babel/plugin-transform-optional-chaining', + '@babel/plugin-transform-nullish-coalescing-operator', ], }, }, diff --git a/package.json b/package.json index b38f80ee21c0..944849e0b209 100644 --- a/package.json +++ b/package.json @@ -311,13 +311,13 @@ "better-sqlite3": "^12.9.0" }, "devDependencies": { - "@babel/core": "^7.22.9", - "@babel/eslint-parser": "^7.25.0", - "@babel/parser": "^7.22.9", - "@babel/plugin-transform-class-static-block": "^7.24.4", - "@babel/plugin-transform-numeric-separator": "^7.25.9", - "@babel/register": "^7.22.9", - "@babel/types": "^7.22.9", + "@babel/core": "^7.29.7", + "@babel/eslint-parser": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/plugin-transform-class-static-block": "^7.29.7", + "@babel/plugin-transform-numeric-separator": "^7.29.7", + "@babel/register": "^7.29.7", + "@babel/types": "^7.29.7", "@cfaester/enzyme-adapter-react-18": "^0.8.0", "@cypress/webpack-preprocessor": "^6.0.1", "@elastic/apm-rum": "^5.6.1", diff --git a/packages/opensearch-eslint-config-opensearch-dashboards/package.json b/packages/opensearch-eslint-config-opensearch-dashboards/package.json index cd97f2990ae8..756198d79022 100644 --- a/packages/opensearch-eslint-config-opensearch-dashboards/package.json +++ b/packages/opensearch-eslint-config-opensearch-dashboards/package.json @@ -20,7 +20,7 @@ "peerDependencies": { "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.18.0", - "@babel/eslint-parser": "^7.25.0", + "@babel/eslint-parser": "^7.29.7", "eslint": "^8.57.1", "eslint-plugin-babel": "^5.3.1", "eslint-plugin-ban": "^1.4.0", diff --git a/packages/osd-analytics/package.json b/packages/osd-analytics/package.json index 4f7cd16db15d..d95e816edbb0 100644 --- a/packages/osd-analytics/package.json +++ b/packages/osd-analytics/package.json @@ -14,7 +14,7 @@ "osd:watch": "../../scripts/use_node scripts/build --source-maps --watch" }, "devDependencies": { - "@babel/cli": "^7.22.9", + "@babel/cli": "^7.29.7", "@osd/dev-utils": "1.0.0", "@osd/babel-preset": "1.0.0" } diff --git a/packages/osd-babel-preset/common_preset.js b/packages/osd-babel-preset/common_preset.js index d2c10ffb61dd..db40a4b7ac06 100644 --- a/packages/osd-babel-preset/common_preset.js +++ b/packages/osd-babel-preset/common_preset.js @@ -33,18 +33,14 @@ const plugins = [ require.resolve('@babel/plugin-transform-private-methods'), require.resolve('babel-plugin-add-module-exports'), - // Optional Chaining proposal is stage 4 (https://github.com/tc39/proposal-optional-chaining) // Need this since we are using TypeScript 3.7+ require.resolve('@babel/plugin-transform-optional-chaining'), - // Nullish coalescing proposal is stage 4 (https://github.com/tc39/proposal-nullish-coalescing) // Need this since we are using TypeScript 3.7+ require.resolve('@babel/plugin-transform-nullish-coalescing-operator'), - // Proposal is merged into ECMA-262 (https://github.com/tc39/proposal-export-ns-from) // Need this since we are using TypeScript 3.8+ require.resolve('@babel/plugin-transform-export-namespace-from'), - // Proposal is on stage 4 (https://github.com/tc39/proposal-logical-assignment) require.resolve('@babel/plugin-transform-logical-assignment-operators'), ]; diff --git a/packages/osd-babel-preset/package.json b/packages/osd-babel-preset/package.json index c71fe6b64712..e315b37036a9 100644 --- a/packages/osd-babel-preset/package.json +++ b/packages/osd-babel-preset/package.json @@ -7,13 +7,13 @@ "devOnly": true }, "dependencies": { - "@babel/plugin-transform-export-namespace-from": "^7.22.9", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.9", - "@babel/plugin-transform-optional-chaining": "^7.22.9", - "@babel/preset-env": "^7.22.9", - "@babel/preset-react": "^7.22.9", - "@babel/preset-typescript": "^7.22.9", + "@babel/plugin-transform-export-namespace-from": "^7.29.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.29.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7", + "@babel/preset-env": "^7.29.7", + "@babel/preset-react": "^7.29.7", + "@babel/preset-typescript": "^7.29.7", "babel-plugin-add-module-exports": "^1.0.4", "babel-plugin-module-resolver": "^5.0.1", "babel-plugin-styled-components": "^2.0.2", diff --git a/packages/osd-dev-utils/package.json b/packages/osd-dev-utils/package.json index 87d75e66c3d4..bc8c5f95bd71 100644 --- a/packages/osd-dev-utils/package.json +++ b/packages/osd-dev-utils/package.json @@ -13,7 +13,7 @@ "devOnly": true }, "dependencies": { - "@babel/core": "^7.22.9", + "@babel/core": "^7.29.7", "@osd/utils": "1.0.0", "axios": "^1.17.0", "chalk": "^4.1.0", diff --git a/packages/osd-eslint-plugin-eslint/package.json b/packages/osd-eslint-plugin-eslint/package.json index ec88ac00698b..65b079705a9c 100644 --- a/packages/osd-eslint-plugin-eslint/package.json +++ b/packages/osd-eslint-plugin-eslint/package.json @@ -8,7 +8,7 @@ }, "peerDependencies": { "eslint": "^8.57.1", - "@babel/eslint-parser": "^7.25.0" + "@babel/eslint-parser": "^7.29.7" }, "dependencies": { "micromatch": "^4.0.7", diff --git a/packages/osd-i18n/package.json b/packages/osd-i18n/package.json index 73b531413f5e..0eae8aa9c661 100644 --- a/packages/osd-i18n/package.json +++ b/packages/osd-i18n/package.json @@ -7,8 +7,8 @@ "license": "Apache-2.0", "private": true, "devDependencies": { - "@babel/cli": "^7.22.9", - "@babel/core": "^7.22.9", + "@babel/cli": "^7.29.7", + "@babel/core": "^7.29.7", "@osd/babel-preset": "1.0.0", "@osd/dev-utils": "1.0.0", "@types/intl-relativeformat": "^2.1.0", diff --git a/packages/osd-interpreter/package.json b/packages/osd-interpreter/package.json index 6d5d80246d3f..7233d3cc3a3b 100644 --- a/packages/osd-interpreter/package.json +++ b/packages/osd-interpreter/package.json @@ -9,16 +9,16 @@ "osd:watch": "../../scripts/use_node scripts/build --dev --watch" }, "dependencies": { - "@babel/runtime": "^7.26.10", + "@babel/runtime": "^7.29.7", "@osd/i18n": "1.0.0", "lodash": "^4.18.0", "uuid": "3.3.2" }, "devDependencies": { - "@babel/cli": "^7.22.9", - "@babel/core": "^7.22.9", - "@babel/plugin-transform-modules-commonjs": "^7.22.9", - "@babel/plugin-transform-runtime": "^7.22.9", + "@babel/cli": "^7.29.7", + "@babel/core": "^7.29.7", + "@babel/plugin-transform-modules-commonjs": "^7.29.7", + "@babel/plugin-transform-runtime": "^7.29.7", "@osd/babel-preset": "1.0.0", "@osd/dev-utils": "1.0.0", "css-loader": "^5.2.7", diff --git a/packages/osd-monaco/package.json b/packages/osd-monaco/package.json index faa856afe66c..4ea044695a94 100644 --- a/packages/osd-monaco/package.json +++ b/packages/osd-monaco/package.json @@ -24,11 +24,11 @@ "style-loader": "^1.1.3", "supports-color": "^7.0.0", "webpack-cli": "^4.9.2", - "@babel/plugin-proposal-class-properties": "^7.18.0", - "@babel/plugin-proposal-optional-chaining": "^7.21.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.22.9", - "@babel/plugin-transform-class-static-block": "^7.24.4", - "@babel/plugin-transform-private-methods": "^7.24.7" + "@babel/plugin-transform-class-properties": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.29.7", + "@babel/plugin-transform-modules-commonjs": "^7.29.7", + "@babel/plugin-transform-class-static-block": "^7.29.7", + "@babel/plugin-transform-private-methods": "^7.29.7" } } diff --git a/packages/osd-opensearch/package.json b/packages/osd-opensearch/package.json index 0abb3ceef306..80ced029d872 100644 --- a/packages/osd-opensearch/package.json +++ b/packages/osd-opensearch/package.json @@ -29,7 +29,7 @@ }, "devDependencies": { "@osd/babel-preset": "1.0.0", - "@babel/cli": "^7.22.9", + "@babel/cli": "^7.29.7", "del": "^6.1.1" } } diff --git a/packages/osd-optimizer/package.json b/packages/osd-optimizer/package.json index cd51a53200ed..b50161a3ffd5 100644 --- a/packages/osd-optimizer/package.json +++ b/packages/osd-optimizer/package.json @@ -10,8 +10,8 @@ "osd:watch": "yarn build --watch" }, "dependencies": { - "@babel/cli": "^7.22.9", - "@babel/core": "^7.22.9", + "@babel/cli": "^7.29.7", + "@babel/core": "^7.29.7", "@osd/babel-preset": "1.0.0", "@osd/cross-platform": "1.0.0", "@osd/dev-utils": "1.0.0", diff --git a/packages/osd-pm/package.json b/packages/osd-pm/package.json index 903bd15de146..1f91acd92292 100644 --- a/packages/osd-pm/package.json +++ b/packages/osd-pm/package.json @@ -13,9 +13,9 @@ "prettier": "prettier --write './src/**/*.ts'" }, "devDependencies": { - "@babel/core": "^7.22.9", - "@babel/preset-env": "^7.22.9", - "@babel/preset-typescript": "^7.22.9", + "@babel/core": "^7.29.7", + "@babel/preset-env": "^7.29.7", + "@babel/preset-typescript": "^7.29.7", "@node-rs/xxhash": "^1.3.0", "@osd/babel-preset": "1.0.0", "@osd/dev-utils": "1.0.0", diff --git a/packages/osd-test/package.json b/packages/osd-test/package.json index 040b4d04db67..f7a2a6e7ff00 100644 --- a/packages/osd-test/package.json +++ b/packages/osd-test/package.json @@ -13,7 +13,7 @@ "devOnly": true }, "devDependencies": { - "@babel/cli": "^7.22.9", + "@babel/cli": "^7.29.7", "@osd/babel-preset": "1.0.0", "@osd/dev-utils": "1.0.0", "@osd/utils": "1.0.0", diff --git a/yarn.lock b/yarn.lock index 74b68bf5335c..390f155ceb69 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1076,13 +1076,13 @@ resolved "https://registry.yarnpkg.com/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.3.tgz#f1137f56209ccc69c15f826242cbf37f828617dd" integrity sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw== -"@babel/cli@^7.22.9": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.23.0.tgz#1d7f37c44d4117c67df46749e0c86e11a58cc64b" - integrity sha512-17E1oSkGk2IwNILM4jtfAvgjt+ohmpfBky8aLerUfYZhiPNg7ca+CRCxZn8QDxwNhV/upsc2VHBCqGFIR+iBfA== +"@babel/cli@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.29.7.tgz#ae6bd1b11ede44b46ea5624892f62724c4a20ccb" + integrity sha512-/75HwRbAYPqXv/Ax1h7Fg3IZfXgdU98jnA8H93/m/QBaPV3Hp5ICoLqzGYye1yHBCgpmXvtqgSUN8oOKX5tojQ== dependencies: - "@jridgewell/trace-mapping" "^0.3.17" - commander "^4.0.1" + "@jridgewell/trace-mapping" "^0.3.28" + commander "^6.2.0" convert-source-map "^2.0.0" fs-readdir-recursive "^1.1.0" glob "^7.2.0" @@ -1090,7 +1090,7 @@ slash "^2.0.0" optionalDependencies: "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" - chokidar "^3.4.0" + chokidar "^3.6.0" "@babel/code-frame@7.26.2": version "7.26.2" @@ -1101,34 +1101,34 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" - integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.7.tgz#f2fbbfea87c44a21590ec515b778b2c26d8866e7" + integrity sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw== dependencies: - "@babel/helper-validator-identifier" "^7.28.5" + "@babel/helper-validator-identifier" "^7.29.7" js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.2", "@babel/compat-data@^7.28.6": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d" - integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== - -"@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.22.9", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322" - integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== - dependencies: - "@babel/code-frame" "^7.29.0" - "@babel/generator" "^7.29.0" - "@babel/helper-compilation-targets" "^7.28.6" - "@babel/helper-module-transforms" "^7.28.6" - "@babel/helpers" "^7.28.6" - "@babel/parser" "^7.29.0" - "@babel/template" "^7.28.6" - "@babel/traverse" "^7.29.0" - "@babel/types" "^7.29.0" +"@babel/compat-data@^7.28.6", "@babel/compat-data@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.7.tgz#6f0237f0f36d2e51c0570a636faed9d2d0efe629" + integrity sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg== + +"@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.29.7", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.7.tgz#80c10b17248082968b57a857b91640971f2070f7" + integrity sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA== + dependencies: + "@babel/code-frame" "^7.29.7" + "@babel/generator" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helpers" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/template" "^7.29.7" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" @@ -1136,263 +1136,230 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/eslint-parser@^7.25.0": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.28.6.tgz#6a294a4add732ebe7ded8a8d2792dd03dd81dc3f" - integrity sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA== +"@babel/eslint-parser@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.29.7.tgz#272cc7531972ff45bc0db96c45349cb7304d21e1" + integrity sha512-zxt+UJTOMKvUt3yOg+D58MLuz334pHp93qifMFcjIIO+9hN6t+ufw2gi7vDPMpxvfnHRR+3VVXvIjineCcgyXw== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.29.0", "@babel/generator@^7.7.2": - version "7.29.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50" - integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== +"@babel/generator@^7.29.7", "@babel/generator@^7.7.2": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.7.tgz#cca0b8827e6bcf3ba176788e7f3b180ad6db2fa3" + integrity sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ== dependencies: - "@babel/parser" "^7.29.0" - "@babel/types" "^7.29.0" + "@babel/parser" "^7.29.7" + "@babel/types" "^7.29.7" "@jridgewell/gen-mapping" "^0.3.12" "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.22.5", "@babel/helper-annotate-as-pure@^7.27.1": - version "7.27.3" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" - integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== - dependencies: - "@babel/types" "^7.27.3" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== +"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz#c70fe3c6ecbdc3fd2dd1b0f498428b88b82ce47f" + integrity sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw== dependencies: - "@babel/types" "^7.22.15" + "@babel/types" "^7.29.7" -"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" - integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== +"@babel/helper-compilation-targets@^7.28.6", "@babel/helper-compilation-targets@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz#7a1def704302401c47f64fa85589e974ae217042" + integrity sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g== dependencies: - "@babel/compat-data" "^7.28.6" - "@babel/helper-validator-option" "^7.27.1" + "@babel/compat-data" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5", "@babel/helper-create-class-features-plugin@^7.24.4", "@babel/helper-create-class-features-plugin@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281" - integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-member-expression-to-functions" "^7.27.1" - "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/traverse" "^7.27.1" +"@babel/helper-create-class-features-plugin@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz#6eddf286f2ec418f740c91d60a83347c55838ddd" + integrity sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-member-expression-to-functions" "^7.29.7" + "@babel/helper-optimise-call-expression" "^7.29.7" + "@babel/helper-replace-supers" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + "@babel/traverse" "^7.29.7" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz#5d4c3f928f315cf6c4184ea2fc3b5b38745b2430" + integrity sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - regexpu-core "^5.3.1" + "@babel/helper-annotate-as-pure" "^7.29.7" + regexpu-core "^6.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" - integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== +"@babel/helper-define-polyfill-provider@^0.6.5", "@babel/helper-define-polyfill-provider@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz#cf1e4462b613f2b54c41e6ff758d5dfcaa2c85d1" + integrity sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA== dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + debug "^4.4.3" lodash.debounce "^4.0.8" - resolve "^1.14.2" + resolve "^1.22.11" + +"@babel/helper-globals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.29.7.tgz#f04a96fbd8473241b1079243f5b3f03a3010ab7b" + integrity sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA== + +"@babel/helper-member-expression-to-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz#8dbdb3ce0b5c487e1aec10e13c9a43a500814df8" + integrity sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg== + dependencies: + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz#ef25048a518e828d7393fac5882ddd73921d7396" + integrity sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g== + dependencies: + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/helper-module-transforms@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz#b062747a5997ba138637201328bbff77960574ae" + integrity sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg== + dependencies: + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/helper-optimise-call-expression@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz#77b0b5b94f1997fa9d6e3125f445227b1faf9d85" + integrity sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong== + dependencies: + "@babel/types" "^7.29.7" -"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.28.6", "@babel/helper-plugin-utils@^7.29.7", "@babel/helper-plugin-utils@^7.8.0": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz#c0a0766f1a13617d8a17407d7ab8f9d486225ea4" + integrity sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw== + +"@babel/helper-remap-async-to-generator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz#34b1f68dd75b86d31df781a29c3ff2df88da82e6" + integrity sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-wrap-function" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/helper-replace-supers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz#bc3c3964329043c79112e513c1b198f16589ac21" + integrity sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.29.7" + "@babel/helper-optimise-call-expression" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz#50c95c7e4c4f54936cfa0116428edc559862d551" + integrity sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ== + dependencies: + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/helper-string-parser@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz#7f0871d99824d23137d60f86fcf6130fd5a1b51f" + integrity sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw== + +"@babel/helper-validator-identifier@^7.25.9", "@babel/helper-validator-identifier@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz#bd87084ced0c796ec46bda492de6e83d29e89fc2" + integrity sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg== + +"@babel/helper-validator-option@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz#cf315be940213b354eb4abcc0bd01ebe3f73bc2a" + integrity sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw== + +"@babel/helper-wrap-function@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz#eec72163044548a0935e9d182bf2d547ec5ff483" + integrity sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw== + dependencies: + "@babel/template" "^7.29.7" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/helpers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.7.tgz#45abfde7548997e34376c3e69feb475cffb4a607" + integrity sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg== + dependencies: + "@babel/template" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/helper-function-name@^7.22.5": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.7.tgz#837b87387cbf5ec5530cb634b3c622f68edb9334" + integrity sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg== dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-globals@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" - integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== - -"@babel/helper-member-expression-to-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" - integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" - integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== - dependencies: - "@babel/traverse" "^7.28.6" - "@babel/types" "^7.28.6" - -"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0", "@babel/helper-module-transforms@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" - integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== - dependencies: - "@babel/helper-module-imports" "^7.28.6" - "@babel/helper-validator-identifier" "^7.28.5" - "@babel/traverse" "^7.28.6" - -"@babel/helper-optimise-call-expression@^7.22.5", "@babel/helper-optimise-call-expression@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" - integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== - dependencies: - "@babel/types" "^7.27.1" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" - integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== - -"@babel/helper-plugin-utils@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz#6f13ea251b68c8532e985fd532f28741a8af9ac8" - integrity sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug== - -"@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - -"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9", "@babel/helper-replace-supers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" - integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.27.1" - "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5", "@babel/helper-skip-transparent-expression-wrappers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" - integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" - integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-string-parser@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" - integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== - -"@babel/helper-validator-identifier@^7.25.9", "@babel/helper-validator-identifier@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" - integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== - -"@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" - integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== - -"@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== - dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" - -"@babel/helpers@^7.28.6": - version "7.29.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.2.tgz#9cfbccb02b8e229892c0b07038052cc1a8709c49" - integrity sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw== - dependencies: - "@babel/template" "^7.28.6" - "@babel/types" "^7.29.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.9", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6" - integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== + "@babel/types" "^7.29.7" + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz#2b535896d933a85aa92377eaa3d51a437d54a4e3" + integrity sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w== dependencies: - "@babel/types" "^7.29.0" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" - integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz#b00711a9e52bf4fe55ef7e54b2ef4a881bf804c8" + integrity sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz#2375328852026a3cf6bc0bcf2de7d236f2d5e701" + integrity sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" - integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== +"@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz#759a857c46c4d2a6199685cf71070d81ae5f743a" + integrity sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.15" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" -"@babel/plugin-proposal-class-properties@^7.18.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz#86de98dd8e03836178231ea96c27dab26016a705" + integrity sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + "@babel/plugin-transform-optional-chaining" "^7.29.7" -"@babel/plugin-proposal-optional-chaining@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" - integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz#f5d892681dbf4b08753436a5e55000d5ba728d6d" + integrity sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" @@ -1413,49 +1380,28 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" - integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== +"@babel/plugin-syntax-import-assertions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz#c5cd868505269126cc18882e1f01f7b0e0e24b4e" + integrity sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-syntax-import-attributes@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" - integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== +"@babel/plugin-syntax-import-attributes@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz#6115264516e95ead0f35a41710906612e447f605" + integrity sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": +"@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== @@ -1469,14 +1415,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" - integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== +"@babel/plugin-syntax-jsx@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz#622c16f9ad63782fe6e83dadc7e40330744b7f1e" + integrity sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -1490,7 +1436,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== @@ -1518,26 +1464,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.22.5", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" - integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== +"@babel/plugin-syntax-typescript@^7.29.7", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz#7c29388932313ed58413a0343048d75d92fb5b24" + integrity sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -1547,532 +1486,534 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" - integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== +"@babel/plugin-transform-arrow-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz#d651343f562c03f47951bd1802195d0e10605f27" + integrity sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-async-generator-functions@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb" - integrity sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ== +"@babel/plugin-transform-async-generator-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz#a5365617921d82a1fee33124a1102bb38a1e677d" + integrity sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-transform-async-to-generator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" - integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== - dependencies: - "@babel/helper-module-imports" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-remap-async-to-generator" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-block-scoped-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" - integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== +"@babel/plugin-transform-async-to-generator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz#3b5e8f1fb58133cf701bcf0baaf6f01bfd1a8889" + integrity sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-remap-async-to-generator" "^7.29.7" -"@babel/plugin-transform-block-scoping@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" - integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== +"@babel/plugin-transform-block-scoped-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz#96d292634434082d6687bcdb81139affedf77e8c" + integrity sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" - integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-static-block@^7.22.11", "@babel/plugin-transform-class-static-block@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" - integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.4" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" - integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" - "@babel/helper-split-export-declaration" "^7.22.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" - integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/template" "^7.22.5" - -"@babel/plugin-transform-destructuring@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" - integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dotall-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" - integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-duplicate-keys@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" - integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dynamic-import@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" - integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" - integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-export-namespace-from@^7.22.11", "@babel/plugin-transform-export-namespace-from@^7.22.9": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" - integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-for-of@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" - integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" - integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== +"@babel/plugin-transform-block-scoping@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz#baa376691ae16244cd14335422fca6900f54e17d" + integrity sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ== dependencies: - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-json-strings@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" - integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" - integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== +"@babel/plugin-transform-class-properties@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz#034897b8a21beec163332fac2de235b14409abdf" + integrity sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-logical-assignment-operators@^7.22.11", "@babel/plugin-transform-logical-assignment-operators@^7.22.9": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" - integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== +"@babel/plugin-transform-class-static-block@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz#fed8efd19f3dd3e1114ee390707c70912778fd7c" + integrity sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-member-expression-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" - integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== +"@babel/plugin-transform-classes@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz#61d3e5aaae0c838acc3204d9db7c8dc05c25815b" + integrity sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-globals" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-replace-supers" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-modules-amd@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" - integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== +"@babel/plugin-transform-computed-properties@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz#95028787ca31901b9a20b5c6d9605c32346f55ad" + integrity sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA== dependencies: - "@babel/helper-module-transforms" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/template" "^7.29.7" -"@babel/plugin-transform-modules-commonjs@^7.22.9", "@babel/plugin-transform-modules-commonjs@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" - integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== +"@babel/plugin-transform-destructuring@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz#5781ec6947852e27b64c1165f0db431f408090e4" + integrity sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg== dependencies: - "@babel/helper-module-transforms" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-modules-systemjs@^7.23.0": - version "7.29.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz#f621105da99919c15cf4bde6fcc7346ef95e7b20" - integrity sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w== +"@babel/plugin-transform-dotall-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz#b203de9740e4c7ff6b55ce436ed5313b88d70af8" + integrity sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ== dependencies: - "@babel/helper-module-transforms" "^7.28.6" - "@babel/helper-plugin-utils" "^7.28.6" - "@babel/helper-validator-identifier" "^7.28.5" - "@babel/traverse" "^7.29.0" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-modules-umd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" - integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== +"@babel/plugin-transform-duplicate-keys@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz#8f3fe721835cb7a433420841dae90afc962ea7ae" + integrity sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ== dependencies: - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz#dc6c405e55c01b7657e1827a25332c4ac17e9cac" + integrity sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-new-target@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" - integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== +"@babel/plugin-transform-dynamic-import@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz#a83a6faec5bab5b619adf9d0eac6c1c270123c2a" + integrity sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11", "@babel/plugin-transform-nullish-coalescing-operator@^7.22.9": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" - integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== +"@babel/plugin-transform-explicit-resource-management@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz#65c8b9f76ec915b02a0e1df703125a0fca58abaa" + integrity sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/plugin-transform-destructuring" "^7.29.7" -"@babel/plugin-transform-numeric-separator@^7.22.11", "@babel/plugin-transform-numeric-separator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" - integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== +"@babel/plugin-transform-exponentiation-operator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz#00bf002fde8794356171f5d4df200f6bc0d5a303" + integrity sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-object-rest-spread@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" - integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== +"@babel/plugin-transform-export-namespace-from@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz#d6014f45cec61d7691335c6c9804204bee801d51" + integrity sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA== dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.22.15" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-object-super@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" - integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== +"@babel/plugin-transform-for-of@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz#c65a678592117717aacdb10c1b73a9cb85e830be" + integrity sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" -"@babel/plugin-transform-optional-catch-binding@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" - integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== +"@babel/plugin-transform-function-name@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz#8b87f8a7504dbcd96135167e3fc4f61126a7bd86" + integrity sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-optional-chaining@^7.22.15", "@babel/plugin-transform-optional-chaining@^7.22.9", "@babel/plugin-transform-optional-chaining@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" - integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== +"@babel/plugin-transform-json-strings@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz#f57d63dcc05b4481c281acedcd8fc4e3e439a1d4" + integrity sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-parameters@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" - integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== +"@babel/plugin-transform-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz#b90bd47463326c2a9d779e1bd5e1f88b9f421921" + integrity sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.24.7": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af" - integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== +"@babel/plugin-transform-logical-assignment-operators@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz#9b29425adf5c794967aabe4b046a046a167bac2f" + integrity sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q== dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-private-property-in-object@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" - integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== +"@babel/plugin-transform-member-expression-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz#1281689fa2fefc17b110d21ebafd0fe9402d5309" + integrity sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.11" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-property-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" - integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== +"@babel/plugin-transform-modules-amd@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz#f05ca662c8a1dc4be2f337af9c7e80369c942d6c" + integrity sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-react-display-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz#3c4326f9fce31c7968d6cb9debcaf32d9e279a2b" - integrity sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw== +"@babel/plugin-transform-modules-commonjs@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz#70e6835abf2663dafbe94b8ef1f51de7351ef135" + integrity sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-react-jsx-development@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" - integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== +"@babel/plugin-transform-modules-systemjs@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.7.tgz#e575dd2ab9882906de120ff7dc9dee9914d8b6f3" + integrity sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ== dependencies: - "@babel/plugin-transform-react-jsx" "^7.22.5" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6" - integrity sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA== +"@babel/plugin-transform-modules-umd@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz#391d1c0215aca6307257f2f608598dfe55feb6cf" + integrity sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/types" "^7.22.15" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-react-pure-annotations@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz#1f58363eef6626d6fa517b95ac66fe94685e32c0" - integrity sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz#21e75d847b31189842fa7a77703722ed4b43d27d" + integrity sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-regenerator@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" - integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== +"@babel/plugin-transform-new-target@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz#714147ce7947e1b49cbd84137ca2e75e92b2a067" + integrity sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - regenerator-transform "^0.15.2" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-reserved-words@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" - integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== +"@babel/plugin-transform-nullish-coalescing-operator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz#8a54cdf88c3f50433a6173117a286195b67714cc" + integrity sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-runtime@^7.22.9": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz#c956a3f8d1aa50816ff6c30c6288d66635c12990" - integrity sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA== +"@babel/plugin-transform-numeric-separator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz#0266d5cd42ab87ec40fee45a4e36483cfdcbc66a" + integrity sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw== dependencies: - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.6" - babel-plugin-polyfill-corejs3 "^0.8.5" - babel-plugin-polyfill-regenerator "^0.5.3" - semver "^6.3.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-shorthand-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" - integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== +"@babel/plugin-transform-object-rest-spread@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz#e0d5060241803922c545676613cc8acbbda0d266" + integrity sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/plugin-transform-destructuring" "^7.29.7" + "@babel/plugin-transform-parameters" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-spread@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" - integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== +"@babel/plugin-transform-object-super@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz#e89283d14fa3c35817d4493ffc6bc649aa10e4eb" + integrity sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-replace-supers" "^7.29.7" -"@babel/plugin-transform-sticky-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" - integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== +"@babel/plugin-transform-optional-catch-binding@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz#729664f79985be504eba112c51de9f71d009030b" + integrity sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-template-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" - integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-optional-chaining@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz#b84a1b574b3c73001023092567e16c492b720e51" + integrity sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + +"@babel/plugin-transform-parameters@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz#a5ddc3b9bfb534814cb8334cbeba47d9cf9db090" + integrity sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-typeof-symbol@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" - integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== +"@babel/plugin-transform-private-methods@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz#cea8bd3ab99533892897a02999d5b752584ad145" + integrity sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-private-property-in-object@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz#4a2f6be5aba47be7afbdb4cd7903c46edf3a7661" + integrity sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-property-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz#d45817cd72f9e134ab1f7fbb79264cfcb85cf636" + integrity sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-typescript@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127" - integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== +"@babel/plugin-transform-react-display-name@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.29.7.tgz#bf161a6d750267b79db7ff6f8fb89c3369b02df3" + integrity sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-typescript" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-unicode-escapes@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" - integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== +"@babel/plugin-transform-react-jsx-development@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.29.7.tgz#64e6aacb5cb43b9e80d3d5f19ddefc158a624f09" + integrity sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-transform-react-jsx" "^7.29.7" -"@babel/plugin-transform-unicode-property-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" - integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== +"@babel/plugin-transform-react-jsx@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.29.7.tgz#3d16a0e5773f079400a8c82a190709cdf92ee204" + integrity sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/plugin-syntax-jsx" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/plugin-transform-react-pure-annotations@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.29.7.tgz#76445c90112dd0a7371b63264563bfa9a4fcd6e3" + integrity sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-unicode-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" - integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== +"@babel/plugin-transform-regenerator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.7.tgz#0f42626a7dbb0e7a7f52e036d3e43deebdc3ea4e" + integrity sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-regexp-modifiers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz#68311c0c10af2198212528863f8542843e424025" + integrity sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-unicode-sets-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" - integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== +"@babel/plugin-transform-reserved-words@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz#a6feeb179b36a5f1fc6e3154c1eb727bdbe35876" + integrity sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/preset-env@^7.22.9": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059" - integrity sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ== +"@babel/plugin-transform-runtime@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz#7c7fb6e2a46dce67e278b6cc84421c1d16da5695" + integrity sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q== dependencies: - "@babel/compat-data" "^7.23.2" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + babel-plugin-polyfill-corejs2 "^0.4.14" + babel-plugin-polyfill-corejs3 "^0.13.0" + babel-plugin-polyfill-regenerator "^0.6.5" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz#25c0436b98f4bd9ca4b98e1fbd662743bbaab9bf" + integrity sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-spread@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.7.tgz#a128bcdd6b5e5e47054907b2e50bc19c3f856edd" + integrity sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + +"@babel/plugin-transform-sticky-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz#a42c0fd1fa42f7e98e1e0c7757f72a1bbca3a015" + integrity sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-template-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz#ada97d8e0832bca8edb315888aa654b1570f3835" + integrity sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-typeof-symbol@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz#d848a4677c1ee3485ab017f4018f04597798911c" + integrity sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-typescript@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.7.tgz#f0449c3df7037bbe232043476851c38f5e4a7615" + integrity sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + "@babel/plugin-syntax-typescript" "^7.29.7" + +"@babel/plugin-transform-unicode-escapes@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz#1e99554b0cddfd650d649a9f2b996049893e5720" + integrity sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-unicode-property-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz#44444afc73768c2190fac4d95f7716817b7f204a" + integrity sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-unicode-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz#c3064b293ff7f1794b71f7650eec8db9896d3e59" + integrity sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-transform-unicode-sets-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz#b03ac9f27326f6197e8e574add83bbf33fc34ecd" + integrity sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/preset-env@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.29.7.tgz#5e2ab5e764b493fdefc99c43aeaa70a9533a37fd" + integrity sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA== + dependencies: + "@babel/compat-data" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.29.7" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.29.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.29.7" + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array" "^7.29.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.29.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.29.7" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.22.5" - "@babel/plugin-syntax-import-attributes" "^7.22.5" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-import-assertions" "^7.29.7" + "@babel/plugin-syntax-import-attributes" "^7.29.7" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.23.2" - "@babel/plugin-transform-async-to-generator" "^7.22.5" - "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.23.0" - "@babel/plugin-transform-class-properties" "^7.22.5" - "@babel/plugin-transform-class-static-block" "^7.22.11" - "@babel/plugin-transform-classes" "^7.22.15" - "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.23.0" - "@babel/plugin-transform-dotall-regex" "^7.22.5" - "@babel/plugin-transform-duplicate-keys" "^7.22.5" - "@babel/plugin-transform-dynamic-import" "^7.22.11" - "@babel/plugin-transform-exponentiation-operator" "^7.22.5" - "@babel/plugin-transform-export-namespace-from" "^7.22.11" - "@babel/plugin-transform-for-of" "^7.22.15" - "@babel/plugin-transform-function-name" "^7.22.5" - "@babel/plugin-transform-json-strings" "^7.22.11" - "@babel/plugin-transform-literals" "^7.22.5" - "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" - "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.23.0" - "@babel/plugin-transform-modules-commonjs" "^7.23.0" - "@babel/plugin-transform-modules-systemjs" "^7.23.0" - "@babel/plugin-transform-modules-umd" "^7.22.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.22.5" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" - "@babel/plugin-transform-numeric-separator" "^7.22.11" - "@babel/plugin-transform-object-rest-spread" "^7.22.15" - "@babel/plugin-transform-object-super" "^7.22.5" - "@babel/plugin-transform-optional-catch-binding" "^7.22.11" - "@babel/plugin-transform-optional-chaining" "^7.23.0" - "@babel/plugin-transform-parameters" "^7.22.15" - "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.11" - "@babel/plugin-transform-property-literals" "^7.22.5" - "@babel/plugin-transform-regenerator" "^7.22.10" - "@babel/plugin-transform-reserved-words" "^7.22.5" - "@babel/plugin-transform-shorthand-properties" "^7.22.5" - "@babel/plugin-transform-spread" "^7.22.5" - "@babel/plugin-transform-sticky-regex" "^7.22.5" - "@babel/plugin-transform-template-literals" "^7.22.5" - "@babel/plugin-transform-typeof-symbol" "^7.22.5" - "@babel/plugin-transform-unicode-escapes" "^7.22.10" - "@babel/plugin-transform-unicode-property-regex" "^7.22.5" - "@babel/plugin-transform-unicode-regex" "^7.22.5" - "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/plugin-transform-arrow-functions" "^7.29.7" + "@babel/plugin-transform-async-generator-functions" "^7.29.7" + "@babel/plugin-transform-async-to-generator" "^7.29.7" + "@babel/plugin-transform-block-scoped-functions" "^7.29.7" + "@babel/plugin-transform-block-scoping" "^7.29.7" + "@babel/plugin-transform-class-properties" "^7.29.7" + "@babel/plugin-transform-class-static-block" "^7.29.7" + "@babel/plugin-transform-classes" "^7.29.7" + "@babel/plugin-transform-computed-properties" "^7.29.7" + "@babel/plugin-transform-destructuring" "^7.29.7" + "@babel/plugin-transform-dotall-regex" "^7.29.7" + "@babel/plugin-transform-duplicate-keys" "^7.29.7" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.29.7" + "@babel/plugin-transform-dynamic-import" "^7.29.7" + "@babel/plugin-transform-explicit-resource-management" "^7.29.7" + "@babel/plugin-transform-exponentiation-operator" "^7.29.7" + "@babel/plugin-transform-export-namespace-from" "^7.29.7" + "@babel/plugin-transform-for-of" "^7.29.7" + "@babel/plugin-transform-function-name" "^7.29.7" + "@babel/plugin-transform-json-strings" "^7.29.7" + "@babel/plugin-transform-literals" "^7.29.7" + "@babel/plugin-transform-logical-assignment-operators" "^7.29.7" + "@babel/plugin-transform-member-expression-literals" "^7.29.7" + "@babel/plugin-transform-modules-amd" "^7.29.7" + "@babel/plugin-transform-modules-commonjs" "^7.29.7" + "@babel/plugin-transform-modules-systemjs" "^7.29.7" + "@babel/plugin-transform-modules-umd" "^7.29.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.29.7" + "@babel/plugin-transform-new-target" "^7.29.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.29.7" + "@babel/plugin-transform-numeric-separator" "^7.29.7" + "@babel/plugin-transform-object-rest-spread" "^7.29.7" + "@babel/plugin-transform-object-super" "^7.29.7" + "@babel/plugin-transform-optional-catch-binding" "^7.29.7" + "@babel/plugin-transform-optional-chaining" "^7.29.7" + "@babel/plugin-transform-parameters" "^7.29.7" + "@babel/plugin-transform-private-methods" "^7.29.7" + "@babel/plugin-transform-private-property-in-object" "^7.29.7" + "@babel/plugin-transform-property-literals" "^7.29.7" + "@babel/plugin-transform-regenerator" "^7.29.7" + "@babel/plugin-transform-regexp-modifiers" "^7.29.7" + "@babel/plugin-transform-reserved-words" "^7.29.7" + "@babel/plugin-transform-shorthand-properties" "^7.29.7" + "@babel/plugin-transform-spread" "^7.29.7" + "@babel/plugin-transform-sticky-regex" "^7.29.7" + "@babel/plugin-transform-template-literals" "^7.29.7" + "@babel/plugin-transform-typeof-symbol" "^7.29.7" + "@babel/plugin-transform-unicode-escapes" "^7.29.7" + "@babel/plugin-transform-unicode-property-regex" "^7.29.7" + "@babel/plugin-transform-unicode-regex" "^7.29.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.29.7" "@babel/preset-modules" "0.1.6-no-external-plugins" - "@babel/types" "^7.23.0" - babel-plugin-polyfill-corejs2 "^0.4.6" - babel-plugin-polyfill-corejs3 "^0.8.5" - babel-plugin-polyfill-regenerator "^0.5.3" - core-js-compat "^3.31.0" + babel-plugin-polyfill-corejs2 "^0.4.15" + babel-plugin-polyfill-corejs3 "^0.14.0" + babel-plugin-polyfill-regenerator "^0.6.6" + core-js-compat "^3.48.0" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": @@ -2084,86 +2025,81 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.22.9": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.22.15.tgz#9a776892b648e13cc8ca2edf5ed1264eea6b6afc" - integrity sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-transform-react-display-name" "^7.22.5" - "@babel/plugin-transform-react-jsx" "^7.22.15" - "@babel/plugin-transform-react-jsx-development" "^7.22.5" - "@babel/plugin-transform-react-pure-annotations" "^7.22.5" - -"@babel/preset-typescript@^7.22.9": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz#c8de488130b7081f7e1482936ad3de5b018beef4" - integrity sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.23.0" - "@babel/plugin-transform-typescript" "^7.22.15" - -"@babel/register@^7.22.9": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.22.15.tgz#c2c294a361d59f5fa7bcc8b97ef7319c32ecaec7" - integrity sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg== +"@babel/preset-react@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.29.7.tgz#2ed18366e38c2081bbf1760dc01e88fa5674eb17" + integrity sha512-C+PV1TFUPTmBQGoPBL8j2QmLpZ117YTCwxIZeJOM96GbYMFSc7/pOXU5lVykwnZxyTqQxRsvoRk6f2FktZgGHA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + "@babel/plugin-transform-react-display-name" "^7.29.7" + "@babel/plugin-transform-react-jsx" "^7.29.7" + "@babel/plugin-transform-react-jsx-development" "^7.29.7" + "@babel/plugin-transform-react-pure-annotations" "^7.29.7" + +"@babel/preset-typescript@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.29.7.tgz#de9be1f47b785c979ec7b3a71f4cd8bae5267b62" + integrity sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + "@babel/plugin-syntax-jsx" "^7.29.7" + "@babel/plugin-transform-modules-commonjs" "^7.29.7" + "@babel/plugin-transform-typescript" "^7.29.7" + +"@babel/register@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.29.7.tgz#d5bb4337065512f643b29cb565b6e8ccadcc1ec6" + integrity sha512-AMGJoWuES861riy6pcB0fphE1YXybtQnBYQMuIyPv6mKLiosfa79BKTnAOyx215c/3RJPJpdQwoHZ3earVH7AA== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" make-dir "^2.1.0" - pirates "^4.0.5" + pirates "^4.0.6" source-map-support "^0.5.16" -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - "@babel/runtime-corejs3@^7.10.2": - version "7.29.2" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.29.2.tgz#cb86ad06e7a1d39224afb12a874301085e071846" - integrity sha512-Lc94FOD5+0aXhdb0Tdg3RUtqT6yWbI/BbFWvlaSJ3gAb9Ks+99nHRDKADVqC37er4eCB0fHyWT+y+K3QOvJKbw== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.29.7.tgz#2030fda34f3433647818660093751fb1ca2debf0" + integrity sha512-ppj9ouYku+RX0ljtgZd+KMO5mkM2bCqg8H2PYAFWnLsHEIKIdRojqbJ2i3eVHrisuxy7nOFCmngTDdWtUCdXUQ== dependencies: core-js-pure "^3.48.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.26.10", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.29.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.2.tgz#9a6e2d05f4b6692e1801cd4fb176ad823930ed5e" - integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g== - -"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.28.6", "@babel/template@^7.3.3": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" - integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== - dependencies: - "@babel/code-frame" "^7.28.6" - "@babel/parser" "^7.28.6" - "@babel/types" "^7.28.6" - -"@babel/traverse@^7.27.1", "@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" - integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== - dependencies: - "@babel/code-frame" "^7.29.0" - "@babel/generator" "^7.29.0" - "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.29.0" - "@babel/template" "^7.28.6" - "@babel/types" "^7.29.0" +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.26.10", "@babel/runtime@^7.29.7", "@babel/runtime@^7.9.2": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.7.tgz#12022450c45a4da6d8d8287b18a4ff2ddb23f768" + integrity sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw== + +"@babel/template@^7.29.7", "@babel/template@^7.3.3": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.29.7.tgz#4d9d4004f645cdd304de958c725162784ecac700" + integrity sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg== + dependencies: + "@babel/code-frame" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/traverse@^7.29.7", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.7.tgz#c47b07a41b95da0907d026b5dd894d98de7d2f2d" + integrity sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw== + dependencies: + "@babel/code-frame" "^7.29.7" + "@babel/generator" "^7.29.7" + "@babel/helper-globals" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/template" "^7.29.7" + "@babel/types" "^7.29.7" debug "^4.3.1" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.22.9", "@babel/types@^7.23.0", "@babel/types@^7.24.5", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.6", "@babel/types@^7.29.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" - integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.28.2", "@babel/types@^7.29.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.7.tgz#8005e31d82712ee7adaef6e23c63b71a62770a92" + integrity sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA== dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" + "@babel/helper-string-parser" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" @@ -3528,7 +3464,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": version "0.3.31" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== @@ -7666,29 +7602,37 @@ babel-plugin-module-resolver@^5.0.1: reselect "^4.1.7" resolve "^1.22.8" -babel-plugin-polyfill-corejs2@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" - integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== +babel-plugin-polyfill-corejs2@^0.4.14, babel-plugin-polyfill-corejs2@^0.4.15: + version "0.4.17" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz#198f970f1c99a856b466d1187e88ce30bd199d91" + integrity sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w== dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.3" + "@babel/compat-data" "^7.28.6" + "@babel/helper-define-polyfill-provider" "^0.6.8" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.8.5: - version "0.8.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" - integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== +babel-plugin-polyfill-corejs3@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz#bb7f6aeef7addff17f7602a08a6d19a128c30164" + integrity sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.3" - core-js-compat "^3.33.1" + "@babel/helper-define-polyfill-provider" "^0.6.5" + core-js-compat "^3.43.0" -babel-plugin-polyfill-regenerator@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" - integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== +babel-plugin-polyfill-corejs3@^0.14.0: + version "0.14.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz#6ac08d2f312affb70c4c69c0fbba4cb417ee5587" + integrity sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.8" + core-js-compat "^3.48.0" + +babel-plugin-polyfill-regenerator@^0.6.5, babel-plugin-polyfill-regenerator@^0.6.6: + version "0.6.8" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz#8a6bfd5dd54239362b3d06ce47ac52b2d95d7721" + integrity sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.3" + "@babel/helper-define-polyfill-provider" "^0.6.8" "babel-plugin-styled-components@>= 1.12.0", babel-plugin-styled-components@^2.0.2: version "2.0.6" @@ -8118,7 +8062,7 @@ browserslist-to-es-version@^1.1.1: dependencies: browserslist "^4.26.2" -browserslist@*, browserslist@^4.21.10, browserslist@^4.21.5, browserslist@^4.22.1, browserslist@^4.24.0, browserslist@^4.26.2, browserslist@^4.28.1: +browserslist@*, browserslist@^4.21.10, browserslist@^4.21.5, browserslist@^4.24.0, browserslist@^4.26.2, browserslist@^4.28.1: version "4.28.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== @@ -8454,7 +8398,7 @@ cheerio@^1.0.0-rc.3: parse5-htmlparser2-tree-adapter "^6.0.1" tslib "^2.2.0" -chokidar@^3.4.0, chokidar@^3.4.2, chokidar@^3.5.3, chokidar@^3.6.0: +chokidar@^3.4.2, chokidar@^3.5.3, chokidar@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -8816,17 +8760,12 @@ commander@^3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - commander@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^6.2.1: +commander@^6.2.0, commander@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== @@ -9008,12 +8947,12 @@ copy-to-clipboard@^3.3.1: dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.31.0, core-js-compat@^3.33.1: - version "3.33.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.2.tgz#3ea4563bfd015ad4e4b52442865b02c62aba5085" - integrity sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw== +core-js-compat@^3.43.0, core-js-compat@^3.48.0: + version "3.49.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.49.0.tgz#06145447d92f4aaf258a0c44f24b47afaeaffef6" + integrity sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA== dependencies: - browserslist "^4.22.1" + browserslist "^4.28.1" core-js-pure@^3.48.0: version "3.48.0" @@ -12267,7 +12206,7 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -globals@^11.1.0, globals@^11.12.0: +globals@^11.12.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== @@ -14595,16 +14534,11 @@ jsdom@^16.6.0: ws "^7.4.6" xml-name-validator "^3.0.0" -jsesc@^3.0.2: +jsesc@^3.0.2, jsesc@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - json-bigint@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" @@ -17133,11 +17067,16 @@ pino@^8.15.0: sonic-boom "^3.7.0" thread-stream "^2.6.0" -pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.5: +pirates@^4.0.1, pirates@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== +pirates@^4.0.6: + version "4.0.7" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" + integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== + pixelmatch@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-5.2.1.tgz#9e4e4f4aa59648208a31310306a5bed5522b0d65" @@ -18232,10 +18171,10 @@ regedit@^3.0.3: stream-slicer "0.0.6" through2 "^0.6.3" -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== +regenerate-unicode-properties@^10.2.2: + version "10.2.2" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz#aa113812ba899b630658c7623466be71e1f86f66" + integrity sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g== dependencies: regenerate "^1.4.2" @@ -18259,13 +18198,6 @@ regenerator-runtime@^0.13.3: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - regexp.prototype.flags@^1.3.0, regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" @@ -18280,24 +18212,29 @@ regexpp@^3.0.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== +regexpu-core@^6.3.1: + version "6.4.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.4.0.tgz#3580ce0c4faedef599eccb146612436b62a176e5" + integrity sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA== dependencies: - "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" + regenerate-unicode-properties "^10.2.2" + regjsgen "^0.8.0" + regjsparser "^0.13.0" unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" + unicode-match-property-value-ecmascript "^2.2.1" -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== +regjsgen@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" + integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== + +regjsparser@^0.13.0: + version "0.13.2" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.13.2.tgz#f654734b5c588b22ba3e21693b30523417180808" + integrity sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ== dependencies: - jsesc "~0.5.0" + jsesc "~3.1.0" rehype-react@^6.0.0: version "6.2.1" @@ -18525,7 +18462,7 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.8, resolve@^1.5.0, resolve@^1.7.1, resolve@^1.9.0, resolve@~1.22.1, resolve@~1.22.2: +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.8, resolve@^1.5.0, resolve@^1.7.1, resolve@^1.9.0, resolve@~1.22.1, resolve@~1.22.2: version "1.22.11" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== @@ -18534,6 +18471,16 @@ resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.14 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.11: + version "1.22.12" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.12.tgz#f5b2a680897c69c238a13cd16b15671f8b73549f" + integrity sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA== + dependencies: + es-errors "^1.3.0" + is-core-module "^2.16.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^2.0.0-next.3, resolve@^2.0.0-next.5: version "2.0.0-next.5" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" @@ -20961,10 +20908,10 @@ unicode-match-property-ecmascript@^2.0.0: unicode-canonical-property-names-ecmascript "^2.0.0" unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== +unicode-match-property-value-ecmascript@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz#65a7adfad8574c219890e219285ce4c64ed67eaa" + integrity sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg== unicode-property-aliases-ecmascript@^2.0.0: version "2.0.0" From 01f876b4748bb3cb0ded96dc03791e5cb96c0aac Mon Sep 17 00:00:00 2001 From: Yulong Ruan Date: Thu, 25 Jun 2026 13:53:05 +0800 Subject: [PATCH 23/88] chore: use major version in .nvmrc to avoid requiring exact Node.js version (#12270) * chore: use major version in .nvmrc to avoid requiring exact Node.js version .node-version pins the exact runtime version used by the build system for downloading Node.js binaries; .nvmrc only needs to guide developers to the correct major version via nvm. - Change .nvmrc from exact version to major version (22) - Update build config to read .node-version for exact version Signed-off-by: Yulong Ruan * Update DEVELOPER_GUIDE.md for nodejs version usage Signed-off-by: Yulong Ruan --------- Signed-off-by: Yulong Ruan --- .nvmrc | 2 +- DEVELOPER_GUIDE.md | 10 ++++++++++ src/dev/build/lib/config.ts | 6 +++--- src/dev/node_versions_must_match.test.ts | 2 +- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/.nvmrc b/.nvmrc index 1c9aeda807da..2bd5a0a98a36 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.23.0 +22 diff --git a/DEVELOPER_GUIDE.md b/DEVELOPER_GUIDE.md index 7830fdbd87c3..7be8b6f6a5d6 100644 --- a/DEVELOPER_GUIDE.md +++ b/DEVELOPER_GUIDE.md @@ -68,6 +68,16 @@ We recommend using [Node Version Manager (nvm)](https://github.com/nvm-sh/nvm) t If it's the only version of node installed, it will automatically be set to the `default` alias. Otherwise, use `nvm list` to see all installed `node` versions, and `nvm use` to select the node version required by OpenSearch Dashboards. +#### Node.js version files + +The project uses multiple files to manage the Node.js version for different purposes: + +| File | Format | Purpose | When to update | +|------|--------|---------|----------------| +| `.node-version` | Exact version (e.g. `22.23.0`) | Used by the build system to download Node.js binaries for release builds | Patch, minor, and major bumps | +| `.nvmrc` | Major version only (e.g. `22`) | Used by nvm and GitHub Actions CI for development | Major version bumps only | +| `package.json` `engines.node` | Semver range | Validates compatible Node.js versions | Major version bumps only | + ### Fork and clone OpenSearch Dashboards All local development should be done in a [forked repository](https://docs.github.com/en/get-started/quickstart/fork-a-repo). diff --git a/src/dev/build/lib/config.ts b/src/dev/build/lib/config.ts index 67e6c9e052ae..1fce7f691e93 100644 --- a/src/dev/build/lib/config.ts +++ b/src/dev/build/lib/config.ts @@ -69,15 +69,15 @@ export class Config { const pkgPath = resolve(__dirname, '../../../../package.json'); const pkg: Package = loadJsonFile.sync(pkgPath); - const nvmrcPath = resolve(__dirname, '../../../../.nvmrc'); - const nvmrcContent = (await readFile(nvmrcPath, 'utf8'))?.trim?.(); + const nodeVersionPath = resolve(__dirname, '../../../../.node-version'); + const nodeVersionContent = (await readFile(nodeVersionPath, 'utf8'))?.trim?.(); return new Config( targetAllPlatforms, targetPlatforms, pkg, pkg.engines.node, - nvmrcContent, + nodeVersionContent, dirname(pkgPath), await getVersionInfo({ isRelease, diff --git a/src/dev/node_versions_must_match.test.ts b/src/dev/node_versions_must_match.test.ts index cef208aad593..f33700cceceb 100644 --- a/src/dev/node_versions_must_match.test.ts +++ b/src/dev/node_versions_must_match.test.ts @@ -43,7 +43,7 @@ describe('All configs should use a single version of Node', () => { readFile('./.nvmrc', { encoding: 'utf8' }), ]); - expect(nodeVersion.trim()).to.be(nvmrc.trim()); + expect(semver.major(nodeVersion.trim())).to.be(Number(nvmrc.trim())); }); it('should compare .node-version and engines.node from package.json', async () => { From 4f5a6837e7757f87674c1e2b1cb6fd9fd494c9dc Mon Sep 17 00:00:00 2001 From: Lin Wang Date: Thu, 25 Jun 2026 14:45:56 +0800 Subject: [PATCH 24/88] feat(chat): auto-open chat window on first visit (#12233) Signed-off-by: Lin Wang --- src/plugins/chat/public/plugin.test.ts | 12 ++++++++++-- src/plugins/chat/public/plugin.ts | 3 +++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/plugins/chat/public/plugin.test.ts b/src/plugins/chat/public/plugin.test.ts index 63d13a51e40b..ef1c43d13c24 100644 --- a/src/plugins/chat/public/plugin.test.ts +++ b/src/plugins/chat/public/plugin.test.ts @@ -372,6 +372,13 @@ describe('ChatPlugin', () => { }); }); + it('should open chat window by default when no stored state exists', () => { + // No localStorage state set (first visit) + plugin.start(mockCoreStart, mockDeps); + + expect(mockCoreStart.chat.setWindowState).toHaveBeenCalledWith({ isWindowOpen: true }); + }); + it('should persist window state changes to localStorage', () => { const windowStateSubject = new BehaviorSubject({ isWindowOpen: false, @@ -405,8 +412,9 @@ describe('ChatPlugin', () => { plugin.start(mockCoreStart, mockDeps); // Should not call setWindowState with invalid data from localStorage - // but will be called with paddingSize from sidecar config subscription - expect(mockCoreStart.chat.setWindowState).toHaveBeenCalledTimes(1); + // but will be called with default open state + paddingSize from sidecar config subscription + expect(mockCoreStart.chat.setWindowState).toHaveBeenCalledTimes(2); + expect(mockCoreStart.chat.setWindowState).toHaveBeenCalledWith({ isWindowOpen: true }); expect(mockCoreStart.chat.setWindowState).toHaveBeenCalledWith({ paddingSize: 400 }); }); }); diff --git a/src/plugins/chat/public/plugin.ts b/src/plugins/chat/public/plugin.ts index 6acb95e4aa21..540e6d64fd46 100644 --- a/src/plugins/chat/public/plugin.ts +++ b/src/plugins/chat/public/plugin.ts @@ -80,6 +80,9 @@ export class ChatPlugin implements Plugin { if (isValidChatWindowState(storeState)) { chat.setWindowState(storeState); + } else { + // First visit or no stored state — open chat by default + chat.setWindowState({ isWindowOpen: true }); } this.paddingSizeSubscription = overlays.sidecar From 102f36cd929698b5cdb037a91949fcd3bef337be Mon Sep 17 00:00:00 2001 From: Yulong Ruan Date: Thu, 25 Jun 2026 17:07:38 +0800 Subject: [PATCH 25/88] fix(vis_type_table): register Data Table vis type during setup (#12280) The Data Table visualization was missing from the "Create New Visualization" type picker. createBaseVisualization() was being called after `await core.getStartServices()`, which only resolves once the plugin's start phase runs. Since vis types must be registered during the setup phase (before the registry is read to build the picker), the type was registered too late and silently never appeared. Move createBaseVisualization() ahead of the getStartServices() await so registration happens synchronously during setup. The expressions renderer registration still awaits start services since it genuinely needs the CoreStart contract. Signed-off-by: Yulong Ruan --- src/plugins/vis_type_table/public/plugin.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/vis_type_table/public/plugin.ts b/src/plugins/vis_type_table/public/plugin.ts index 0582ebbedeb0..f990026993a5 100644 --- a/src/plugins/vis_type_table/public/plugin.ts +++ b/src/plugins/vis_type_table/public/plugin.ts @@ -30,10 +30,11 @@ const setupTableVis = async ( core: CoreSetup, { expressions, visualizations }: TableVisPluginSetupDependencies ) => { + // Register visualization at setup, it should not wait for plugin start + visualizations.createBaseVisualization(getTableVisTypeDefinition()); const [coreStart] = await core.getStartServices(); expressions.registerFunction(createTableVisFn); expressions.registerRenderer(getTableVisRenderer(coreStart)); - visualizations.createBaseVisualization(getTableVisTypeDefinition()); }; export class TableVisPlugin implements Plugin { initializerContext: PluginInitializerContext; From 5517e069f97be51edd5f53f7001dafc2801cd054 Mon Sep 17 00:00:00 2001 From: Tomasz Kania Date: Thu, 25 Jun 2026 12:23:54 +0200 Subject: [PATCH 26/88] chore(deps): postcss-selector-parser 6.1.4, dompurify 3.4.11 to address CVEs (#12282) * chore(deps): postcss-selector-parser from 6.0.10 to 6.1.4 Signed-off-by: Tomasz Kania * chore(deps): remove not need it resolutions Signed-off-by: Tomasz Kania * chore(deps): dompurify 3.4.11 Signed-off-by: Tomasz Kania * chore(deps): pixelmatch from 5.2.1 to 5.3.0 Signed-off-by: Tomasz Kania * chore(deps): pngjs 7.0.0 Signed-off-by: Tomasz Kania --------- Signed-off-by: Tomasz Kania --- package.json | 17 ++--- yarn.lock | 198 +++++++-------------------------------------------- 2 files changed, 31 insertions(+), 184 deletions(-) diff --git a/package.json b/package.json index 944849e0b209..6decd5a38cca 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,6 @@ "url": "https://github.com/opensearch-project/opensearch-dashboards.git" }, "resolutions": { - "**/@microsoft/tsdoc-config/ajv": "^6.14.0", "**/@langchain/core/langsmith": "~0.6.0", "**/@types/node": "~22.19.0", "**/@types/hapi__cookie/joi": "^18.2.1", @@ -138,30 +137,24 @@ "**/cpy/globby": "^10.0.1", "**/d3-color": "^3.1.0", "**/elasticsearch/agentkeepalive": "^4.5.0", - "**/es5-ext": "^0.10.63", "**/fetch-mock/path-to-regexp": "^3.3.0", "**/form-data": "^4.0.6", "**/glob-parent": "^6.0.0", "**/jest-config": "npm:@amoo-miki/jest-config@27.5.1", "**/jest-jasmine2": "npm:@amoo-miki/jest-jasmine2@27.5.1", - "**/load-bmfont/phin": "^3.7.1", "**/loader-utils": "^2.0.4", - "**/minimist": "^1.2.8", "**/nth-check": "^2.0.1", "**/semver": "^7.5.3", "**/compression-webpack-plugin/serialize-javascript": "^7.0.3", "**/terser-webpack-plugin/serialize-javascript": "^7.0.3", "**/trim": "^0.0.3", "**/typescript": "~6.0.2", - "**/unset-value": "^2.0.1", "**/yaml": "^2.2.2", "**/json5": "^2.2.3", "**/mime": "^3.0.0", "**/prismjs": "^1.30.0", "**/js-yaml": "^4.2.0", "**/qs": "^6.15.2", - "**/lodash-es": "^4.18.0", - "**/lodash": "^4.18.0", "**/body-parser": "^2.2.1", "**/@tootallnate/once": "^3.0.1", "**/fast-xml-parser": "^5.7.0", @@ -245,7 +238,7 @@ "core-js": "^3.6.5", "deep-freeze-strict": "^1.1.1", "del": "^6.1.1", - "dompurify": "^3.4.7", + "dompurify": "^3.4.11", "echarts": "^6.0.0", "elastic-apm-node": "^4.10.0", "elasticsearch": "^16.7.0", @@ -365,7 +358,7 @@ "@types/dedent": "^0.7.0", "@types/deep-freeze-strict": "^1.1.0", "@types/delete-empty": "^2.0.0", - "@types/dompurify": "^3.0.5", + "@types/dompurify": "^3.2.0", "@types/elasticsearch": "^5.0.33", "@types/enzyme": "^3.10.7", "@types/eslint": "^8.56.0", @@ -404,7 +397,7 @@ "@types/normalize-path": "^3.0.0", "@types/papaparse": "^5.3.15", "@types/pegjs": "^0.10.1", - "@types/pngjs": "^3.4.0", + "@types/pngjs": "^6.0.5", "@types/prop-types": "^15.7.3", "@types/reach__router": "^1.2.6", "@types/react": "^18.2.0", @@ -505,8 +498,8 @@ "node-stream-zip": "^1.15.0", "normalize-path": "^3.0.0", "nyc": "^15.1.0", - "pixelmatch": "^5.1.0", - "pngjs": "^3.4.0", + "pixelmatch": "^5.3.0", + "pngjs": "^7.0.0", "postcss": "^8.4.31", "prettier": "^2.1.1", "prop-types": "^15.7.2", diff --git a/yarn.lock b/yarn.lock index 390f155ceb69..d5f43e19dbd7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5488,12 +5488,12 @@ resolved "https://registry.yarnpkg.com/@types/delete-empty/-/delete-empty-2.0.0.tgz#1647ae9e68f708a6ba778531af667ec55bc61964" integrity sha512-sq+kwx8zA9BSugT9N+Jr8/uWjbHMZ+N/meJEzRyT3gmLq/WMtx/iSIpvdpmBUi/cvXl6Kzpvve8G2ESkabFwmg== -"@types/dompurify@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/dompurify/-/dompurify-3.0.5.tgz#02069a2fcb89a163bacf1a788f73cb415dd75cb7" - integrity sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg== +"@types/dompurify@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@types/dompurify/-/dompurify-3.2.0.tgz#56610bf3e4250df57744d61fbd95422e07dfb840" + integrity sha512-Fgg31wv9QbLDA0SpTOXO3MaxySc4DKGLi8sna4/Utjo4r3ZRPdCt4UQee8BWr+Q5z21yifghREPJGYaEOEIACg== dependencies: - "@types/trusted-types" "*" + dompurify "*" "@types/duplexify@^3.6.0": version "3.6.1" @@ -6037,10 +6037,10 @@ resolved "https://registry.yarnpkg.com/@types/pegjs/-/pegjs-0.10.3.tgz#9e254036c6bf2254cd98caec447a1d79b6607bff" integrity sha512-C/ZkUNe7HONOaDHXfNTZOUzrOvOgrWdrJj1JZ3QTEPi5gOIygcjCpXyxpdJTKVvWFzbobajRbMbQY8d0WrZ6fg== -"@types/pngjs@^3.4.0": - version "3.4.2" - resolved "https://registry.yarnpkg.com/@types/pngjs/-/pngjs-3.4.2.tgz#8dc49b45fbcf18a5873179e3664f049388e39ecf" - integrity sha512-LJVPDraJ5YFEnMHnzxTN4psdWz1M61MtaAAWPn3qnDk5fvs7BAmmQ9pd3KPlrdrvozMyne4ktanD4pg0L7x1Pw== +"@types/pngjs@^6.0.5": + version "6.0.5" + resolved "https://registry.yarnpkg.com/@types/pngjs/-/pngjs-6.0.5.tgz#6dec2f7eb8284543ca4e423f3c09b119fa939ea3" + integrity sha512-0k5eKfrA83JOZPppLtS2C7OUtyNAl2wKNxfyYl9Q5g9lPkgBl/9hNyAu6HuEH2J4XmIv2znEpkDd0SaZVxW6iQ== dependencies: "@types/node" "*" @@ -6349,7 +6349,7 @@ resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg== -"@types/trusted-types@*", "@types/trusted-types@^2.0.7": +"@types/trusted-types@^2.0.7": version "2.0.7" resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== @@ -6986,7 +6986,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.4, ajv@^6.12.5, ajv@^6.14.0: +ajv@^6.12.4, ajv@^6.12.5: version "6.14.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.14.0.tgz#fd067713e228210636ebb08c60bd3765d6dbe73a" integrity sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw== @@ -7892,7 +7892,7 @@ bn.js@^5.1.1, bn.js@^5.2.1, bn.js@^5.2.2: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.3.tgz#16a9e409616b23fef3ccbedb8d42f13bff80295e" integrity sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w== -body-parser@^2.2.1, body-parser@~1.20.3: +body-parser@^2.2.1, body-parser@~1.20.5: version "2.2.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-2.2.2.tgz#1a32cdb966beaf68de50a9dfbe5b58f83cb8890c" integrity sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA== @@ -8265,13 +8265,6 @@ ccount@^1.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -centra@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/centra/-/centra-2.7.0.tgz#4c8312a58436e8a718302011561db7e6a2b0ec18" - integrity sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg== - dependencies: - follow-redirects "^1.15.6" - chai@3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" @@ -9541,14 +9534,6 @@ d3@3.5.17: resolved "https://registry.yarnpkg.com/d3/-/d3-3.5.17.tgz#bc46748004378b21a360c9fc7cf5231790762fb8" integrity sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g= -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - damerau-levenshtein@^1.0.7: version "1.0.8" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" @@ -10142,10 +10127,10 @@ domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" -dompurify@^3.4.7: - version "3.4.7" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.4.7.tgz#e2702ea4fd5d83467f1baef62309466ce7d44a82" - integrity sha512-2jBxDJY4RR06tQNy4w5FlFH7kfxsQZlufd0sbv+chfHCxeJwrFw2baUDsSwvBISD4K4RDbd0PTfy3uNXsR6siA== +dompurify@*, dompurify@^3.4.11: + version "3.4.11" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.4.11.tgz#29c8ba496475f279ef4015784068452fb14a0680" + integrity sha512-zhlUV12GsaRzMsf9q5M254YhA4+VuF0fG+QFqu6aYpoGlKtz+w8//jBcGVYBgQkR5GHjUomejY84AV+/uPbWdw== optionalDependencies: "@types/trusted-types" "^2.0.7" @@ -10665,30 +10650,11 @@ es-toolkit@^1.41.0: resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.42.0.tgz#c9e87c7e2d4759ca26887814e6bc780cf4747fc5" integrity sha512-SLHIyY7VfDJBM8clz4+T2oquwTQxEzu263AyhVK4jREOAwJ+8eebaa4wM3nlvnAqhDrMm2EsA6hWHaQsMPQ1nA== -es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@^0.10.63, es5-ext@~0.10.14: - version "0.10.64" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" - integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== - dependencies: - es6-iterator "^2.0.3" - es6-symbol "^3.1.3" - esniff "^2.0.1" - next-tick "^1.1.0" - es6-error@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== -es6-iterator@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - es6-promise@^4.0.3, es6-promise@^4.2.8: version "4.2.8" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" @@ -10701,14 +10667,6 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -es6-symbol@^3.1.1, es6-symbol@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" @@ -11072,16 +11030,6 @@ eslint@^8.57.1: strip-ansi "^6.0.1" text-table "^0.2.0" -esniff@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" - integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== - dependencies: - d "^1.0.1" - es5-ext "^0.10.62" - event-emitter "^0.3.5" - type "^2.7.2" - espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" @@ -11130,14 +11078,6 @@ etag@^1.8.1, etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= - dependencies: - d "1" - es5-ext "~0.10.14" - event-target-shim@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" @@ -11281,13 +11221,13 @@ express-rate-limit@^8.2.1: ip-address "^10.2.0" express@^4.21.2: - version "4.22.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.22.1.tgz#1de23a09745a4fffdb39247b344bb5eaff382069" - integrity sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g== + version "4.22.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.22.2.tgz#c17ae0981e5efc24b22272f0e041c4662503b700" + integrity sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "~1.20.3" + body-parser "~1.20.5" content-disposition "~0.5.4" content-type "~1.0.4" cookie "~0.7.1" @@ -11306,7 +11246,7 @@ express@^4.21.2: parseurl "~1.3.3" path-to-regexp "~0.1.12" proxy-addr "~2.0.7" - qs "~6.14.0" + qs "~6.15.1" range-parser "~1.2.1" safe-buffer "5.2.1" send "~0.19.0" @@ -11351,13 +11291,6 @@ express@^5.1.0, express@^5.2.1: type-is "^2.0.1" vary "^1.1.2" -ext@^1.1.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" - integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== - dependencies: - type "^2.5.0" - extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" @@ -11766,7 +11699,7 @@ focus-lock@^0.10.2: dependencies: tslib "^2.0.3" -follow-redirects@^1.0.0, follow-redirects@^1.15.6, follow-redirects@^1.16.0: +follow-redirects@^1.0.0, follow-redirects@^1.16.0: version "1.16.0" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.16.0.tgz#28474a159d3b9d11ef62050a14ed60e4df6d61bc" integrity sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw== @@ -12056,13 +11989,6 @@ get-uri@^6.0.1: data-uri-to-buffer "^6.0.2" debug "^4.3.4" -get-value@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-3.0.1.tgz#5efd2a157f1d6a516d7524e124ac52d0a39ef5a8" - integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA== - dependencies: - isobject "^3.0.1" - getopts@*, getopts@^2.2.5: version "2.3.0" resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.3.0.tgz#71e5593284807e03e2427449d4f6712a268666f4" @@ -12417,21 +12343,6 @@ has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: dependencies: has-symbols "^1.0.3" -has-value@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-2.0.2.tgz#d0f12e8780ba8e90e66ad1a21c707fdb67c25658" - integrity sha512-ybKOlcRsK2MqrM3Hmz/lQxXHZ6ejzSPzpNabKB45jb5qDgJvKPa3SdapTsTLwEb9WltgWpOmNax7i+DzNOk4TA== - dependencies: - get-value "^3.0.0" - has-values "^2.0.1" - -has-values@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-2.0.1.tgz#3876200ff86d8a8546a9264a952c17d5fc17579d" - integrity sha512-+QdH3jOmq9P8GfdjFg0eJudqx1FqU62NQJ4P16rOEHeRdl7ckgwn6uqQjzYE0ZoHVV/e5E2esuJ5Gl5+HUW19w== - dependencies: - kind-of "^6.0.2" - has@^1.0.3, has@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" @@ -13627,11 +13538,6 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isobject@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" - integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== - isomorphic-timers-promises@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz#e4137c24dbc54892de8abae3a4b5c1ffff381598" @@ -15047,11 +14953,6 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash-es@^4.18.0: - version "4.18.1" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.18.1.tgz#b962eeb80d9d983a900bf342961fb7418ca10b1d" - integrity sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A== - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -16084,11 +15985,6 @@ next-line@^1.1.0: resolved "https://registry.yarnpkg.com/next-line/-/next-line-1.1.0.tgz#fcae57853052b6a9bae8208e40dd7d3c2d304603" integrity sha1-/K5XhTBStqm66CCOQN19PC0wRgM= -next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - nise@^1.5.2: version "1.5.3" resolved "https://registry.yarnpkg.com/nise/-/nise-1.5.3.tgz#9d2cfe37d44f57317766c6e9408a359c5d3ac1f7" @@ -16993,13 +16889,6 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -phin@^3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/phin/-/phin-3.7.1.tgz#bf841da75ee91286691b10e41522a662aa628fd6" - integrity sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ== - dependencies: - centra "^2.7.0" - picocolors@^1.0.0, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" @@ -17077,13 +16966,6 @@ pirates@^4.0.6: resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== -pixelmatch@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-5.2.1.tgz#9e4e4f4aa59648208a31310306a5bed5522b0d65" - integrity sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ== - dependencies: - pngjs "^4.0.1" - pixelmatch@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-5.3.0.tgz#5e5321a7abedfb7962d60dbf345deda87cb9560a" @@ -17148,16 +17030,6 @@ plur@^4.0.0: dependencies: irregular-plurals "^3.2.0" -pngjs@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== - -pngjs@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-4.0.1.tgz#f803869bb2fc1bfe1bf99aa4ec21c108117cfdbe" - integrity sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg== - pngjs@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-6.0.0.tgz#ca9e5d2aa48db0228a52c419c3308e87720da821" @@ -17231,9 +17103,9 @@ postcss-scss@^4.0.2: integrity sha512-j4KxzWovfdHsyxwl1BxkUal/O4uirvHgdzMKS1aWJBAV0qh2qj5qAZqpeBfVUYGWv+4iK9Az7SPyZ4fyNju1uA== postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.6, postcss-selector-parser@^6.0.9: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + version "6.1.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz#fdec4ca80f5781bd216ca9bf89a2a0fccfffa5f0" + integrity sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -17533,7 +17405,7 @@ puppeteer@^24.14.0: puppeteer-core "24.14.0" typed-query-selector "^2.12.0" -qs@^6.11.0, qs@^6.12.3, qs@^6.14.0, qs@^6.14.1, qs@^6.15.2, qs@~6.14.0, qs@~6.14.1: +qs@^6.11.0, qs@^6.12.3, qs@^6.14.0, qs@^6.14.1, qs@^6.15.2, qs@~6.14.1, qs@~6.15.1: version "6.15.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.15.2.tgz#fd55426d710403ddccc45e0f9eab16db7727ece9" integrity sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw== @@ -20766,16 +20638,6 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.5.0, type@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" - integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== - typed-array-buffer@^1.0.0, typed-array-buffer@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" @@ -21056,14 +20918,6 @@ unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -unset-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-2.0.1.tgz#57bed0c22d26f28d69acde5df9a11b77c74d2df3" - integrity sha512-2hvrBfjUE00PkqN+q0XP6yRAOGrR06uSiUoIQGZkc7GxvQ9H7v8quUPNtZjMg4uux69i8HWpIjLPUKwCuRGyNg== - dependencies: - has-value "^2.0.2" - isobject "^4.0.0" - untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" From 202b8215cc8834331af5f990222da8f445dbf906 Mon Sep 17 00:00:00 2001 From: Lin Wang Date: Thu, 25 Jun 2026 21:27:52 +0800 Subject: [PATCH 27/88] fix: update command suggestions on slash command register/unregister (#12281) When a slash command is registered or unregistered at runtime, the command suggestion dropdown now updates immediately. Previously, suggestions only refreshed on user input change, causing stale entries to remain visible if a command was dynamically removed. Adds an onChange listener to SlashCommandRegistry that notifies the useCommandMenuKeyboard hook to re-evaluate suggestions. Signed-off-by: Lin Wang --- .../hooks/use_command_menu_keyboard.test.ts | 64 +++++++++++++++++++ .../public/hooks/use_command_menu_keyboard.ts | 15 ++++- .../public/services/slash_commands.test.ts | 61 ++++++++++++++++++ .../chat/public/services/slash_commands.ts | 12 ++++ 4 files changed, 150 insertions(+), 2 deletions(-) diff --git a/src/plugins/chat/public/hooks/use_command_menu_keyboard.test.ts b/src/plugins/chat/public/hooks/use_command_menu_keyboard.test.ts index 832beebaae3e..d2fec53d6454 100644 --- a/src/plugins/chat/public/hooks/use_command_menu_keyboard.test.ts +++ b/src/plugins/chat/public/hooks/use_command_menu_keyboard.test.ts @@ -13,6 +13,7 @@ jest.mock('../services/slash_commands', () => { const mockRegistry = { getSuggestions: jest.fn(), get: jest.fn(), + onChange: jest.fn(() => jest.fn()), }; return { slashCommandRegistry: mockRegistry, @@ -663,4 +664,67 @@ describe('useCommandMenuKeyboard', () => { expect(mockOnKeyDown).toHaveBeenCalledWith(event); }); }); + + describe('onChange registry subscription', () => { + it('should not subscribe to onChange when command menu is hidden', () => { + (slashCommandRegistry.getSuggestions as jest.Mock).mockReturnValue([]); + (slashCommandRegistry.onChange as jest.Mock).mockClear(); + + renderHook(() => + useCommandMenuKeyboard({ + input: 'hello', + onInputChange: mockOnInputChange, + onKeyDown: mockOnKeyDown, + inputRef, + }) + ); + + expect(slashCommandRegistry.onChange).not.toHaveBeenCalled(); + }); + + it('should subscribe to onChange when command menu is shown', () => { + (slashCommandRegistry.getSuggestions as jest.Mock).mockReturnValue([mockCommands[0]]); + (slashCommandRegistry.onChange as jest.Mock).mockClear(); + + renderHook(() => + useCommandMenuKeyboard({ + input: '/h', + onInputChange: mockOnInputChange, + onKeyDown: mockOnKeyDown, + inputRef, + }) + ); + + expect(slashCommandRegistry.onChange).toHaveBeenCalled(); + }); + + it('should update suggestions when onChange fires', () => { + let onChangeCallback: (() => void) | undefined; + (slashCommandRegistry.onChange as jest.Mock).mockImplementation((cb) => { + onChangeCallback = cb; + return jest.fn(); + }); + (slashCommandRegistry.getSuggestions as jest.Mock).mockReturnValue([mockCommands[0]]); + + const { result } = renderHook(() => + useCommandMenuKeyboard({ + input: '/h', + onInputChange: mockOnInputChange, + onKeyDown: mockOnKeyDown, + inputRef, + }) + ); + + expect(result.current.commandSuggestions).toHaveLength(1); + + // Simulate command unregistration + (slashCommandRegistry.getSuggestions as jest.Mock).mockReturnValue([]); + act(() => { + onChangeCallback?.(); + }); + + expect(result.current.commandSuggestions).toHaveLength(0); + expect(result.current.showCommandMenu).toBe(false); + }); + }); }); diff --git a/src/plugins/chat/public/hooks/use_command_menu_keyboard.ts b/src/plugins/chat/public/hooks/use_command_menu_keyboard.ts index a28b5bf94ee0..8c4f4857ff6c 100644 --- a/src/plugins/chat/public/hooks/use_command_menu_keyboard.ts +++ b/src/plugins/chat/public/hooks/use_command_menu_keyboard.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { useState, useEffect, RefObject } from 'react'; +import { useState, useEffect, useRef, RefObject } from 'react'; import { slashCommandRegistry, SlashCommand } from '../services/slash_commands'; interface UseCommandMenuKeyboardParams { @@ -36,7 +36,8 @@ export const useCommandMenuKeyboard = ({ const [commandSuggestions, setCommandSuggestions] = useState([]); const [selectedCommandIndex, setSelectedCommandIndex] = useState(0); const [ghostText, setGhostText] = useState(''); - + const inputValueRef = useRef(input); + inputValueRef.current = input; // Update command suggestions when input changes useEffect(() => { if (input.startsWith('/')) { @@ -84,6 +85,16 @@ export const useCommandMenuKeyboard = ({ } }, [input]); + // Clear suggestions when commands are registered/unregistered + useEffect(() => { + if (!showCommandMenu) return; + return slashCommandRegistry.onChange(() => { + const suggestions = slashCommandRegistry.getSuggestions(inputValueRef.current); + setCommandSuggestions(suggestions); + setShowCommandMenu(suggestions.length > 0); + }); + }, [showCommandMenu]); + useEffect(() => { const textArea = inputRef.current; if (textArea) { diff --git a/src/plugins/chat/public/services/slash_commands.test.ts b/src/plugins/chat/public/services/slash_commands.test.ts index e382d0d3ba7d..98c70394998f 100644 --- a/src/plugins/chat/public/services/slash_commands.test.ts +++ b/src/plugins/chat/public/services/slash_commands.test.ts @@ -624,4 +624,65 @@ describe('SlashCommandRegistry', () => { consoleWarnSpy.mockRestore(); }); }); + + describe('onChange', () => { + it('should notify listener on register', () => { + const listener = jest.fn(); + slashCommandRegistry.onChange(listener); + + slashCommandRegistry.register({ + command: 'test', + description: 'Test', + handler: () => 'result', + }); + + expect(listener).toHaveBeenCalledTimes(1); + }); + + it('should notify listener on unregister', () => { + slashCommandRegistry.register({ + command: 'test', + description: 'Test', + handler: () => 'result', + }); + + const listener = jest.fn(); + slashCommandRegistry.onChange(listener); + + slashCommandRegistry.unregister('test'); + + expect(listener).toHaveBeenCalledTimes(1); + }); + + it('should not notify after unsubscribe', () => { + const listener = jest.fn(); + const unsubscribe = slashCommandRegistry.onChange(listener); + + unsubscribe(); + + slashCommandRegistry.register({ + command: 'test', + description: 'Test', + handler: () => 'result', + }); + + expect(listener).not.toHaveBeenCalled(); + }); + + it('should notify multiple listeners', () => { + const listener1 = jest.fn(); + const listener2 = jest.fn(); + slashCommandRegistry.onChange(listener1); + slashCommandRegistry.onChange(listener2); + + slashCommandRegistry.register({ + command: 'test', + description: 'Test', + handler: () => 'result', + }); + + expect(listener1).toHaveBeenCalledTimes(1); + expect(listener2).toHaveBeenCalledTimes(1); + }); + }); }); diff --git a/src/plugins/chat/public/services/slash_commands.ts b/src/plugins/chat/public/services/slash_commands.ts index 63264603f6aa..b6855f33d511 100644 --- a/src/plugins/chat/public/services/slash_commands.ts +++ b/src/plugins/chat/public/services/slash_commands.ts @@ -17,6 +17,7 @@ export interface SlashCommand { class SlashCommandRegistry { private commands: Map = new Map(); + private listeners: Set<() => void> = new Set(); register(command: SlashCommand) { if (this.commands.has(command.command)) { @@ -25,10 +26,21 @@ class SlashCommandRegistry { return; } this.commands.set(command.command, command); + this.notifyListeners(); } unregister(commandName: string) { this.commands.delete(commandName); + this.notifyListeners(); + } + + onChange(listener: () => void): () => void { + this.listeners.add(listener); + return () => this.listeners.delete(listener); + } + + private notifyListeners() { + this.listeners.forEach((fn) => fn()); } get(commandName: string): SlashCommand | undefined { From 592e3a757f79b1db0c5674505c4af1788521be32 Mon Sep 17 00:00:00 2001 From: Qi Tang <1352711780@qq.com> Date: Thu, 25 Jun 2026 21:52:58 +0800 Subject: [PATCH 28/88] feat(discover): register page context for AI chatbot in classic Discover page (#12278) Signed-off-by: tq0905 <1352711780@qq.com> --- .../discover/opensearch_dashboards.json | 2 +- .../view_components/context/index.test.tsx | 103 ++++++++++++++++++ .../view_components/context/index.tsx | 22 ++++ src/plugins/discover/public/build_services.ts | 3 + src/plugins/discover/public/plugin.ts | 2 + 5 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 src/plugins/discover/public/application/view_components/context/index.test.tsx diff --git a/src/plugins/discover/opensearch_dashboards.json b/src/plugins/discover/opensearch_dashboards.json index df5df3cdb09b..38e86e02fe5d 100644 --- a/src/plugins/discover/opensearch_dashboards.json +++ b/src/plugins/discover/opensearch_dashboards.json @@ -16,7 +16,7 @@ "visualizations", "usageCollection" ], - "optionalPlugins": ["home", "share", "explore"], + "optionalPlugins": ["home", "share", "explore", "contextProvider"], "requiredBundles": [ "home", "opensearchDashboardsUtils", diff --git a/src/plugins/discover/public/application/view_components/context/index.test.tsx b/src/plugins/discover/public/application/view_components/context/index.test.tsx new file mode 100644 index 000000000000..235c401fc5d3 --- /dev/null +++ b/src/plugins/discover/public/application/view_components/context/index.test.tsx @@ -0,0 +1,103 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { render } from '@testing-library/react'; +import { ViewProps } from '../../../../../data_explorer/public'; + +import DiscoverContext from './index'; + +// Mock the heavy dependencies so we can focus on the page-context registration logic. +jest.mock('../utils/use_search', () => ({ + useSearch: jest.fn(() => ({})), +})); + +jest.mock('../../../../../opensearch_dashboards_react/public', () => ({ + useOpenSearchDashboards: () => ({ services: {} }), + OpenSearchDashboardsContextProvider: () => null, +})); + +const mockUsePageContext = jest.fn(); +const mockGetServices = jest.fn(); +jest.mock('../../../opensearch_dashboards_services', () => ({ + getServices: () => mockGetServices(), +})); + +// DiscoverContext is mounted by the router with full ViewProps (AppMountParameters); +// for these unit tests we only care about the page-context side effect, so we cast a +// minimal props object and let the mocked hooks handle the rest. +const renderContext = () => + render( + +
child
+
+ ); + +describe('DiscoverContext page context registration', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('registers page context with the contextProvider hook when available', () => { + mockGetServices.mockReturnValue({ + contextProvider: { hooks: { usePageContext: mockUsePageContext } }, + }); + + renderContext(); + + expect(mockUsePageContext).toHaveBeenCalledTimes(1); + const options = mockUsePageContext.mock.calls[0][0]; + expect(options.description).toBe('Discover application page context'); + expect(options.categories).toEqual(['page', 'static']); + expect(typeof options.convert).toBe('function'); + }); + + it('maps url state to the expected page context shape via convert', () => { + mockGetServices.mockReturnValue({ + contextProvider: { hooks: { usePageContext: mockUsePageContext } }, + }); + + renderContext(); + + const { convert } = mockUsePageContext.mock.calls[0][0]; + + const dataset = { id: 'logs-*', title: 'logs-*', type: 'INDEX_PATTERN' }; + const result = convert({ + _g: { time: { from: 'now-15m', to: 'now' } }, + _q: { query: { query: 'status:200', language: 'PPL', dataset } }, + }); + + expect(result).toEqual({ + appId: 'discover', + timeRange: { from: 'now-15m', to: 'now' }, + query: { query: 'status:200', language: 'PPL' }, + dataset, + }); + }); + + it('falls back to safe defaults when url state is empty', () => { + mockGetServices.mockReturnValue({ + contextProvider: { hooks: { usePageContext: mockUsePageContext } }, + }); + + renderContext(); + + const { convert } = mockUsePageContext.mock.calls[0][0]; + const result = convert({}); + + expect(result).toEqual({ + appId: 'discover', + timeRange: undefined, + query: { query: '', language: 'kuery' }, + dataset: undefined, + }); + }); + + it('does not throw when the contextProvider plugin is unavailable (NOOP fallback)', () => { + mockGetServices.mockReturnValue({}); + + expect(() => renderContext()).not.toThrow(); + expect(mockUsePageContext).not.toHaveBeenCalled(); + }); +}); diff --git a/src/plugins/discover/public/application/view_components/context/index.tsx b/src/plugins/discover/public/application/view_components/context/index.tsx index f4180d16b196..93f06c2b5b26 100644 --- a/src/plugins/discover/public/application/view_components/context/index.tsx +++ b/src/plugins/discover/public/application/view_components/context/index.tsx @@ -14,6 +14,10 @@ import { useSearch, SearchContextValue } from '../utils/use_search'; const SearchContext = React.createContext({} as SearchContextValue); +// NOOP fallback used when the contextProvider plugin is not available +// (e.g. AI features disabled). Keeps the hook call unconditional. +const NOOP_PAGE_CONTEXT_HOOK = (_options?: any): string => ''; + // eslint-disable-next-line import/no-default-export export default function DiscoverContext({ children }: React.PropsWithChildren) { const { services: deServices } = useOpenSearchDashboards(); @@ -23,6 +27,24 @@ export default function DiscoverContext({ children }: React.PropsWithChildren ({ + appId: 'discover', + timeRange: urlState?._g?.time, + query: { + query: urlState?._q?.query?.query || '', + language: urlState?._q?.query?.language || 'kuery', + }, + dataset: urlState?._q?.query?.dataset, + }), + categories: ['page', 'static'], + }); + return ( {children} diff --git a/src/plugins/discover/public/build_services.ts b/src/plugins/discover/public/build_services.ts index aad247309e8c..4093ca6e8238 100644 --- a/src/plugins/discover/public/build_services.ts +++ b/src/plugins/discover/public/build_services.ts @@ -60,6 +60,7 @@ import { UrlForwardingStart } from '../../url_forwarding/public'; import { NavigationPublicPluginStart } from '../../navigation/public'; import { DataExplorerServices } from '../../data_explorer/public'; import { Storage } from '../../opensearch_dashboards_utils/public'; +import { ContextProviderStart } from '../../context_provider/public'; export interface DiscoverServices { addBasePath: (path: string) => string; @@ -86,6 +87,7 @@ export interface DiscoverServices { visualizations: VisualizationsStart; storage: Storage; uiActions: UiActionsStart; + contextProvider?: ContextProviderStart; } export function buildServices( @@ -130,6 +132,7 @@ export function buildServices( visualizations: plugins.visualizations, storage, uiActions: plugins.uiActions, + contextProvider: plugins.contextProvider, }; } diff --git a/src/plugins/discover/public/plugin.ts b/src/plugins/discover/public/plugin.ts index 90ac84bb791a..231f26e2d1f4 100644 --- a/src/plugins/discover/public/plugin.ts +++ b/src/plugins/discover/public/plugin.ts @@ -79,6 +79,7 @@ declare module '../../share/public' { } import { UsageCollectionSetup } from '../../usage_collection/public'; import { ExplorePluginSetup } from '../../explore/public'; +import { ContextProviderStart } from '../../context_provider/public'; /** * @public @@ -150,6 +151,7 @@ export interface DiscoverStartPlugins { urlForwarding: UrlForwardingStart; inspector: InspectorPublicPluginStart; visualizations: VisualizationsStart; + contextProvider?: ContextProviderStart; } /** From 0a0d24b80a5410e9130a3c1a14b6d8cfa480ba39 Mon Sep 17 00:00:00 2001 From: Hailong Cui Date: Fri, 26 Jun 2026 09:37:13 +0800 Subject: [PATCH 29/88] feat(chat): parse and display inline suggestions from agent responses (#12210) --- .../osd-agents/src/config/model_config.ts | 2 +- .../src/prompts/observability_prompt.md | 8 +- .../common/parse_inline_suggestions.test.ts | 90 +++++++++++++++++++ .../chat/common/parse_inline_suggestions.ts | 55 ++++++++++++ .../chat/public/components/chat_messages.tsx | 12 ++- .../components/chat_suggestions.test.tsx | 2 +- .../public/components/chat_suggestions.tsx | 68 +++++++++++--- .../chat/public/components/chat_window.tsx | 2 + .../chat/public/components/message_row.tsx | 9 +- .../export/investigation_export_service.ts | 3 +- 10 files changed, 233 insertions(+), 18 deletions(-) create mode 100644 src/plugins/chat/common/parse_inline_suggestions.test.ts create mode 100644 src/plugins/chat/common/parse_inline_suggestions.ts diff --git a/packages/osd-agents/src/config/model_config.ts b/packages/osd-agents/src/config/model_config.ts index dab4d85ad20b..cc2edafa20eb 100644 --- a/packages/osd-agents/src/config/model_config.ts +++ b/packages/osd-agents/src/config/model_config.ts @@ -14,7 +14,7 @@ export interface ModelConfig { export class ModelConfigManager { private static logger = new Logger(); private static configPath = join(__dirname, '../../configuration/default-model.json'); - private static defaultModelId = 'us.anthropic.claude-sonnet-4-20250514-v1:0'; + private static defaultModelId = 'us.anthropic.claude-sonnet-4-6'; static getDefaultModel(): ModelConfig { if (existsSync(this.configPath)) { diff --git a/packages/osd-agents/src/prompts/observability_prompt.md b/packages/osd-agents/src/prompts/observability_prompt.md index 700209ea157d..28f7341fba3b 100644 --- a/packages/osd-agents/src/prompts/observability_prompt.md +++ b/packages/osd-agents/src/prompts/observability_prompt.md @@ -448,4 +448,10 @@ Only when investigating issues, use this structured format: - Provide context for handoffs between teams - Include relevant stakeholders in communication plans -Remember: Your goal is to help users quickly understand what's happening in their systems, why it's happening, and what they should do about it. Always prioritize system stability and user experience while providing clear, actionable guidance. \ No newline at end of file +Remember: Your goal is to help users quickly understand what's happening in their systems, why it's happening, and what they should do about it. Always prioritize system stability and user experience while providing clear, actionable guidance. + +## Follow-up Suggestions + +After answering the user's question, suggest 2-4 short follow-up actions the user might want to take next. Format them as a JSON array on the LAST line of your response, prefixed with SUGGESTIONS: like: +SUGGESTIONS:["Check cluster health","Show index mapping","List recent errors"] +Each suggestion must be under 60 characters. Do not include suggestions if the conversation is just a greeting or the answer is trivial. diff --git a/src/plugins/chat/common/parse_inline_suggestions.test.ts b/src/plugins/chat/common/parse_inline_suggestions.test.ts new file mode 100644 index 000000000000..582ebe808ac9 --- /dev/null +++ b/src/plugins/chat/common/parse_inline_suggestions.test.ts @@ -0,0 +1,90 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { parseInlineSuggestions, stripInlineSuggestions } from './parse_inline_suggestions'; + +describe('parseInlineSuggestions', () => { + it('should parse SUGGESTIONS line from end of content', () => { + const content = 'Here is your answer.\nSUGGESTIONS:["Check health","List indices"]'; + const result = parseInlineSuggestions(content); + expect(result.cleanContent).toBe('Here is your answer.'); + expect(result.suggestions).toEqual(['Check health', 'List indices']); + }); + + it('should handle SUGGESTIONS with spaces after colon', () => { + const content = 'Answer text\nSUGGESTIONS: ["One","Two"]'; + const result = parseInlineSuggestions(content); + expect(result.cleanContent).toBe('Answer text'); + expect(result.suggestions).toEqual(['One', 'Two']); + }); + + it('should return empty suggestions when no SUGGESTIONS line', () => { + const content = 'Just a normal response with no suggestions'; + const result = parseInlineSuggestions(content); + expect(result.cleanContent).toBe(content); + expect(result.suggestions).toEqual([]); + }); + + it('should return empty suggestions for invalid JSON', () => { + const content = 'Answer\nSUGGESTIONS:[not valid json]'; + const result = parseInlineSuggestions(content); + expect(result.cleanContent).toBe(content); + expect(result.suggestions).toEqual([]); + }); + + it('should return empty suggestions when array contains non-strings', () => { + const content = 'Answer\nSUGGESTIONS:[1, 2, 3]'; + const result = parseInlineSuggestions(content); + expect(result.cleanContent).toBe(content); + expect(result.suggestions).toEqual([]); + }); + + it('should handle empty string', () => { + const result = parseInlineSuggestions(''); + expect(result.cleanContent).toBe(''); + expect(result.suggestions).toEqual([]); + }); + + it('should handle multiline content with SUGGESTIONS at end', () => { + const content = 'Line 1\nLine 2\nLine 3\nSUGGESTIONS:["A","B","C"]'; + const result = parseInlineSuggestions(content); + expect(result.cleanContent).toBe('Line 1\nLine 2\nLine 3'); + expect(result.suggestions).toEqual(['A', 'B', 'C']); + }); + + it('should not match SUGGESTIONS in the middle of content', () => { + const content = 'SUGGESTIONS:["early"]\nMore content after'; + const result = parseInlineSuggestions(content); + expect(result.cleanContent).toBe(content); + expect(result.suggestions).toEqual([]); + }); +}); + +describe('stripInlineSuggestions', () => { + it('should strip SUGGESTIONS line and return clean content', () => { + const content = 'Hello world\nSUGGESTIONS:["Do something"]'; + expect(stripInlineSuggestions(content)).toBe('Hello world'); + }); + + it('should return content unchanged when no SUGGESTIONS line', () => { + const content = 'No suggestions here'; + expect(stripInlineSuggestions(content)).toBe('No suggestions here'); + }); + + it('should strip incomplete SUGGESTIONS during streaming', () => { + const content = 'Answer text\n\nSUGGESTIONS:["Show only error'; + expect(stripInlineSuggestions(content)).toBe('Answer text'); + }); + + it('should strip SUGGESTIONS:[ with no content yet', () => { + const content = 'Answer text\n\nSUGGESTIONS:['; + expect(stripInlineSuggestions(content)).toBe('Answer text'); + }); + + it('should not strip text that merely contains the word SUGGESTIONS', () => { + const content = 'Here are my SUGGESTIONS: use a pie chart'; + expect(stripInlineSuggestions(content)).toBe(content); + }); +}); diff --git a/src/plugins/chat/common/parse_inline_suggestions.ts b/src/plugins/chat/common/parse_inline_suggestions.ts new file mode 100644 index 000000000000..0d141291fd9c --- /dev/null +++ b/src/plugins/chat/common/parse_inline_suggestions.ts @@ -0,0 +1,55 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +const SUGGESTIONS_PATTERN = /\n?SUGGESTIONS:\s*(\[[\s\S]*?\])\s*$/; + +/** + * Parse inline suggestions from assistant response content. + * Matches a trailing line like: SUGGESTIONS:["action1","action2"] + */ +export function parseInlineSuggestions( + content: string +): { cleanContent: string; suggestions: string[] } { + if (!content) { + return { cleanContent: content, suggestions: [] }; + } + + const match = content.match(SUGGESTIONS_PATTERN); + if (!match) { + return { cleanContent: content, suggestions: [] }; + } + + try { + const parsed = JSON.parse(match[1]); + if (Array.isArray(parsed) && parsed.every((item) => typeof item === 'string')) { + return { + cleanContent: content.replace(SUGGESTIONS_PATTERN, '').trimEnd(), + suggestions: parsed, + }; + } + } catch { + // invalid JSON — return content as-is + } + + return { cleanContent: content, suggestions: [] }; +} + +/** + * Strip the SUGGESTIONS: line from content for display purposes. + * Also strips incomplete SUGGESTIONS: suffixes during streaming + * (where the JSON array hasn't fully arrived yet). + */ +export function stripInlineSuggestions(content: string): string { + const { cleanContent, suggestions } = parseInlineSuggestions(content); + if (suggestions.length > 0) { + return cleanContent; + } + // Strip incomplete SUGGESTIONS:[ suffix during streaming + const incompletePattern = /\n?SUGGESTIONS:\s*\[[\s\S]*$/; + if (incompletePattern.test(content)) { + return content.replace(incompletePattern, '').trimEnd(); + } + return content; +} diff --git a/src/plugins/chat/public/components/chat_messages.tsx b/src/plugins/chat/public/components/chat_messages.tsx index 026dd294ac89..69bceecf5bfe 100644 --- a/src/plugins/chat/public/components/chat_messages.tsx +++ b/src/plugins/chat/public/components/chat_messages.tsx @@ -115,6 +115,8 @@ interface ChatMessagesProps { onApproveConfirmation?: () => void; onRejectConfirmation?: () => void; onFillInput?: (content: string) => void; + onRemoveInput?: (content: string) => void; + inputValue?: string; startResponse?: boolean; threadId?: string; onShowHistory?: () => void; @@ -299,6 +301,8 @@ const ChatMessagesComponent: React.FC = ({ onApproveConfirmation, onRejectConfirmation, onFillInput, + onRemoveInput, + inputValue, startResponse, threadId, onShowHistory, @@ -588,7 +592,13 @@ const ChatMessagesComponent: React.FC = ({ {renderAssistantContent()} {suggestionsEnabled && lastAssistantMessageIndex === index && ( - + )} ); diff --git a/src/plugins/chat/public/components/chat_suggestions.test.tsx b/src/plugins/chat/public/components/chat_suggestions.test.tsx index a9e801d62196..424338d9ea5e 100644 --- a/src/plugins/chat/public/components/chat_suggestions.test.tsx +++ b/src/plugins/chat/public/components/chat_suggestions.test.tsx @@ -77,7 +77,7 @@ describe('ChatSuggestions', () => { // Wait for suggestions to load await waitFor(() => { - expect(screen.getByText('Available suggestions')).toBeInTheDocument(); + expect(screen.getByText('Follow up')).toBeInTheDocument(); }); // Check that both suggestions are rendered diff --git a/src/plugins/chat/public/components/chat_suggestions.tsx b/src/plugins/chat/public/components/chat_suggestions.tsx index aa7a183f12fe..1cbc323f5bb3 100644 --- a/src/plugins/chat/public/components/chat_suggestions.tsx +++ b/src/plugins/chat/public/components/chat_suggestions.tsx @@ -11,12 +11,13 @@ import { EuiText, IconType, } from '@elastic/eui'; -import React, { useEffect, useState } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; import { TextColor } from '@elastic/eui/src/components/text/text_color'; import { useChatContext } from '../contexts/chat_context'; import { Message } from '../../common/types'; import { ChatContext } from '../services/suggested_action'; import { SuggestedActions } from '../services/suggested_action/types'; +import { parseInlineSuggestions } from '../../common/parse_inline_suggestions'; import './chat_suggestions.scss'; @@ -26,20 +27,21 @@ interface SuggestionBubbleProps { content: string; iconType?: IconType; actionType?: string; + selected?: boolean; } const SuggestionBubble: React.FC = ({ onClick, color, content, - iconType = 'chatRight', + iconType = 'returnKey', actionType, + selected = false, }: SuggestionBubbleProps) => { // Determine if this is a custom suggestion from a plugin const isCustomSuggestion = actionType === 'customize'; - // Use different icon for custom suggestions - const suggestionIcon = isCustomSuggestion ? 'faceHappy' : iconType; + const suggestionIcon = selected ? 'check' : isCustomSuggestion ? 'faceHappy' : iconType; // Build CSS classes for visual distinction const panelClasses = [ @@ -47,7 +49,10 @@ const SuggestionBubble: React.FC = ({ isCustomSuggestion ? 'chat-suggestion-bubble-panel--custom' : 'chat-suggestion-bubble-panel--default', - ].join(' '); + selected ? 'chat-suggestion-bubble-panel--selected' : '', + ] + .filter(Boolean) + .join(' '); return ( = ({
@@ -81,15 +86,34 @@ const SuggestionBubble: React.FC = ({ export const ChatSuggestions = ({ messages, currentMessage, + onFillInput, + onRemoveInput, + inputValue, }: { messages: Message[]; currentMessage: Message; + onFillInput?: (content: string) => void; + onRemoveInput?: (content: string) => void; + inputValue?: string; }) => { const { suggestedActionsService, chatService } = useChatContext(); const [customSuggestions, setCustomSuggestions] = useState([]); const [isLoadingCustomSuggestions, setIsLoadingCustomSuggestions] = useState(false); + // Parse inline suggestions from the current assistant message content + const inlineSuggestionActions: SuggestedActions[] = useMemo(() => { + if (currentMessage.role !== 'assistant' || typeof currentMessage.content !== 'string') { + return []; + } + const { suggestions } = parseInlineSuggestions(currentMessage.content); + return suggestions.map((text) => ({ + actionType: 'send_as_input', + message: text, + action: async () => true, + })); + }, [currentMessage]); + // Load custom suggestions when component mounts or context changes useEffect(() => { const loadCustomSuggestions = async () => { @@ -117,27 +141,47 @@ export const ChatSuggestions = ({ loadCustomSuggestions(); }, [suggestedActionsService, chatService, messages, currentMessage]); - if (isLoadingCustomSuggestions || customSuggestions.length === 0) { + const allSuggestions = [...inlineSuggestionActions, ...customSuggestions]; + + if (isLoadingCustomSuggestions || allSuggestions.length === 0) { return null; } + + const isSuggestionSelected = (message: string) => !!inputValue && inputValue.includes(message); + + const handleSuggestionClick = (suggestedAction: SuggestedActions) => { + const isInline = suggestedAction.actionType === 'send_as_input'; + + if (isInline) { + if (isSuggestionSelected(suggestedAction.message)) { + onRemoveInput?.(suggestedAction.message); + } else { + onFillInput?.(suggestedAction.message); + } + } else { + suggestedAction.action(); + } + }; + return (
- Available suggestions + Follow up - {customSuggestions.map((suggestedAction, i) => ( -
+ {allSuggestions.map((suggestedAction) => ( +
handleSuggestionClick(suggestedAction)} + color={isSuggestionSelected(suggestedAction.message) ? 'success' : 'default'} content={suggestedAction.message} actionType={suggestedAction.actionType} + selected={isSuggestionSelected(suggestedAction.message)} />
diff --git a/src/plugins/chat/public/components/chat_window.tsx b/src/plugins/chat/public/components/chat_window.tsx index 2b21ab8150d6..3a852f2e0ee0 100644 --- a/src/plugins/chat/public/components/chat_window.tsx +++ b/src/plugins/chat/public/components/chat_window.tsx @@ -663,6 +663,8 @@ const ChatWindowContent = React.forwardRef( onApproveConfirmation={handleApproveConfirmation} onRejectConfirmation={handleRejectConfirmation} onFillInput={setInput} + inputValue={input} + onRemoveInput={(content: string) => setInput((prev) => prev.replace(content, '').trim())} threadId={chatService.getThreadId()} onShowHistory={handleShowHistory} conversationHistoryService={chatService.conversationHistoryService} diff --git a/src/plugins/chat/public/components/message_row.tsx b/src/plugins/chat/public/components/message_row.tsx index f9d48ab32ec4..50d16843971e 100644 --- a/src/plugins/chat/public/components/message_row.tsx +++ b/src/plugins/chat/public/components/message_row.tsx @@ -9,6 +9,7 @@ import { euiThemeVars } from '@osd/ui-shared-deps/theme'; import { i18n } from '@osd/i18n'; import { Markdown } from '../../../opensearch_dashboards_react/public'; import type { Message, AssistantMessage } from '../../common/types'; +import { stripInlineSuggestions } from '../../common/parse_inline_suggestions'; import { ShareModal } from './share_modal'; import './message_row.scss'; @@ -50,11 +51,17 @@ export const MessageRow: React.FC = ({ // Handle multimodal content (text + images) or simple string content const renderContent = () => { - const content = + const rawContent = message.role === 'user' && 'rawMessage' in message && message.rawMessage ? message.rawMessage : message.content || ''; + // Strip inline suggestions from assistant messages before display + const content = + typeof rawContent === 'string' && message.role === 'assistant' + ? stripInlineSuggestions(rawContent) + : rawContent; + // If content is a string, render as markdown if (typeof content === 'string') { return ; diff --git a/src/plugins/chat/public/services/export/investigation_export_service.ts b/src/plugins/chat/public/services/export/investigation_export_service.ts index 091d97c4c943..3823e89f51e3 100644 --- a/src/plugins/chat/public/services/export/investigation_export_service.ts +++ b/src/plugins/chat/public/services/export/investigation_export_service.ts @@ -10,6 +10,7 @@ import type { TextInputContent, } from '../../../common/types'; import { TOOL_EXECUTION_ERROR_PREFIX } from '../../../common'; +import { stripInlineSuggestions } from '../../../common/parse_inline_suggestions'; import { ChatExportData, ChatExportOptions, ChatTraceStep, QuestionImage } from './types'; import { generatePDFReport } from './pdf_template'; import { generateMarkdownReport } from './markdown_template'; @@ -36,7 +37,7 @@ export async function collectChatExportData( return { question, questionImage, - answer: targetMessage.content || '', + answer: stripInlineSuggestions(targetMessage.content || ''), traces: options.includeTraces ? extractTraces(timeline, targetIndex) : [], metadata: options.includeMetadata ? { timestamp: new Date().toISOString(), threadId } From 6647f7ef91530fea006569248dc33e50a7054128 Mon Sep 17 00:00:00 2001 From: Yulong Ruan Date: Fri, 26 Jun 2026 10:52:13 +0800 Subject: [PATCH 30/88] Upgrade rspack 2 (#11933) * chore(build): upgrade Rspack to v2 Disable import/no-unresolved for @rspack/core require @rspack/core v2 is published as a pure ESM package ("type": "module" with no CJS entry in exports). ESLint's import resolver cannot resolve ESM-only packages in a require() context. Node.js 22 handles this at runtime via native require(esm) support, so the import works correctly despite the resolver limitation. Signed-off-by: Yulong Ruan * update test snapshots Signed-off-by: Yulong Ruan * update failing snapshots Signed-off-by: Yulong Ruan --------- Signed-off-by: Yulong Ruan --- package.json | 6 +- .../basic_optimization.test.ts.snap | 6 +- .../osd-optimizer/src/worker/run_compilers.ts | 10 +- .../src/worker/webpack.config.ts | 63 +- packages/osd-pm/webpack.config.js | 4 +- packages/osd-ui-shared-deps/scripts/build.js | 1 + packages/osd-ui-shared-deps/webpack.config.js | 1 + yarn.lock | 1528 ++++------------- 8 files changed, 424 insertions(+), 1195 deletions(-) diff --git a/package.json b/package.json index 6decd5a38cca..7c87185c9689 100644 --- a/package.json +++ b/package.json @@ -338,9 +338,9 @@ "@osd/test": "1.0.0", "@osd/test-subj-selector": "0.2.1", "@osd/utility-types": "1.0.0", - "@rsdoctor/rspack-plugin": "^1.3.11", - "@rspack/cli": "1.7.11", - "@rspack/core": "1.7.11", + "@rsdoctor/rspack-plugin": "1.5.13", + "@rspack/cli": "2.0.8", + "@rspack/core": "2.0.8", "@swc/helpers": "^0.5.21", "@tailwindcss/postcss": "4.2.4", "@testing-library/dom": "^8.11.3", diff --git a/packages/osd-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap b/packages/osd-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap index ff31f6d80748..cab73fb1fbc2 100644 --- a/packages/osd-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap +++ b/packages/osd-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap @@ -74,8 +74,8 @@ OptimizerConfig { } `; -exports[`prepares assets for distribution: bar bundle 1`] = `"(()=>{var __webpack_modules__={92(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{\\"default\\":()=>__rspack_default_export});var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"body{color:green}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___},806(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{\\"default\\":()=>__rspack_default_export});var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"p{background-color:#639}body{width:10}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___},26(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{\\"default\\":()=>__rspack_default_export});var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"body{color:green}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___},524(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{\\"default\\":()=>__rspack_default_export});var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"p{background-color:#639}body{width:11}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___},167(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{\\"default\\":()=>__rspack_default_export});var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"body{color:green}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___},309(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{\\"default\\":()=>__rspack_default_export});var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"p{background-color:#639}body{width:12}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___},483(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{\\"default\\":()=>__rspack_default_export});var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"body{color:green}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___},913(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{\\"default\\":()=>__rspack_default_export});var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"p{background-color:#639}body{width:13}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___},274(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{\\"default\\":()=>__rspack_default_export});var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"body{color:green}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___},816(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{\\"default\\":()=>__rspack_default_export});var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"p{background-color:#639}body{width:14}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___},52(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{\\"default\\":()=>__rspack_default_export});var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"body{color:green}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___},426(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{\\"default\\":()=>__rspack_default_export});var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"p{background-color:#639}body{width:15}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___},445(module){\\"use strict\\";module.exports=function(cssWithMappingToString){var list=[];list.toString=function toString(){return this.map(function(item){var content=cssWithMappingToString(item);if(item[2]){return\\"@media \\".concat(item[2],\\" {\\").concat(content,\\"}\\")}return content}).join(\\"\\")};list.i=function(modules,mediaQuery,dedupe){if(typeof modules===\\"string\\"){modules=[[null,modules,\\"\\"]]}var alreadyImportedModules={};if(dedupe){for(var i=0;ibarLibFn,fooLibFn:()=>foo_public.fooLibFn});var styles=__webpack_require__(922);var public_0=__webpack_require__(224);var foo_public=__webpack_require__(148);function barLibFn(){return\\"bar\\"};},148(module){module.exports=__osdBundles__.get(\\"plugin/foo/public\\")}};var __webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(cachedModule!==undefined){return cachedModule.exports}var module=__webpack_module_cache__[moduleId]={id:moduleId,exports:{}};__webpack_modules__[moduleId](module,module.exports,__webpack_require__);return module.exports}(()=>{__webpack_require__.n=module=>{var getter=module&&module.__esModule?()=>module[\\"default\\"]:()=>module;__webpack_require__.d(getter,{a:getter});return getter}})();(()=>{__webpack_require__.d=(exports,definition)=>{for(var key in definition){if(__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)){Object.defineProperty(exports,key,{enumerable:true,get:definition[key]})}}}})();(()=>{__webpack_require__.g=(()=>{if(typeof globalThis===\\"object\\")return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(typeof window===\\"object\\")return window}})()})();(()=>{__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop)})();(()=>{__webpack_require__.r=exports=>{if(typeof Symbol!==\\"undefined\\"&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:\\"Module\\"})}Object.defineProperty(exports,\\"__esModule\\",{value:true})}})();(()=>{__webpack_require__.nc=undefined})();(()=>{__webpack_require__.rv=()=>\\"1.7.11\\"})();(()=>{var scriptUrl;if(__webpack_require__.g.importScripts)scriptUrl=__webpack_require__.g.location+\\"\\";var document1=__webpack_require__.g.document;if(!scriptUrl&&document1){if(document1.currentScript&&document1.currentScript.tagName.toUpperCase()===\\"SCRIPT\\")scriptUrl=document1.currentScript.src;if(!scriptUrl){var scripts=document1.getElementsByTagName(\\"script\\");if(scripts.length){var i=scripts.length-1;while(i>-1&&(!scriptUrl||!/^http(s?):/.test(scriptUrl)))scriptUrl=scripts[i--].src}}}if(!scriptUrl)throw new Error(\\"Automatic publicPath is not supported in this browser\\");scriptUrl=scriptUrl.replace(/^blob:/,\\"\\").replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\");__webpack_require__.p=scriptUrl})();(()=>{__webpack_require__.ruid=\\"bundler=rspack@1.7.11\\"})();var __webpack_exports__={};(()=>{\\"use strict\\";var _node_modules_val_loader_dist_cjs_js_key_bar_osd_ui_shared_deps_public_path_module_creator_js__rspack_import_0=__webpack_require__(21);var _node_modules_val_loader_dist_cjs_js_key_bar_osd_ui_shared_deps_public_path_module_creator_js__rspack_import_0_default=__webpack_require__.n(_node_modules_val_loader_dist_cjs_js_key_bar_osd_ui_shared_deps_public_path_module_creator_js__rspack_import_0);__osdBundles__.define(\\"plugin/bar/public\\",()=>{return __webpack_require__(473)})})()})();"`; +exports[`prepares assets for distribution: bar bundle 1`] = `"(()=>{var __webpack_modules__={92(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"body{color:green}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___;__webpack_require__.d(__webpack_exports__,{},{\\"default\\":__rspack_default_export})},806(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"p{background-color:#639}body{width:10}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___;__webpack_require__.d(__webpack_exports__,{},{\\"default\\":__rspack_default_export})},26(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"body{color:green}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___;__webpack_require__.d(__webpack_exports__,{},{\\"default\\":__rspack_default_export})},524(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"p{background-color:#639}body{width:11}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___;__webpack_require__.d(__webpack_exports__,{},{\\"default\\":__rspack_default_export})},167(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"body{color:green}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___;__webpack_require__.d(__webpack_exports__,{},{\\"default\\":__rspack_default_export})},309(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"p{background-color:#639}body{width:12}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___;__webpack_require__.d(__webpack_exports__,{},{\\"default\\":__rspack_default_export})},483(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"body{color:green}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___;__webpack_require__.d(__webpack_exports__,{},{\\"default\\":__rspack_default_export})},913(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"p{background-color:#639}body{width:13}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___;__webpack_require__.d(__webpack_exports__,{},{\\"default\\":__rspack_default_export})},274(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"body{color:green}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___;__webpack_require__.d(__webpack_exports__,{},{\\"default\\":__rspack_default_export})},816(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"p{background-color:#639}body{width:14}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___;__webpack_require__.d(__webpack_exports__,{},{\\"default\\":__rspack_default_export})},52(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"body{color:green}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___;__webpack_require__.d(__webpack_exports__,{},{\\"default\\":__rspack_default_export})},426(module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0=__webpack_require__(445);var _node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default=__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_0);var ___CSS_LOADER_EXPORT___=_node_modules_css_loader_dist_runtime_api_js__rspack_import_0_default()(function(i){return i[1]});___CSS_LOADER_EXPORT___.push([module.id,\\"p{background-color:#639}body{width:15}\\\\n\\",\\"\\"]);const __rspack_default_export=___CSS_LOADER_EXPORT___;__webpack_require__.d(__webpack_exports__,{},{\\"default\\":__rspack_default_export})},445(module){\\"use strict\\";module.exports=function(cssWithMappingToString){var list=[];list.toString=function toString(){return this.map(function(item){var content=cssWithMappingToString(item);if(item[2]){return\\"@media \\".concat(item[2],\\" {\\").concat(content,\\"}\\")}return content}).join(\\"\\")};list.i=function(modules,mediaQuery,dedupe){if(typeof modules===\\"string\\"){modules=[[null,modules,\\"\\"]]}var alreadyImportedModules={};if(dedupe){for(var i=0;ibarLibFn,fooLibFn:()=>foo_public.fooLibFn});var styles=__webpack_require__(922);var public_0=__webpack_require__(224);var foo_public=__webpack_require__(148);function barLibFn(){return\\"bar\\"};},148(module){module.exports=__osdBundles__.get(\\"plugin/foo/public\\")}};var __webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(cachedModule!==undefined){return cachedModule.exports}var module=__webpack_module_cache__[moduleId]={id:moduleId,exports:{}};__webpack_modules__[moduleId](module,module.exports,__webpack_require__);return module.exports}(()=>{__webpack_require__.n=module=>{var getter=module&&module.__esModule?()=>module[\\"default\\"]:()=>module;__webpack_require__.d(getter,{a:getter});return getter}})();(()=>{__webpack_require__.d=(exports,getters,values)=>{var define=(defs,kind)=>{for(var key in defs){if(__webpack_require__.o(defs,key)&&!__webpack_require__.o(exports,key)){Object.defineProperty(exports,key,{enumerable:true,[kind]:defs[key]})}}};define(getters,\\"get\\");define(values,\\"value\\")}})();(()=>{__webpack_require__.g=(()=>{if(typeof globalThis===\\"object\\")return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(typeof window===\\"object\\")return window}})()})();(()=>{__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop)})();(()=>{__webpack_require__.r=exports=>{if(typeof Symbol!==\\"undefined\\"&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:\\"Module\\"})}Object.defineProperty(exports,\\"__esModule\\",{value:true})}})();(()=>{__webpack_require__.nc=undefined})();(()=>{var scriptUrl;if(__webpack_require__.g.importScripts)scriptUrl=__webpack_require__.g.location+\\"\\";var document1=__webpack_require__.g.document;if(!scriptUrl&&document1){if(document1.currentScript&&document1.currentScript.tagName.toUpperCase()===\\"SCRIPT\\")scriptUrl=document1.currentScript.src;if(!scriptUrl){var scripts=document1.getElementsByTagName(\\"script\\");if(scripts.length){var i=scripts.length-1;while(i>-1&&(!scriptUrl||!/^http(s?):/.test(scriptUrl)))scriptUrl=scripts[i--].src}}}if(!scriptUrl)throw new Error(\\"Automatic publicPath is not supported in this browser\\");scriptUrl=scriptUrl.replace(/^blob:/,\\"\\").replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\");__webpack_require__.p=scriptUrl})();var __webpack_exports__={};(()=>{\\"use strict\\";var _node_modules_val_loader_dist_cjs_js_key_bar_osd_ui_shared_deps_public_path_module_creator_js__rspack_import_0=__webpack_require__(21);var _node_modules_val_loader_dist_cjs_js_key_bar_osd_ui_shared_deps_public_path_module_creator_js__rspack_import_0_default=__webpack_require__.n(_node_modules_val_loader_dist_cjs_js_key_bar_osd_ui_shared_deps_public_path_module_creator_js__rspack_import_0);__osdBundles__.define(\\"plugin/bar/public\\",()=>{return __webpack_require__(70)})})()})();"`; -exports[`prepares assets for distribution: foo async bundle 1`] = `"\\"use strict\\";(self[\\"foo_bundle_jsonpfunction\\"]=self[\\"foo_bundle_jsonpfunction\\"]||[]).push([[\\"0\\"],{217(__unused_rspack_module,__webpack_exports__,__webpack_require__){__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{foo:()=>foo});function foo(){}}}]);"`; +exports[`prepares assets for distribution: foo async bundle 1`] = `"\\"use strict\\";(self[\\"foo_bundle_jsonpfunction\\"]=self[\\"foo_bundle_jsonpfunction\\"]||[]).push([[0],{217(__unused_rspack_module,__webpack_exports__,__webpack_require__){__webpack_require__.r(__webpack_exports__);function foo(){}__webpack_require__.d(__webpack_exports__,{foo:()=>foo})}}]);"`; -exports[`prepares assets for distribution: foo bundle 1`] = `"(()=>{var __webpack_modules__={260(__unused_rspack_module,__unused_rspack_exports,__webpack_require__){__webpack_require__.p=window.__osdPublicPath__[\\"foo\\"];__webpack_require__.nc=window.__webpack_nonce__||\\"\\"},220(__unused_rspack_module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{getFoo:()=>getFoo,ext:()=>ext,fooLibFn:()=>fooLibFn});function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done)resolve(value);else Promise.resolve(value).then(_next,_throw)}function _async_to_generator(fn){return function(){var self1=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self1,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,\\"next\\",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,\\"throw\\",err)}_next(undefined)})}};function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator===\\"function\\"?Iterator:Object).prototype),d=Object.defineProperty;return d(g,\\"next\\",{value:verb(0)}),d(g,\\"throw\\",{value:verb(1)}),d(g,\\"return\\",{value:verb(2)}),typeof Symbol===\\"function\\"&&d(g,Symbol.iterator,{value:function(){return this}}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError(\\"Generator is already executing.\\");while(g&&(g=0,op[0]&&(_=0)),_)try{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;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]{__webpack_require__.n=module=>{var getter=module&&module.__esModule?()=>module[\\"default\\"]:()=>module;__webpack_require__.d(getter,{a:getter});return getter}})();(()=>{__webpack_require__.d=(exports,definition)=>{for(var key in definition){if(__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)){Object.defineProperty(exports,key,{enumerable:true,get:definition[key]})}}}})();(()=>{__webpack_require__.f={};__webpack_require__.e=chunkId=>{return Promise.all(Object.keys(__webpack_require__.f).reduce((promises,key)=>{__webpack_require__.f[key](chunkId,promises);return promises},[]))}})();(()=>{__webpack_require__.u=chunkId=>{return\\"foo.chunk.\\"+chunkId+\\".js\\"}})();(()=>{__webpack_require__.g=(()=>{if(typeof globalThis===\\"object\\")return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(typeof window===\\"object\\")return window}})()})();(()=>{__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop)})();(()=>{var inProgress={};__webpack_require__.l=function(url,done,key,chunkId){if(inProgress[url]){inProgress[url].push(done);return}var script,needAttach;if(key!==undefined){var scripts=document.getElementsByTagName(\\"script\\");for(var i=0;i{__webpack_require__.r=exports=>{if(typeof Symbol!==\\"undefined\\"&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:\\"Module\\"})}Object.defineProperty(exports,\\"__esModule\\",{value:true})}})();(()=>{__webpack_require__.nc=undefined})();(()=>{__webpack_require__.rv=()=>\\"1.7.11\\"})();(()=>{var scriptUrl;if(__webpack_require__.g.importScripts)scriptUrl=__webpack_require__.g.location+\\"\\";var document1=__webpack_require__.g.document;if(!scriptUrl&&document1){if(document1.currentScript&&document1.currentScript.tagName.toUpperCase()===\\"SCRIPT\\")scriptUrl=document1.currentScript.src;if(!scriptUrl){var scripts=document1.getElementsByTagName(\\"script\\");if(scripts.length){var i=scripts.length-1;while(i>-1&&(!scriptUrl||!/^http(s?):/.test(scriptUrl)))scriptUrl=scripts[i--].src}}}if(!scriptUrl)throw new Error(\\"Automatic publicPath is not supported in this browser\\");scriptUrl=scriptUrl.replace(/^blob:/,\\"\\").replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\");__webpack_require__.p=scriptUrl})();(()=>{var installedChunks={\\"1\\":0};__webpack_require__.f.j=function(chunkId,promises){var installedChunkData=__webpack_require__.o(installedChunks,chunkId)?installedChunks[chunkId]:undefined;if(installedChunkData!==0){if(installedChunkData){promises.push(installedChunkData[2])}else{if(true){var promise=new Promise((resolve,reject)=>installedChunkData=installedChunks[chunkId]=[resolve,reject]);promises.push(installedChunkData[2]=promise);var url=__webpack_require__.p+__webpack_require__.u(chunkId);var error=new Error;var loadingEnded=function(event){if(__webpack_require__.o(installedChunks,chunkId)){installedChunkData=installedChunks[chunkId];if(installedChunkData!==0)installedChunks[chunkId]=undefined;if(installedChunkData){var errorType=event&&(event.type===\\"load\\"?\\"missing\\":event.type);var realSrc=event&&event.target&&event.target.src;error.message=\\"Loading chunk \\"+chunkId+\\" failed.\\\\n(\\"+errorType+\\": \\"+realSrc+\\")\\";error.name=\\"ChunkLoadError\\";error.type=errorType;error.request=realSrc;installedChunkData[1](error)}}};__webpack_require__.l(url,loadingEnded,\\"chunk-\\"+chunkId,chunkId)}}}};var __rspack_jsonp=(parentChunkLoadingFunction,data)=>{var chunkIds=data[0];var moreModules=data[1];var runtime=data[2];var moduleId,chunkId,i=0;if(chunkIds.some(id=>installedChunks[id]!==0)){for(moduleId in moreModules){if(__webpack_require__.o(moreModules,moduleId)){__webpack_require__.m[moduleId]=moreModules[moduleId]}}if(runtime)var result=runtime(__webpack_require__)}if(parentChunkLoadingFunction)parentChunkLoadingFunction(data);for(;i{__webpack_require__.ruid=\\"bundler=rspack@1.7.11\\"})();var __webpack_exports__={};(()=>{\\"use strict\\";var _node_modules_val_loader_dist_cjs_js_key_foo_osd_ui_shared_deps_public_path_module_creator_js__rspack_import_0=__webpack_require__(260);var _node_modules_val_loader_dist_cjs_js_key_foo_osd_ui_shared_deps_public_path_module_creator_js__rspack_import_0_default=__webpack_require__.n(_node_modules_val_loader_dist_cjs_js_key_foo_osd_ui_shared_deps_public_path_module_creator_js__rspack_import_0);__osdBundles__.define(\\"plugin/foo/public\\",()=>{return __webpack_require__(220)})})()})();"`; +exports[`prepares assets for distribution: foo bundle 1`] = `"(()=>{var __webpack_modules__={260(__unused_rspack_module,__unused_rspack_exports,__webpack_require__){__webpack_require__.p=window.__osdPublicPath__[\\"foo\\"];__webpack_require__.nc=window.__webpack_nonce__||\\"\\"},971(__unused_rspack_module,__unused_rspack___webpack_exports__,__webpack_require__){\\"use strict\\";var _node_modules_val_loader_dist_cjs_js_key_foo_osd_ui_shared_deps_public_path_module_creator_js__rspack_import_0=__webpack_require__(260);var _node_modules_val_loader_dist_cjs_js_key_foo_osd_ui_shared_deps_public_path_module_creator_js__rspack_import_0_default=__webpack_require__.n(_node_modules_val_loader_dist_cjs_js_key_foo_osd_ui_shared_deps_public_path_module_creator_js__rspack_import_0);__osdBundles__.define(\\"plugin/foo/public\\",()=>{return __webpack_require__(601)})},601(__unused_rspack_module,__webpack_exports__,__webpack_require__){\\"use strict\\";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{ext:()=>ext,fooLibFn:()=>fooLibFn,getFoo:()=>getFoo});function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done)resolve(value);else Promise.resolve(value).then(_next,_throw)}function _async_to_generator(fn){return function(){var self1=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self1,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,\\"next\\",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,\\"throw\\",err)}_next(undefined)})}};function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator===\\"function\\"?Iterator:Object).prototype),d=Object.defineProperty;return d(g,\\"next\\",{value:verb(0)}),d(g,\\"throw\\",{value:verb(1)}),d(g,\\"return\\",{value:verb(2)}),typeof Symbol===\\"function\\"&&d(g,Symbol.iterator,{value:function(){return this}}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError(\\"Generator is already executing.\\");while(g&&(g=0,op[0]&&(_=0)),_)try{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;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]{__webpack_require__.n=module=>{var getter=module&&module.__esModule?()=>module[\\"default\\"]:()=>module;__webpack_require__.d(getter,{a:getter});return getter}})();(()=>{__webpack_require__.d=(exports,getters,values)=>{var define=(defs,kind)=>{for(var key in defs){if(__webpack_require__.o(defs,key)&&!__webpack_require__.o(exports,key)){Object.defineProperty(exports,key,{enumerable:true,[kind]:defs[key]})}}};define(getters,\\"get\\");define(values,\\"value\\")}})();(()=>{__webpack_require__.f={};__webpack_require__.e=chunkId=>{return Promise.all(Object.keys(__webpack_require__.f).reduce((promises,key)=>{__webpack_require__.f[key](chunkId,promises);return promises},[]))}})();(()=>{__webpack_require__.u=chunkId=>{return\\"foo.chunk.\\"+chunkId+\\".js\\"}})();(()=>{__webpack_require__.g=(()=>{if(typeof globalThis===\\"object\\")return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(typeof window===\\"object\\")return window}})()})();(()=>{__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop)})();(()=>{var inProgress={};__webpack_require__.l=function(url,done,key,chunkId){if(inProgress[url]){inProgress[url].push(done);return}var script,needAttach;if(key!==undefined){var scripts=document.getElementsByTagName(\\"script\\");for(var i=0;i{__webpack_require__.r=exports=>{if(typeof Symbol!==\\"undefined\\"&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:\\"Module\\"})}Object.defineProperty(exports,\\"__esModule\\",{value:true})}})();(()=>{__webpack_require__.nc=undefined})();(()=>{var scriptUrl;if(__webpack_require__.g.importScripts)scriptUrl=__webpack_require__.g.location+\\"\\";var document1=__webpack_require__.g.document;if(!scriptUrl&&document1){if(document1.currentScript&&document1.currentScript.tagName.toUpperCase()===\\"SCRIPT\\")scriptUrl=document1.currentScript.src;if(!scriptUrl){var scripts=document1.getElementsByTagName(\\"script\\");if(scripts.length){var i=scripts.length-1;while(i>-1&&(!scriptUrl||!/^http(s?):/.test(scriptUrl)))scriptUrl=scripts[i--].src}}}if(!scriptUrl)throw new Error(\\"Automatic publicPath is not supported in this browser\\");scriptUrl=scriptUrl.replace(/^blob:/,\\"\\").replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\");__webpack_require__.p=scriptUrl})();(()=>{var installedChunks={1:0};__webpack_require__.f.j=function(chunkId,promises){var installedChunkData=__webpack_require__.o(installedChunks,chunkId)?installedChunks[chunkId]:undefined;if(installedChunkData!==0){if(installedChunkData){promises.push(installedChunkData[2])}else{if(true){var promise=new Promise((resolve,reject)=>installedChunkData=installedChunks[chunkId]=[resolve,reject]);promises.push(installedChunkData[2]=promise);var url=__webpack_require__.p+__webpack_require__.u(chunkId);var error=new Error;var loadingEnded=function(event){if(__webpack_require__.o(installedChunks,chunkId)){installedChunkData=installedChunks[chunkId];if(installedChunkData!==0)installedChunks[chunkId]=undefined;if(installedChunkData){var errorType=event&&(event.type===\\"load\\"?\\"missing\\":event.type);var realSrc=event&&event.target&&event.target.src;error.message=\\"Loading chunk \\"+chunkId+\\" failed.\\\\n(\\"+errorType+\\": \\"+realSrc+\\")\\";error.name=\\"ChunkLoadError\\";error.type=errorType;error.request=realSrc;installedChunkData[1](error)}}};__webpack_require__.l(url,loadingEnded,\\"chunk-\\"+chunkId,chunkId)}}}};var __rspack_jsonp=(parentChunkLoadingFunction,data)=>{var chunkIds=data[0];var moreModules=data[1];var runtime=data[2];var moduleId,chunkId,i=0;if(chunkIds.some(id=>installedChunks[id]!==0)){for(moduleId in moreModules){if(__webpack_require__.o(moreModules,moduleId)){__webpack_require__.m[moduleId]=moreModules[moduleId]}}if(runtime)var result=runtime(__webpack_require__)}if(parentChunkLoadingFunction)parentChunkLoadingFunction(data);for(;i= 1.43.0 < 2" - compression-webpack-plugin@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-11.1.0.tgz#ee340d2029cf99ccecdea9ad1410b377d15b48b3" @@ -8825,29 +8610,11 @@ compression-webpack-plugin@^11.1.0: schema-utils "^4.2.0" serialize-javascript "^6.0.2" -compression@^1.7.4: - version "1.8.0" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.0.tgz#09420efc96e11a0f44f3a558de59e321364180f7" - integrity sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA== - dependencies: - bytes "3.1.2" - compressible "~2.0.18" - debug "2.6.9" - negotiator "~0.6.4" - on-headers "~1.0.2" - safe-buffer "5.2.1" - vary "~1.1.2" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -connect-history-api-fallback@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" - integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== - console-browserify@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" @@ -8870,14 +8637,7 @@ content-disposition@^1.0.0: dependencies: safe-buffer "5.2.1" -content-disposition@~0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@^1.0.5, content-type@~1.0.4: +content-type@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== @@ -8899,12 +8659,7 @@ cookie-signature@^1.2.1: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.2.2.tgz#57c7fc3cc293acab9fec54d73e15690ebe4a1793" integrity sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg== -cookie-signature@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.7.tgz#ab5dd7ab757c54e60f37ef6550f481c426d10454" - integrity sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA== - -cookie@^0.7.1, cookie@~0.7.1, cookie@~0.7.2: +cookie@^0.7.1, cookie@~0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== @@ -9575,18 +9330,6 @@ dayjs@^1.10.4: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== -debounce@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" - integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== - -debug@2.6.9, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - debug@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -9608,6 +9351,13 @@ debug@4.3.1: dependencies: ms "2.1.2" +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + debug@^3.1.0, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -9734,19 +9484,6 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -default-browser-id@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.1.tgz#f7a7ccb8f5104bf8e0f71ba3b1ccfa5eafdb21e8" - integrity sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q== - -default-browser@^5.2.1: - version "5.4.0" - resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.4.0.tgz#b55cf335bb0b465dd7c961a02cd24246aa434287" - integrity sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg== - dependencies: - bundle-name "^4.1.0" - default-browser-id "^5.0.0" - default-require-extensions@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.0.tgz#e03f93aac9b2b6443fc52e5e4a37b3ad9ad8df96" @@ -9775,11 +9512,6 @@ define-data-property@^1.0.1, define-data-property@^1.1.4: es-errors "^1.3.0" gopd "^1.0.1" -define-lazy-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" - integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== - define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" @@ -9873,16 +9605,11 @@ delete-empty@^2.0.0: relative "^3.0.2" rimraf "^2.6.2" -depd@2.0.0, depd@^2.0.0, depd@~2.0.0: +depd@^2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - dependency-check@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/dependency-check/-/dependency-check-4.1.0.tgz#d45405cabb50298f8674fe28ab594c8a5530edff" @@ -9906,11 +9633,6 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -9936,11 +9658,6 @@ detect-node-es@^1.1.0: resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - detective@^5.0.2: version "5.2.0" resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" @@ -10024,13 +9741,6 @@ discontinuous-range@1.0.0: resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= -dns-packet@^5.2.2: - version "5.6.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" - integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -10189,7 +9899,7 @@ dunder-proto@^1.0.1: es-errors "^1.3.0" gopd "^1.2.0" -duplexer@^0.1.1, duplexer@^0.1.2: +duplexer@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== @@ -10299,6 +10009,11 @@ electron-to-chromium@^1.5.263: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.279.tgz#67dfdeb22fd81412d0d18d1d9b2c749e9b8945cb" integrity sha512-0bblUU5UNdOt5G7XqGiJtpZMONma6WAfq9vsFmtn9x1+joAObr6x1chfqyxFSDCAFwFhCQDrqeAr6MYdpwJ9Hg== +electron-to-chromium@^1.5.328: + version "1.5.371" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.371.tgz#fa5684f2a514c57368823f9e75553f9a7c5ef0be" + integrity sha512-e9htk9mAYL6AzmkEhSvVVw7IWGSBJ/Bqdn2eRyRLrj1g6sncN4WbFt5qnILYoCktktr45pyjIrOiRvBThQ808w== + elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" @@ -10359,7 +10074,7 @@ emoticon@^3.2.0: resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-3.2.0.tgz#c008ca7d7620fac742fe1bf4af8ff8fed154ae7f" integrity sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg== -encodeurl@^2.0.0, encodeurl@~2.0.0: +encodeurl@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== @@ -10392,14 +10107,6 @@ engine.io@~6.6.0: engine.io-parser "~5.2.1" ws "~8.18.3" -enhanced-resolve@5.12.0: - version "5.12.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" - integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - enhanced-resolve@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" @@ -10450,7 +10157,12 @@ env-paths@^2.2.1: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== -envinfo@7.19.0, envinfo@^7.7.3: +envinfo@7.21.0: + version "7.21.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.21.0.tgz#04a251be79f92548541f37d13c8b6f22940c3bae" + integrity sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow== + +envinfo@^7.7.3: version "7.19.0" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.19.0.tgz#b4b4507a27e9900b0175f556167fd3a95f8623f1" integrity sha512-DoSM9VyG6O3vqBf+p3Gjgr/Q52HYBBtO3v+4koAxt1MnWr+zEnxE+nke/yXS4lt2P4SYCHQ4V3f1i88LQVOpAw== @@ -10645,10 +10357,10 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es-toolkit@^1.41.0: - version "1.42.0" - resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.42.0.tgz#c9e87c7e2d4759ca26887814e6bc780cf4747fc5" - integrity sha512-SLHIyY7VfDJBM8clz4+T2oquwTQxEzu263AyhVK4jREOAwJ+8eebaa4wM3nlvnAqhDrMm2EsA6hWHaQsMPQ1nA== +es-toolkit@^1.47.0: + version "1.47.0" + resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.47.0.tgz#846778dac47af951f9917363ec5a3b94beeb8ddc" + integrity sha512-n1GuoD0WEQZMBk5tttoZSqwgyLx01oqa5XsBmCHwPyNe1S9jPBEmtR2pSgp2kJuWE3ciFZ6yRHmY4pM4C3OOkw== es6-error@^4.0.1: version "4.1.1" @@ -10672,7 +10384,7 @@ escalade@^3.1.1, escalade@^3.2.0: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== -escape-html@^1.0.3, escape-html@~1.0.3: +escape-html@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== @@ -11073,7 +10785,7 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@^1.8.1, etag@~1.8.1: +etag@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== @@ -11088,7 +10800,7 @@ eventemitter2@6.4.7: resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.7.tgz#a7f6c4d7abf28a14c1ef3442f21cb306a054271d" integrity sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg== -eventemitter3@^4.0.0, eventemitter3@^4.0.4: +eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== @@ -11172,11 +10884,6 @@ exit-hook@^2.2.0: resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-2.2.1.tgz#007b2d92c6428eda2b76e7016a34351586934593" integrity sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw== -exit-hook@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-4.0.0.tgz#c1e16ebd03d3166f837b1502dac755bb5c460d58" - integrity sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ== - exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -11220,43 +10927,6 @@ express-rate-limit@^8.2.1: dependencies: ip-address "^10.2.0" -express@^4.21.2: - version "4.22.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.22.2.tgz#c17ae0981e5efc24b22272f0e041c4662503b700" - integrity sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "~1.20.5" - content-disposition "~0.5.4" - content-type "~1.0.4" - cookie "~0.7.1" - cookie-signature "~1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~2.0.0" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.3.1" - fresh "~0.5.2" - http-errors "~2.0.0" - merge-descriptors "1.0.3" - methods "~1.1.2" - on-finished "~2.4.1" - parseurl "~1.3.3" - path-to-regexp "~0.1.12" - proxy-addr "~2.0.7" - qs "~6.15.1" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "~0.19.0" - serve-static "~1.16.2" - setprototypeof "1.2.0" - statuses "~2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - express@^5.1.0, express@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/express/-/express-5.2.1.tgz#8f21d15b6d327f92b4794ecf8cb08a72f956ac04" @@ -11450,13 +11120,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -11564,10 +11227,10 @@ filelist@^1.0.1: dependencies: minimatch "^3.0.4" -filesize@^10.1.6: - version "10.1.6" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-10.1.6.tgz#31194da825ac58689c0bce3948f33ce83aabd361" - integrity sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w== +filesize@^11.0.17: + version "11.0.17" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-11.0.17.tgz#fea569a71f0f716129fd7f5110427b7868499823" + integrity sha512-oHLTvMLw6imZUl1se/RBQrFlyy50nXce4sU7yGR6Qc0JgCwqnfiFsAnEwotdGmfKLD7SArGUk2/5STU0k8LOBQ== fill-range@^7.1.1: version "7.1.1" @@ -11593,19 +11256,6 @@ finalhandler@^2.1.0: parseurl "^1.3.3" statuses "^2.0.1" -finalhandler@~1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.2.tgz#1ebc2228fc7673aac4a472c310cc05b77d852b88" - integrity sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg== - dependencies: - debug "2.6.9" - encodeurl "~2.0.0" - escape-html "~1.0.3" - on-finished "~2.4.1" - parseurl "~1.3.3" - statuses "~2.0.2" - unpipe "~1.0.0" - find-babel-config@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-2.1.2.tgz#2841b1bfbbbcdb971e1e39df8cbc43dafa901716" @@ -11699,7 +11349,7 @@ focus-lock@^0.10.2: dependencies: tslib "^2.0.3" -follow-redirects@^1.0.0, follow-redirects@^1.16.0: +follow-redirects@^1.16.0: version "1.16.0" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.16.0.tgz#28474a159d3b9d11ef62050a14ed60e4df6d61bc" integrity sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw== @@ -11785,11 +11435,6 @@ fresh@^2.0.0: resolved "https://registry.yarnpkg.com/fresh/-/fresh-2.0.0.tgz#8dd7df6a1b3a1b3a5cf186c05a5dd267622635a4" integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A== -fresh@~0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - fromentries@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" @@ -12057,11 +11702,6 @@ glob-stream@^6.1.0: to-absolute-glob "^2.0.0" unique-stream "^2.0.2" -glob-to-regex.js@^1.0.0, glob-to-regex.js@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz#2b323728271d133830850e32311f40766c5f6413" - integrity sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ== - glob-to-regexp@^0.4.0, glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" @@ -12215,7 +11855,7 @@ got@^11.8.2: p-cancelable "^2.0.0" responselike "^2.0.0" -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -12246,18 +11886,6 @@ gulp-zip@^5.0.2: vinyl "^2.1.0" yazl "^2.5.1" -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - handlebars@^4.7.9: version "4.7.9" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.9.tgz#6f139082ab58dc4e5a0e51efe7db5ae890d56a0f" @@ -12514,16 +12142,6 @@ hosted-git-info@^4.0.1: dependencies: lru-cache "^6.0.0" -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - hpagent@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-1.2.0.tgz#0ae417895430eb3770c03443456b8d90ca464903" @@ -12544,7 +12162,7 @@ html-encoding-sniffer@^2.0.1: dependencies: whatwg-encoding "^1.0.5" -html-escaper@^2.0.0, html-escaper@^2.0.2: +html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== @@ -12604,12 +12222,7 @@ http-cache-semantics@^4.0.0: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== - -http-errors@^2.0.0, http-errors@~2.0.0, http-errors@~2.0.1: +http-errors@^2.0.0, http-errors@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b" integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== @@ -12620,16 +12233,6 @@ http-errors@^2.0.0, http-errors@~2.0.0, http-errors@~2.0.1: statuses "~2.0.2" toidentifier "~1.0.1" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-headers@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/http-headers/-/http-headers-3.0.2.tgz#5147771292f0b39d6778d930a3a59a76fc7ef44d" @@ -12637,11 +12240,6 @@ http-headers@^3.0.2: dependencies: next-line "^1.1.0" -http-parser-js@>=0.5.1: - version "0.5.10" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" - integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA== - http-proxy-agent@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" @@ -12667,26 +12265,6 @@ http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1, http-proxy-agent@^7.0.2: agent-base "^7.1.0" debug "^4.3.4" -http-proxy-middleware@^2.0.9: - version "2.0.9" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz#e9e63d68afaa4eee3d147f39149ab84c0c2815ef" - integrity sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q== - dependencies: - "@types/http-proxy" "^1.17.8" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - http-signature@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.4.0.tgz#dee5a9ba2bf49416abc544abd6d967f6a94c8c3f" @@ -12742,11 +12320,6 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -hyperdyperid@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" - integrity sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A== - hyphenate-style-name@^1.0.3: version "1.1.0" resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz#1797bf50369588b47b72ca6d5e65374607cf4436" @@ -12894,11 +12467,6 @@ inherits@2, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - ini@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" @@ -13015,11 +12583,6 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipaddr.js@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" - integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== - irregular-plurals@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-3.3.0.tgz#67d0715d4361a60d9fd9ee80af3881c631a31ee2" @@ -13129,11 +12692,6 @@ is-decimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== -is-docker@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" - integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== - is-extendable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" @@ -13203,13 +12761,6 @@ is-hexadecimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== -is-inside-container@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" - integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== - dependencies: - is-docker "^3.0.0" - is-installed-globally@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" @@ -13253,11 +12804,6 @@ is-negative-zero@^2.0.2: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== -is-network-error@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/is-network-error/-/is-network-error-1.3.0.tgz#2ce62cbca444abd506f8a900f39d20b898d37512" - integrity sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw== - is-number-object@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" @@ -13311,11 +12857,6 @@ is-plain-obj@^2.0.0, is-plain-obj@^2.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -13490,13 +13031,6 @@ is-word-character@^1.0.0: resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== -is-wsl@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" - integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== - dependencies: - is-inside-container "^1.0.0" - is2@^2.0.6: version "2.0.7" resolved "https://registry.yarnpkg.com/is2/-/is2-2.0.7.tgz#d084e10cab3bd45d6c9dfde7a48599fcbb93fcac" @@ -14625,7 +14159,7 @@ language-tags@^1.0.5: dependencies: language-subtag-registry "^0.3.20" -launch-editor@^2.6.1: +launch-editor@^2.13.2: version "2.14.1" resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.14.1.tgz#f7e0da3f58aaea03fea01074d840b5f739ed7ddc" integrity sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA== @@ -15385,36 +14919,11 @@ measured-reporting@^1.51.1: measured-core "^1.51.1" optional-js "^2.0.0" -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - media-typer@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-1.1.0.tgz#6ab74b8f2d3320f2064b2a87a38e7931ff3a5561" integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw== -memfs@^4.43.1: - version "4.56.10" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.56.10.tgz#eaf2f6556db10f91f1e9ad9f1274fd988c646202" - integrity sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w== - dependencies: - "@jsonjoy.com/fs-core" "4.56.10" - "@jsonjoy.com/fs-fsa" "4.56.10" - "@jsonjoy.com/fs-node" "4.56.10" - "@jsonjoy.com/fs-node-builtins" "4.56.10" - "@jsonjoy.com/fs-node-to-fsa" "4.56.10" - "@jsonjoy.com/fs-node-utils" "4.56.10" - "@jsonjoy.com/fs-print" "4.56.10" - "@jsonjoy.com/fs-snapshot" "4.56.10" - "@jsonjoy.com/json-pack" "^1.11.0" - "@jsonjoy.com/util" "^1.9.0" - glob-to-regex.js "^1.0.1" - thingies "^2.5.0" - tree-dump "^1.0.3" - tslib "^2.0.0" - "memoize-one@>=3.1.1 <6", memoize-one@^5.1.1: version "5.2.1" resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" @@ -15460,11 +14969,6 @@ meow@^9.0.0: type-fest "^0.18.0" yargs-parser "^20.2.3" -merge-descriptors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" - integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== - merge-descriptors@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz#ea922f660635a2249ee565e0449f951e6b603808" @@ -15480,7 +14984,7 @@ merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -methods@^1.1.2, methods@~1.1.2: +methods@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== @@ -15509,12 +15013,12 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.52.0, mime-db@^1.54.0: +mime-db@1.52.0, mime-db@^1.52.0, mime-db@^1.54.0: version "1.54.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== -mime-types@^2.1.27, mime-types@^2.1.35, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.27, mime-types@^2.1.35, mime-types@~2.1.19, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -15528,7 +15032,7 @@ mime-types@^3.0.0, mime-types@^3.0.1: dependencies: mime-db "^1.54.0" -mime@1.6.0, mime@2.6.0, mime@3, mime@^1.4.1, mime@^2.4.4, mime@^3.0.0: +mime@2.6.0, mime@3, mime@^1.4.1, mime@^2.4.4, mime@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== @@ -15794,11 +15298,6 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" -mrmime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.1.tgz#bc3e87f7987853a54c9850eeb1f1078cd44adddc" - integrity sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ== - ms-chromium-edge-driver@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/ms-chromium-edge-driver/-/ms-chromium-edge-driver-0.4.3.tgz#808723efaf24da086ebc2a2feb0975162164d2ff" @@ -15819,7 +15318,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: +ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -15845,14 +15344,6 @@ msgpackr@^1.9.5: optionalDependencies: msgpackr-extract "^3.0.2" -multicast-dns@^7.2.5: - version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" - integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== - dependencies: - dns-packet "^5.2.2" - thunky "^1.0.2" - multimatch@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" @@ -15952,11 +15443,6 @@ negotiator@^1.0.0: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a" integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg== -negotiator@~0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" - integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== - neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -16037,7 +15523,7 @@ node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" -node-forge@^1, node-forge@^1.2.1: +node-forge@^1.2.1: version "1.4.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.4.0.tgz#1c7b7d8bdc2d078739f58287d589d903a11b2fc2" integrity sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ== @@ -16094,6 +15580,11 @@ node-releases@^2.0.27: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e" integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== +node-releases@^2.0.36: + version "2.0.47" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.47.tgz#521bb2786da8eb140b748841c0b3b3a75334ffc4" + integrity sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og== + node-stdlib-browser@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/node-stdlib-browser/-/node-stdlib-browser-1.3.1.tgz#f41fa554f720a3df951e40339f4d92ac512222ac" @@ -16346,11 +15837,6 @@ obliterator@^1.6.1: resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-1.6.1.tgz#dea03e8ab821f6c4d96a299e17aef6a3af994ef3" integrity sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig== -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - omggif@^1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19" @@ -16361,18 +15847,13 @@ on-exit-leak-free@^2.1.0: resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== -on-finished@^2.4.1, on-finished@~2.4.1: +on-finished@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -16394,21 +15875,6 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@^10.0.3: - version "10.2.0" - resolved "https://registry.yarnpkg.com/open/-/open-10.2.0.tgz#b9d855be007620e80b6fb05fac98141fe62db73c" - integrity sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA== - dependencies: - default-browser "^5.2.1" - define-lazy-prop "^3.0.0" - is-inside-container "^1.0.0" - wsl-utils "^0.1.0" - -opener@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - opentracing@^0.14.3: version "0.14.7" resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.7.tgz#25d472bd0296dc0b64d7b94cbc995219031428f5" @@ -16607,15 +16073,6 @@ p-retry@4: "@types/retry" "0.12.0" retry "^0.13.1" -p-retry@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-6.2.1.tgz#81828f8dc61c6ef5a800585491572cc9892703af" - integrity sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ== - dependencies: - "@types/retry" "0.12.2" - is-network-error "^1.0.0" - retry "^0.13.1" - p-timeout@^3.1.0, p-timeout@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" @@ -16774,7 +16231,7 @@ parse5@^3.0.1: dependencies: "@types/node" "*" -parseurl@^1.3.3, parseurl@~1.3.2, parseurl@~1.3.3: +parseurl@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== @@ -16852,11 +16309,6 @@ path-to-regexp@^8.0.0: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.4.0.tgz#8e98fcd94826aff01a90c544ef74ffbaca3a78ed" integrity sha512-PuseHIvAnz3bjrM2rGJtSgo1zjgxapTLZ7x2pjhzWwlp4SJQgK3f3iZIQwkpEnBaKz6seKBADpM4B4ySkuYypg== -path-to-regexp@~0.1.12: - version "0.1.13" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.13.tgz#9b22ec16bc3ab88d05a0c7e369869421401ab17d" - integrity sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA== - path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -17277,7 +16729,7 @@ property-information@^5.0.0, property-information@^5.3.0: dependencies: xtend "^4.0.0" -proxy-addr@^2.0.7, proxy-addr@~2.0.7: +proxy-addr@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== @@ -17405,7 +16857,7 @@ puppeteer@^24.14.0: puppeteer-core "24.14.0" typed-query-selector "^2.12.0" -qs@^6.11.0, qs@^6.12.3, qs@^6.14.0, qs@^6.14.1, qs@^6.15.2, qs@~6.14.1, qs@~6.15.1: +qs@^6.11.0, qs@^6.12.3, qs@^6.14.0, qs@^6.14.1, qs@^6.15.2, qs@~6.14.1: version "6.15.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.15.2.tgz#fd55426d710403ddccc45e0f9eab16db7727ece9" integrity sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw== @@ -17502,7 +16954,7 @@ randomfill@^1.0.4: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@^1.2.1, range-parser@~1.2.1: +range-parser@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== @@ -18468,10 +17920,10 @@ router@^2.2.0: parseurl "^1.3.3" path-to-regexp "^8.0.0" -rslog@^1.2.11: - version "1.3.1" - resolved "https://registry.yarnpkg.com/rslog/-/rslog-1.3.1.tgz#bd8d02898147e476e907a65b65be64a6176e85a1" - integrity sha512-cO4V+79h7+gSLKx1qk1jUhHzuCPN7LiH8PoEbmbGhQITMMk39JtyjxTkbSfL9P4CoR/RpOiJrDyVM/Iprhvq7w== +rslog@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/rslog/-/rslog-2.1.3.tgz#e0bb9d0753340e77b4ce05ad68abbe0c2fde6ccb" + integrity sha512-DCUkRKUBR1lSpHKRcxNvHaYwGrUVf9MsoE1u6gd0CF37I8vwwtWc4b+FA9OwYZ4QA/shslzAYorD3MMfd+Rs/Q== rst-selector-parser@^2.2.3: version "2.2.3" @@ -18488,11 +17940,6 @@ rtl-css-js@^1.16.1: dependencies: "@babel/runtime" "^7.1.2" -run-applescript@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.1.0.tgz#2e9e54c4664ec3106c5b5630e249d3d6595c4911" - integrity sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q== - run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -18546,7 +17993,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -18784,11 +18231,6 @@ seedrandom@^3.0.5: resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== - selenium-webdriver@^4.0.0-alpha.7: version "4.0.0-alpha.7" resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.7.tgz#e3879d8457fd7ad8e4424094b7dc0540d99e6797" @@ -18798,15 +18240,7 @@ selenium-webdriver@^4.0.0-alpha.7: rimraf "^2.7.1" tmp "0.0.30" -selfsigned@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" - integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== - dependencies: - "@types/node-forge" "^1.3.0" - node-forge "^1" - -"semver@2 || 3 || 4 || 5", semver@7.3.2, semver@^5.5.0, semver@^5.6.0, semver@^5.7.2, semver@^6.0.0, semver@^6.1.0, semver@^6.3.0, semver@^6.3.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.2, semver@^7.7.2, semver@^7.7.3, semver@~7.5.4: +"semver@2 || 3 || 4 || 5", semver@7.3.2, semver@^5.5.0, semver@^5.6.0, semver@^5.7.2, semver@^6.0.0, semver@^6.1.0, semver@^6.3.0, semver@^6.3.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.2, semver@^7.7.2, semver@^7.7.3, semver@^7.7.4, semver@~7.5.4: version "7.5.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== @@ -18830,43 +18264,11 @@ send@^1.1.0, send@^1.2.0: range-parser "^1.2.1" statuses "^2.0.1" -send@~0.19.0, send@~0.19.1: - version "0.19.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.19.2.tgz#59bc0da1b4ea7ad42736fd642b1c4294e114ff29" - integrity sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~2.0.0" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "~0.5.2" - http-errors "~2.0.1" - mime "1.6.0" - ms "2.1.3" - on-finished "~2.4.1" - range-parser "~1.2.1" - statuses "~2.0.2" - serialize-javascript@^4.0.0, serialize-javascript@^6.0.2, serialize-javascript@^7.0.3: version "7.0.5" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-7.0.5.tgz#c798cc0552ffbb08981914a42a8756e339d0d5b1" integrity sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw== -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - serve-static@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-2.2.0.tgz#9c02564ee259bdd2251b82d659a2e7e1938d66f9" @@ -18877,16 +18279,6 @@ serve-static@^2.2.0: parseurl "^1.3.3" send "^1.2.0" -serve-static@~1.16.2: - version "1.16.3" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.3.tgz#a97b74d955778583f3862a4f0b841eb4d5d78cf9" - integrity sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA== - dependencies: - encodeurl "~2.0.0" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "~0.19.1" - set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -18936,12 +18328,7 @@ setimmediate@^1.0.4: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.2.0, setprototypeof@~1.2.0: +setprototypeof@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== @@ -19084,15 +18471,6 @@ sinon@^7.4.2: nise "^1.5.2" supports-color "^5.5.0" -sirv@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" - integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== - dependencies: - "@polka/url" "^1.0.0-next.24" - mrmime "^2.0.0" - totalist "^3.0.0" - sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -19170,15 +18548,6 @@ socket.io@4.8.1: socket.io-adapter "~2.5.2" socket.io-parser "~4.2.4" -sockjs@^0.3.24: - version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - socks-proxy-agent@^8.0.5: version "8.0.5" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" @@ -19329,29 +18698,6 @@ spdx-satisfies@^4.0.0: spdx-expression-parse "^3.0.0" spdx-ranges "^2.0.0" -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - specificity@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" @@ -19453,12 +18799,7 @@ state-toggle@^1.0.0: resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -statuses@^2.0.1, statuses@~2.0.1, statuses@~2.0.2: +statuses@^2.0.1, statuses@~2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== @@ -19955,17 +19296,17 @@ tailwindcss@4.2.4: resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.2.4.tgz#f7e3090edb22d56394db4d68e6464d2628dc2aa9" integrity sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA== -tapable@2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.3.tgz#4b67b635b2d97578a06a2713d2f04800c237e99b" - integrity sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg== +tapable@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.3.tgz#5da7c9992c46038221267985ab28421a8879f160" + integrity sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A== tapable@^0.1.8: version "0.1.10" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" integrity sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q= -tapable@^2.2.0, tapable@^2.2.1, tapable@^2.3.0: +tapable@^2.2.1, tapable@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6" integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== @@ -20157,11 +19498,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -thingies@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/thingies/-/thingies-2.5.0.tgz#5f7b882c933b85989f8466b528a6247a6881e04f" - integrity sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw== - thread-stream@^2.6.0: version "2.7.0" resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-2.7.0.tgz#d8a8e1b3fd538a6cca8ce69dbe5d3d097b601e11" @@ -20233,11 +19569,6 @@ through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3.4: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - timers-browserify@^2.0.4: version "2.0.12" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" @@ -20367,11 +19698,6 @@ topojson-client@^3.1.0: dependencies: commander "2" -totalist@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" - integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== - tough-cookie@^4.0.0, tough-cookie@^4.1.3: version "4.1.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" @@ -20408,11 +19734,6 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= -tree-dump@^1.0.3, tree-dump@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/tree-dump/-/tree-dump-1.1.0.tgz#ab29129169dc46004414f5a9d4a3c6e89f13e8a4" - integrity sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA== - tree-kill@1.2.2, tree-kill@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" @@ -20630,14 +19951,6 @@ type-is@^2.0.1: media-typer "^1.1.0" mime-types "^3.0.0" -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - typed-array-buffer@^1.0.0, typed-array-buffer@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" @@ -20928,7 +20241,7 @@ untruncate-json@^0.0.1: resolved "https://registry.yarnpkg.com/untruncate-json/-/untruncate-json-0.0.1.tgz#a225e87d5d669c9ec6e04fc8de349e65b6cc2e9e" integrity sha512-4W9enDK4X1y1s2S/Rz7ysw6kDuMS3VmRjMFg7GZrNO+98OSe+x5Lh7PKYoVjy3lW/1wmhs6HW0lusnQRHgMarA== -update-browserslist-db@^1.2.0: +update-browserslist-db@^1.2.0, update-browserslist-db@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== @@ -21024,11 +20337,6 @@ utility-types@^3.10.0: resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - utrie@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645" @@ -21116,7 +20424,7 @@ varint@^6.0.0: resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== -vary@^1, vary@^1.1.2, vary@~1.1.2: +vary@^1, vary@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== @@ -21599,13 +20907,6 @@ watchpack@^2.4.4: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -21643,24 +20944,6 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-bundle-analyzer@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz#633af2862c213730be3dbdf40456db171b60d5bd" - integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw== - dependencies: - "@discoveryjs/json-ext" "0.5.7" - acorn "^8.0.4" - acorn-walk "^8.0.0" - commander "^7.2.0" - debounce "^1.2.1" - escape-string-regexp "^4.0.0" - gzip-size "^6.0.0" - html-escaper "^2.0.2" - opener "^1.5.2" - picocolors "^1.0.0" - sirv "^2.0.3" - ws "^7.3.1" - webpack-cli@^4.9.2: version "4.9.2" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.2.tgz#77c1adaea020c3f9e2db8aad8ea78d235c83659d" @@ -21679,52 +20962,6 @@ webpack-cli@^4.9.2: rechoir "^0.7.0" webpack-merge "^5.7.3" -webpack-dev-middleware@^7.4.2: - version "7.4.5" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz#d4e8720aa29cb03bc158084a94edb4594e3b7ac0" - integrity sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA== - dependencies: - colorette "^2.0.10" - memfs "^4.43.1" - mime-types "^3.0.1" - on-finished "^2.4.1" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-server@5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz#96a143d50c58fef0c79107e61df911728d7ceb39" - integrity sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg== - dependencies: - "@types/bonjour" "^3.5.13" - "@types/connect-history-api-fallback" "^1.5.4" - "@types/express" "^4.17.21" - "@types/express-serve-static-core" "^4.17.21" - "@types/serve-index" "^1.9.4" - "@types/serve-static" "^1.15.5" - "@types/sockjs" "^0.3.36" - "@types/ws" "^8.5.10" - ansi-html-community "^0.0.8" - bonjour-service "^1.2.1" - chokidar "^3.6.0" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^2.0.0" - express "^4.21.2" - graceful-fs "^4.2.6" - http-proxy-middleware "^2.0.9" - ipaddr.js "^2.1.0" - launch-editor "^2.6.1" - open "^10.0.3" - p-retry "^6.2.0" - schema-utils "^4.2.0" - selfsigned "^2.4.1" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^7.4.2" - ws "^8.18.0" - webpack-merge@^5.10.0, webpack-merge@^5.7.3: version "5.10.0" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" @@ -21778,20 +21015,6 @@ webpack@^5.104.1: watchpack "^2.4.4" webpack-sources "^3.3.3" -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -22005,23 +21228,16 @@ write-pkg@^4.0.0: type-fest "^0.4.1" write-json-file "^3.2.0" -ws@^7.3.1, ws@^7.4.6: +ws@^7.4.6: version "7.5.11" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.11.tgz#9460daf1812bb81a423c5b9eac746941a86310fa" integrity sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA== -ws@^8.18.0, ws@^8.18.3, ws@^8.20.1, ws@^8.21.0, ws@~8.18.3: +ws@^8.18.3, ws@^8.20.1, ws@^8.21.0, ws@~8.18.3: version "8.21.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.21.0.tgz#012e413fc07429945121b0c153158c4343086951" integrity sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g== -wsl-utils@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/wsl-utils/-/wsl-utils-0.1.0.tgz#8783d4df671d4d50365be2ee4c71917a0557baab" - integrity sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw== - dependencies: - is-wsl "^3.1.0" - xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" From 4360f0437dae1bcce52078f4ae03a151b45b0a91 Mon Sep 17 00:00:00 2001 From: Sean Li Date: Fri, 26 Jun 2026 12:13:06 -0700 Subject: [PATCH 31/88] fix selecting new trace flyout (#12291) Signed-off-by: Sean Li --- .../traces/trace_flyout/trace_flyout.test.tsx | 44 +++++++++++++++++-- .../traces/trace_flyout/trace_flyout.tsx | 2 + 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/plugins/explore/public/application/pages/traces/trace_flyout/trace_flyout.test.tsx b/src/plugins/explore/public/application/pages/traces/trace_flyout/trace_flyout.test.tsx index def82f36ee6b..93f302bf66a3 100644 --- a/src/plugins/explore/public/application/pages/traces/trace_flyout/trace_flyout.test.tsx +++ b/src/plugins/explore/public/application/pages/traces/trace_flyout/trace_flyout.test.tsx @@ -3,14 +3,27 @@ * SPDX-License-Identifier: Apache-2.0 */ +import React from 'react'; import { render, screen, fireEvent } from '@testing-library/react'; import { TraceFlyout } from './trace_flyout'; import { useTraceFlyoutContext } from './trace_flyout_context'; jest.mock('./trace_flyout_context'); -jest.mock('../trace_details/trace_view', () => ({ - TraceDetails: () =>
Trace Details
, -})); +jest.mock('../trace_details/trace_view', () => { + // require inside the factory: jest.mock is hoisted above imports, so the top-level React + // import is out of scope here. + // eslint-disable-next-line @typescript-eslint/no-var-requires + const react = require('react'); + return { + // Replicate the real TraceDetails behavior: it captures trace/span only on mount and does + // not react to changed props. The test only sees an updated trace if TraceFlyout remounts + // it (via its key), which is exactly the behavior under test. + TraceDetails: ({ defaultTraceId, defaultSpanId }: any) => { + const [mounted] = react.useState(`${defaultTraceId}:${defaultSpanId}`); + return react.createElement('div', { 'data-test-subj': 'traceDetails' }, mounted); + }, + }; +}); const mockUseTraceFlyoutContext = useTraceFlyoutContext as jest.MockedFunction< typeof useTraceFlyoutContext @@ -88,4 +101,29 @@ describe('TraceFlyout', () => { expect(mockCloseTraceFlyout).toHaveBeenCalled(); }); + + it('updates the rendered trace when a different trace is selected while open', () => { + mockUseTraceFlyoutContext.mockReturnValue({ + closeTraceFlyout: mockCloseTraceFlyout, + // @ts-expect-error TS2322 TODO(ts-error): fixme + flyoutData: mockFlyoutData, + isFlyoutOpen: true, + openTraceFlyout: jest.fn(), + }); + + const { rerender } = render(); + expect(screen.getByTestId('traceDetails')).toHaveTextContent('test-trace-id:test-span-id'); + + // Simulate selecting a different trace row while the flyout stays open. + mockUseTraceFlyoutContext.mockReturnValue({ + closeTraceFlyout: mockCloseTraceFlyout, + // @ts-expect-error TS2322 TODO(ts-error): fixme + flyoutData: { ...mockFlyoutData, traceId: 'other-trace-id', spanId: 'other-span-id' }, + isFlyoutOpen: true, + openTraceFlyout: jest.fn(), + }); + rerender(); + + expect(screen.getByTestId('traceDetails')).toHaveTextContent('other-trace-id:other-span-id'); + }); }); diff --git a/src/plugins/explore/public/application/pages/traces/trace_flyout/trace_flyout.tsx b/src/plugins/explore/public/application/pages/traces/trace_flyout/trace_flyout.tsx index 791d26f1c218..416fd0647ce2 100644 --- a/src/plugins/explore/public/application/pages/traces/trace_flyout/trace_flyout.tsx +++ b/src/plugins/explore/public/application/pages/traces/trace_flyout/trace_flyout.tsx @@ -23,6 +23,8 @@ export const TraceFlyout: React.FC = () => { return ( Date: Sat, 27 Jun 2026 11:29:06 +0800 Subject: [PATCH 32/88] Fix defaultRoute not honored in workspace mode (#12046) --- src/plugins/workspace/server/plugin.test.ts | 95 +++++++++++++++++++++ src/plugins/workspace/server/plugin.ts | 19 ++++- 2 files changed, 110 insertions(+), 4 deletions(-) diff --git a/src/plugins/workspace/server/plugin.test.ts b/src/plugins/workspace/server/plugin.test.ts index 11c9301a15d7..eee9c4cbdf8a 100644 --- a/src/plugins/workspace/server/plugin.test.ts +++ b/src/plugins/workspace/server/plugin.test.ts @@ -495,6 +495,101 @@ describe('Workspace server plugin', () => { }, }); }); + + it('with / request path, defaultRoute set, and no workspaces', async () => { + const request = httpServerMock.createOpenSearchDashboardsRequest({ + path: '/', + }); + setupMock.getStartServices.mockResolvedValue([ + { + ...coreMock.createStart(), + uiSettings: { + asScopedToClient: () => ({ + ...uiSettingsMock, + get: jest.fn().mockResolvedValue('/app/dashboards'), + }), + }, + }, + {}, + {}, + ]); + await workspacePlugin.setup(setupMock, mockDeps); + const toolKitMock = httpServerMock.createToolkit(); + + await registerOnPostAuthFn(request, response, toolKitMock); + expect(toolKitMock.next).toBeCalledTimes(1); + }); + + it('with / request path, defaultRoute set, and one workspace', async () => { + const request = httpServerMock.createOpenSearchDashboardsRequest({ + path: '/', + }); + setupMock.getStartServices.mockResolvedValue([ + { + ...coreMock.createStart(), + uiSettings: { + asScopedToClient: () => ({ + ...uiSettingsMock, + get: jest.fn().mockResolvedValue('/app/dashboards'), + }), + }, + }, + {}, + {}, + ]); + const workspaceSetup = await workspacePlugin.setup(setupMock, mockDeps); + const client = workspaceSetup.client; + jest.spyOn(client, 'list').mockResolvedValue({ + success: true, + result: { + total: 2, + per_page: 100, + page: 1, + workspaces: [{ id: 'workspace-1', name: 'workspace-1' }], + }, + }); + const toolKitMock = httpServerMock.createToolkit(); + + await registerOnPostAuthFn(request, response, toolKitMock); + expect(toolKitMock.next).toBeCalledTimes(1); + }); + + it('with / request path, defaultRoute set, and more than one workspaces', async () => { + const request = httpServerMock.createOpenSearchDashboardsRequest({ + path: '/', + }); + setupMock.getStartServices.mockResolvedValue([ + { + ...coreMock.createStart(), + uiSettings: { + asScopedToClient: () => ({ + ...uiSettingsMock, + get: jest.fn().mockResolvedValue('/app/dashboards'), + }), + }, + }, + {}, + {}, + ]); + const workspaceSetup = await workspacePlugin.setup(setupMock, mockDeps); + const client = workspaceSetup.client; + jest.spyOn(client, 'list').mockResolvedValue({ + success: true, + result: { + total: 2, + per_page: 100, + page: 1, + workspaces: [ + { id: 'workspace-1', name: 'workspace-1' }, + { id: 'workspace-2', name: 'workspace-2' }, + ], + }, + }); + const toolKitMock = httpServerMock.createToolkit(); + + await registerOnPostAuthFn(request, response, toolKitMock); + expect(toolKitMock.next).toBeCalledTimes(1); + }); }); it('#start', async () => { diff --git a/src/plugins/workspace/server/plugin.ts b/src/plugins/workspace/server/plugin.ts index d60bfffac3e6..6edf11acd30b 100644 --- a/src/plugins/workspace/server/plugin.ts +++ b/src/plugins/workspace/server/plugin.ts @@ -176,6 +176,21 @@ export class WorkspacePlugin implements Plugin { const path = request.url.pathname; if (path === '/') { + // initialize coreStart and uiSettingsClient first to allow access to defaultRoute + const [coreStart] = await core.getStartServices(); + const uiSettingsClient = coreStart.uiSettings.asScopedToClient( + coreStart.savedObjects.getScopedClient(request) + ); + + // check if defaultRoute is configured (and not the default home page) + // has to be handled here instead of core_app.ts as this method registers + // a middleware hook, which overrides registerDefaultRoutes in core_app.ts + const defaultRoute = await uiSettingsClient.get('defaultRoute'); + if (defaultRoute && defaultRoute !== '/app/home') { + // skips the middleware and allow registerDefaultRoutes to take effect + return toolkit.next(); + } + const workspaceListResponse = await this.client?.list( { request }, { page: 1, perPage: 100 } @@ -192,10 +207,6 @@ export class WorkspacePlugin implements Plugin workspace.id === defaultWorkspaceId From a14deb499c846b526eac56907ce19cd659acac25 Mon Sep 17 00:00:00 2001 From: Qxisylolo Date: Mon, 29 Jun 2026 14:15:18 +0800 Subject: [PATCH 33/88] Integrate dynamic config to disable global settings updates for non-admin users (#10959) * Integrate dynamic config to disable global settings updates for non-admin users Signed-off-by: Qxisylolo * update Signed-off-by: Qxisylolo --------- Signed-off-by: Qxisylolo --- src/core/server/server.ts | 1 + ...fig_controlled_ui_settings_wrapper.test.ts | 164 ++++++++++++++++++ ...c_config_controlled_ui_settings_wrapper.ts | 95 ++++++++++ .../server/ui_settings/ui_settings_config.ts | 3 + .../ui_settings/ui_settings_service.test.ts | 10 +- .../server/ui_settings/ui_settings_service.ts | 22 ++- src/core/server/ui_settings/utils.ts | 14 ++ .../advanced_settings.test.tsx.snap | 66 +++---- .../management_app/advanced_settings.tsx | 9 +- .../management_app/components/field/field.tsx | 35 +--- .../server/capabilities_provider.ts | 3 + .../advanced_settings/server/plugin.ts | 22 +++ 12 files changed, 377 insertions(+), 67 deletions(-) create mode 100644 src/core/server/ui_settings/saved_objects/dynamic_config_controlled_ui_settings_wrapper.test.ts create mode 100644 src/core/server/ui_settings/saved_objects/dynamic_config_controlled_ui_settings_wrapper.ts diff --git a/src/core/server/server.ts b/src/core/server/server.ts index 15ac9ebc5143..9da24350daba 100644 --- a/src/core/server/server.ts +++ b/src/core/server/server.ts @@ -203,6 +203,7 @@ export class Server { const uiSettingsSetup = await this.uiSettings.setup({ http: httpSetup, savedObjects: savedObjectsSetup, + dynamicConfig: dynamicConfigServiceSetup, }); const workspaceSetup = await this.workspace.setup(); diff --git a/src/core/server/ui_settings/saved_objects/dynamic_config_controlled_ui_settings_wrapper.test.ts b/src/core/server/ui_settings/saved_objects/dynamic_config_controlled_ui_settings_wrapper.test.ts new file mode 100644 index 000000000000..195ae4fa4d3b --- /dev/null +++ b/src/core/server/ui_settings/saved_objects/dynamic_config_controlled_ui_settings_wrapper.test.ts @@ -0,0 +1,164 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { coreMock, httpServerMock, savedObjectsClientMock } from '../../../server/mocks'; +import { DynamicConfigControlledUiSettingsWrapper } from './dynamic_config_controlled_ui_settings_wrapper'; +import { SavedObjectsErrorHelpers } from '../../../server'; +import { dynamicConfigServiceMock } from '../../config/dynamic_config_service.mock'; + +jest.mock('opensearch-dashboards/server/utils', () => ({ + getWorkspaceState: jest.fn().mockImplementation((request) => ({ + isDashboardAdmin: request.isDashboardAdmin, + })), + pkg: { + build: { + distributable: true, + release: true, + }, + }, +})); + +describe('DynamicConfigControlledUiSettingsWrapper', () => { + const requestHandlerContext = coreMock.createRequestHandlerContext(); + const mockedClient = savedObjectsClientMock.create(); + const requestMock = httpServerMock.createOpenSearchDashboardsRequest(); + const dynamicConfigService = dynamicConfigServiceMock.createInternalSetupContract(); + + // Helper to build wrapper instance + const buildWrapperInstance = (isDashboardAdmin = true, globalScopeEditable = true) => { + const getConfigMock = jest.fn().mockResolvedValue({ + globalScopeEditable: { + enabled: globalScopeEditable, + }, + }); + jest.spyOn(dynamicConfigService, 'getStartService').mockResolvedValue({ + ...dynamicConfigService.getStartService(), + createStoreFromRequest: jest.fn(), + getClient: () => ({ + getConfig: getConfigMock, + bulkGetConfigs: jest.fn(), + listConfigs: jest.fn(), + }), + }); + + const wrapperInstance = new DynamicConfigControlledUiSettingsWrapper(dynamicConfigService); + + // Set isDashboardAdmin property on request + (requestMock as any).isDashboardAdmin = isDashboardAdmin; + + const wrapperClient = wrapperInstance.wrapperFactory({ + client: mockedClient, + typeRegistry: requestHandlerContext.savedObjects.typeRegistry, + request: requestMock, + }); + return wrapperClient; + }; + + describe('#create', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should pass through non-config type requests', async () => { + const wrapperClient = buildWrapperInstance(); + await wrapperClient.get('dashboard', 'test-id'); + expect(mockedClient.get).toBeCalledWith('dashboard', 'test-id'); + }); + + it('should handle regular config requests', async () => { + const wrapperClient = buildWrapperInstance(); + const mockResponse = { + id: '3.0.0', + type: 'config', + attributes: { 'csv:quoteValues': 'true' }, + references: [], + }; + mockedClient.get.mockResolvedValue(mockResponse); + + const result = await wrapperClient.get('config', '3.0.0'); + + expect(mockedClient.get).toBeCalledWith('config', '3.0.0'); + expect(result).toEqual(mockResponse); + }); + }); + + describe('#update', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should pass through non-config type requests', async () => { + const wrapperClient = buildWrapperInstance(); + const attributes = { 'csv:quoteValues': 'true' }; + await wrapperClient.update('dashboard', 'test-id', attributes); + expect(mockedClient.update).toBeCalledWith('dashboard', 'test-id', attributes, {}); + }); + + it('should pass through regular config requests when globalScopeEditable is enabled', async () => { + const wrapperClient = buildWrapperInstance(); + const attributes = { 'csv:quoteValues': 'true' }; + await wrapperClient.update('config', '3.0.0', attributes); + expect(mockedClient.update).toBeCalledWith('config', '3.0.0', attributes, {}); + }); + it('should only consider global ui settings updates', async () => { + const wrapperClient = buildWrapperInstance(false, false); + const attributes = { 'csv:quoteValues': 'true' }; + await wrapperClient.update('config', '_3.0.0', attributes); + expect(mockedClient.update).toBeCalledWith('config', '_3.0.0', attributes, {}); + }); + + it('should update global settings when user is dashboard admin even globalScopeEditable is disabled', async () => { + const wrapperClient = buildWrapperInstance(true, false); + const attributes = { 'csv:quoteValues': 'true' }; + const mockResponse = { + id: '3.0.0', + type: 'config', + attributes, + references: [], + }; + + mockedClient.update.mockResolvedValue(mockResponse); + + await wrapperClient.update('config', '3.0.0', attributes); + + expect(mockedClient.update).toBeCalledWith('config', '3.0.0', attributes, {}); + }); + + it('should throw error when user is not dashboard admin and globalScopeEditable is disabled', async () => { + const wrapperClient = buildWrapperInstance(false, false); + const attributes = { permissionControlledSetting: true }; + + mockedClient.update.mockImplementation(() => { + throw SavedObjectsErrorHelpers.createGenericNotFoundError('config', '3.0.0'); + }); + + await expect(wrapperClient.update('config', '3.0.0', attributes)).rejects.toThrow( + 'No permission for UI settings operations' + ); + }); + }); + + describe('#bulkUpdate', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should pass through bulk update requests', async () => { + const attributes = { 'csv:quoteValues': 'true' }; + const wrapperClient = buildWrapperInstance(); + const objects = [ + { + type: 'config', + id: '3.0.0', + attributes, + }, + ]; + + await wrapperClient.bulkUpdate(objects); + + expect(mockedClient.bulkUpdate).toBeCalledWith(objects); + }); + }); +}); diff --git a/src/core/server/ui_settings/saved_objects/dynamic_config_controlled_ui_settings_wrapper.ts b/src/core/server/ui_settings/saved_objects/dynamic_config_controlled_ui_settings_wrapper.ts new file mode 100644 index 000000000000..f6813ac5a3da --- /dev/null +++ b/src/core/server/ui_settings/saved_objects/dynamic_config_controlled_ui_settings_wrapper.ts @@ -0,0 +1,95 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { i18n } from '@osd/i18n'; +import { + SavedObjectsClientWrapperFactory, + SavedObjectsClientWrapperOptions, + SavedObjectsErrorHelpers, + SavedObjectsUpdateOptions, + SavedObjectsUpdateResponse, +} from '../../../server'; +import { getWorkspaceState } from '../../../server/utils'; +import { isGlobalScope } from '../utils'; +import { InternalDynamicConfigServiceSetup } from '../../config'; + +/** + * Wrapper for reading dynamic feature flag to decide if global UI settings + * are editable or not for non-admin users + * @param dynamicConfig + */ +export class DynamicConfigControlledUiSettingsWrapper { + constructor(private readonly dynamicConfig: InternalDynamicConfigServiceSetup) {} + + public wrapperFactory: SavedObjectsClientWrapperFactory = (wrapperOptions) => { + const updateUiSettingsWithPermission = async ( + type: string, + id: string, + attributes: Partial, + options: SavedObjectsUpdateOptions = {} + ): Promise> => { + if (type === 'config' && isGlobalScope(id)) { + const hasPermission = await this.checkPermission(wrapperOptions); + if (!hasPermission) throw this.generatePermissionError(); + } + + return wrapperOptions.client.update(type, id, attributes, options); + }; + + return { + ...wrapperOptions.client, + create: wrapperOptions.client.create, + bulkCreate: wrapperOptions.client.bulkCreate, + delete: wrapperOptions.client.delete, + update: updateUiSettingsWithPermission, + bulkUpdate: wrapperOptions.client.bulkUpdate, + get: wrapperOptions.client.get, + checkConflicts: wrapperOptions.client.checkConflicts, + errors: wrapperOptions.client.errors, + addToNamespaces: wrapperOptions.client.addToNamespaces, + deleteFromNamespaces: wrapperOptions.client.deleteFromNamespaces, + find: wrapperOptions.client.find, + bulkGet: wrapperOptions.client.bulkGet, + deleteByWorkspace: wrapperOptions.client.deleteByWorkspace, + }; + }; + + private async checkPermission( + wrapperOptions: SavedObjectsClientWrapperOptions + ): Promise { + // If saved object permission is disabled, getWorkspaceState will return undefined,everyone should be treated as admin here + if (getWorkspaceState(wrapperOptions.request).isDashboardAdmin !== false) return true; + + try { + const dynamicConfigServiceStart = await this.dynamicConfig.getStartService(); + const store = dynamicConfigServiceStart.createStoreFromRequest(wrapperOptions.request); + const client = dynamicConfigServiceStart.getClient(); + + const dynamicConfig = await client.getConfig( + { pluginConfigPath: 'uiSettings' }, + { asyncLocalStorageContext: store! } + ); + + // 1. when globalScopeEditable is false, only dashboard admin can edit global settings + // 2. when globalScopeEditable is true(default), both dashboard admin and non-admin users can edit global settings + return dynamicConfig.globalScopeEditable.enabled; + } catch (e) { + throw new Error( + i18n.translate('core.dynamic.config.controlled.ui.settings.read.invalidate', { + defaultMessage: 'Unable to read dynamic config', + }) + ); + } + } + + private generatePermissionError = () => + SavedObjectsErrorHelpers.decorateForbiddenError( + new Error( + i18n.translate('core.dynamic.config.controlled.ui.settings.permission.invalidate', { + defaultMessage: 'No permission for UI settings operations', + }) + ) + ); +} diff --git a/src/core/server/ui_settings/ui_settings_config.ts b/src/core/server/ui_settings/ui_settings_config.ts index 32dc9fb9dd36..3b69c4949941 100644 --- a/src/core/server/ui_settings/ui_settings_config.ts +++ b/src/core/server/ui_settings/ui_settings_config.ts @@ -65,6 +65,9 @@ const configSchema = schema.object({ }) ), }), + globalScopeEditable: schema.object({ + enabled: schema.boolean({ defaultValue: true }), + }), }); export type UiSettingsConfigType = TypeOf; diff --git a/src/core/server/ui_settings/ui_settings_service.test.ts b/src/core/server/ui_settings/ui_settings_service.test.ts index 8bd8946d1152..8149453fc11f 100644 --- a/src/core/server/ui_settings/ui_settings_service.test.ts +++ b/src/core/server/ui_settings/ui_settings_service.test.ts @@ -41,6 +41,7 @@ import { savedObjectsClientMock } from '../mocks'; import { savedObjectsServiceMock } from '../saved_objects/saved_objects_service.mock'; import { mockCoreContext } from '../core_context.mock'; import { uiSettingsType } from './saved_objects'; +import { dynamicConfigServiceMock } from '../config/dynamic_config_service.mock'; const overrides = { overrideBaz: 'baz', @@ -82,7 +83,12 @@ describe('uiSettings', () => { ); const httpSetup = httpServiceMock.createInternalSetupContract(); const savedObjectsSetup = savedObjectsServiceMock.createInternalSetupContract(); - setupDeps = { http: httpSetup, savedObjects: savedObjectsSetup }; + const dynamicConfigService = dynamicConfigServiceMock.createInternalSetupContract(); + setupDeps = { + http: httpSetup, + savedObjects: savedObjectsSetup, + dynamicConfig: dynamicConfigService, + }; savedObjectsClient = savedObjectsClientMock.create(); service = new UiSettingsService(coreContext); jest.spyOn(service as any, 'register'); @@ -103,7 +109,7 @@ describe('uiSettings', () => { it('register adminUiSettings', async () => { const setup = await service.setup(setupDeps); setup.register(adminUiSettings); - expect(setupDeps.savedObjects.addClientWrapper).toHaveBeenCalledTimes(1); + expect(setupDeps.savedObjects.addClientWrapper).toHaveBeenCalledTimes(2); expect((service as any).register).toHaveBeenCalledWith(adminUiSettings); }); diff --git a/src/core/server/ui_settings/ui_settings_service.ts b/src/core/server/ui_settings/ui_settings_service.ts index 67846d51d00c..6f6ad67e6fdb 100644 --- a/src/core/server/ui_settings/ui_settings_service.ts +++ b/src/core/server/ui_settings/ui_settings_service.ts @@ -31,7 +31,6 @@ import { combineLatest, Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { firstValueFrom, mapToObject } from '@osd/std'; - import { CoreService } from '../../types'; import { CoreContext } from '../core_context'; import { Logger } from '../logging'; @@ -56,12 +55,17 @@ import { import { PERMISSION_CONTROLLED_UI_SETTINGS_WRAPPER_ID, PERMISSION_CONTROLLED_UI_SETTINGS_WRAPPER_PRIORITY, + DYNAMIC_CONFIG_CONTROLLEDUI_SETTINGS_WRAPPER_ID, + DYNAMIC_CONFIG_CONTROLLEDUI_SETTINGS_WRAPPER_PRIORITY, } from './utils'; import { getAIFeaturesSetting } from './settings/ai_features'; +import { InternalDynamicConfigServiceSetup } from '../config'; +import { DynamicConfigControlledUiSettingsWrapper } from './saved_objects/dynamic_config_controlled_ui_settings_wrapper'; export interface SetupDeps { http: InternalHttpServiceSetup; savedObjects: InternalSavedObjectsServiceSetup; + dynamicConfig: InternalDynamicConfigServiceSetup; } /** @internal */ @@ -81,7 +85,11 @@ export class UiSettingsService ]); } - public async setup({ http, savedObjects }: SetupDeps): Promise { + public async setup({ + http, + savedObjects, + dynamicConfig, + }: SetupDeps): Promise { this.log.debug('Setting up ui settings service'); savedObjects.registerType(uiSettingsType); @@ -105,12 +113,22 @@ export class UiSettingsService config.savedObjectsConfig.permission.enabled ); + const dynamicConfigControlledUiSettingsWrapper = new DynamicConfigControlledUiSettingsWrapper( + dynamicConfig + ); + savedObjects.addClientWrapper( PERMISSION_CONTROLLED_UI_SETTINGS_WRAPPER_PRIORITY, PERMISSION_CONTROLLED_UI_SETTINGS_WRAPPER_ID, permissionControlledUiSettingsWrapper.wrapperFactory ); + savedObjects.addClientWrapper( + DYNAMIC_CONFIG_CONTROLLEDUI_SETTINGS_WRAPPER_PRIORITY, + DYNAMIC_CONFIG_CONTROLLEDUI_SETTINGS_WRAPPER_ID, + dynamicConfigControlledUiSettingsWrapper.wrapperFactory + ); + this.register(getAIFeaturesSetting()); return { diff --git a/src/core/server/ui_settings/utils.ts b/src/core/server/ui_settings/utils.ts index 92c4a17e310c..3ba77b0a0597 100644 --- a/src/core/server/ui_settings/utils.ts +++ b/src/core/server/ui_settings/utils.ts @@ -15,6 +15,12 @@ export const PERMISSION_CONTROLLED_UI_SETTINGS_WRAPPER_ID = 'permission-control- // other wrappers, therefore the priorty can be any number and the priority of 100 is trival export const PERMISSION_CONTROLLED_UI_SETTINGS_WRAPPER_PRIORITY = 100; +// This wrapper will be triggered before the user scope, workspace scope, and dashboard admin scope wrappers. +// This ensures that when dealing with user-scope settings, this wrapper will not be used. +// This is a temporary implementation. +export const DYNAMIC_CONFIG_CONTROLLEDUI_SETTINGS_WRAPPER_ID = 'dynamic-config-control-ui-settings'; +export const DYNAMIC_CONFIG_CONTROLLEDUI_SETTINGS_WRAPPER_PRIORITY = -50; + export const buildDocIdWithScope = (id: string, scope?: UiSettingScope) => { if (scope === UiSettingScope.USER) { return `${CURRENT_USER_PLACEHOLDER}_${id}`; @@ -27,3 +33,11 @@ export const buildDocIdWithScope = (id: string, scope?: UiSettingScope) => { } return id; }; + +export const isGlobalScope = (docId: string | undefined) => { + return ( + docId !== DASHBOARD_ADMIN_SETTINGS_ID && + !docId?.startsWith(CURRENT_WORKSPACE_PLACEHOLDER) && + !docId?.startsWith(CURRENT_USER_PLACEHOLDER) + ); +}; diff --git a/src/plugins/advanced_settings/public/management_app/__snapshots__/advanced_settings.test.tsx.snap b/src/plugins/advanced_settings/public/management_app/__snapshots__/advanced_settings.test.tsx.snap index 07a46a31eb6b..4a43c4d2cca0 100644 --- a/src/plugins/advanced_settings/public/management_app/__snapshots__/advanced_settings.test.tsx.snap +++ b/src/plugins/advanced_settings/public/management_app/__snapshots__/advanced_settings.test.tsx.snap @@ -562,7 +562,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test custom string setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:customstring:setting", "optionLabels": undefined, "options": undefined, @@ -584,7 +584,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test number setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:number:setting", "optionLabels": undefined, "options": undefined, @@ -606,7 +606,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test readonly string setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:readonlystring:setting", "optionLabels": undefined, "options": undefined, @@ -628,7 +628,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test string setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:string:setting", "optionLabels": undefined, "options": undefined, @@ -654,7 +654,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test array setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:array:setting", "optionLabels": undefined, "options": undefined, @@ -676,7 +676,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test boolean setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:boolean:setting", "optionLabels": undefined, "options": undefined, @@ -1107,7 +1107,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test custom string setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:customstring:setting", "optionLabels": undefined, "options": undefined, @@ -1129,7 +1129,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test image setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:image:setting", "optionLabels": undefined, "options": undefined, @@ -1153,7 +1153,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "An overridden json", "isCustom": false, "isOverridden": true, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:isOverridden:json", "optionLabels": undefined, "options": undefined, @@ -1175,7 +1175,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "An overridden number", "isCustom": false, "isOverridden": true, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:isOverridden:number", "optionLabels": undefined, "options": undefined, @@ -1197,7 +1197,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test overridden select setting", "isCustom": false, "isOverridden": true, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:isOverridden:select", "optionLabels": undefined, "options": Array [ @@ -1223,7 +1223,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "An overridden string", "isCustom": false, "isOverridden": true, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:isOverridden:string", "optionLabels": undefined, "options": undefined, @@ -1245,7 +1245,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "An permission controlled string", "isCustom": false, "isOverridden": true, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:isPermissionControlled:string", "optionLabels": undefined, "options": undefined, @@ -1267,7 +1267,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test json setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:json:setting", "optionLabels": undefined, "options": undefined, @@ -1289,7 +1289,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test markdown setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:markdown:setting", "optionLabels": undefined, "options": undefined, @@ -1311,7 +1311,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test number setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:number:setting", "optionLabels": undefined, "options": undefined, @@ -1333,7 +1333,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test readonly string setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:readonlystring:setting", "optionLabels": undefined, "options": undefined, @@ -1355,7 +1355,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test select setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:select:setting", "optionLabels": undefined, "options": Array [ @@ -1381,7 +1381,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test string setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:string:setting", "optionLabels": undefined, "options": undefined, @@ -1407,7 +1407,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test array setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:array:setting", "optionLabels": undefined, "options": undefined, @@ -1429,7 +1429,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test boolean setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:boolean:setting", "optionLabels": undefined, "options": undefined, @@ -1470,7 +1470,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test custom string setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:customstring:setting", "optionLabels": undefined, "options": undefined, @@ -1492,7 +1492,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test number setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:number:setting", "optionLabels": undefined, "options": undefined, @@ -1514,7 +1514,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test readonly string setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:readonlystring:setting", "optionLabels": undefined, "options": undefined, @@ -1536,7 +1536,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test string setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:string:setting", "optionLabels": undefined, "options": undefined, @@ -1562,7 +1562,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test array setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:array:setting", "optionLabels": undefined, "options": undefined, @@ -1584,7 +1584,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test boolean setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:boolean:setting", "optionLabels": undefined, "options": undefined, @@ -2086,7 +2086,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test custom string setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:customstring:setting", "optionLabels": undefined, "options": undefined, @@ -2503,7 +2503,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test number setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:number:setting", "optionLabels": undefined, "options": undefined, @@ -2920,7 +2920,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test readonly string setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:readonlystring:setting", "optionLabels": undefined, "options": undefined, @@ -3337,7 +3337,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test string setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:string:setting", "optionLabels": undefined, "options": undefined, @@ -3811,7 +3811,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test array setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:array:setting", "optionLabels": undefined, "options": undefined, @@ -4228,7 +4228,7 @@ exports[`AdvancedSettings should render normally when use updated UX 1`] = ` "displayName": "Test boolean setting", "isCustom": false, "isOverridden": false, - "isPermissionControlled": false, + "isPermissionControlled": true, "name": "test:boolean:setting", "optionLabels": undefined, "options": undefined, diff --git a/src/plugins/advanced_settings/public/management_app/advanced_settings.tsx b/src/plugins/advanced_settings/public/management_app/advanced_settings.tsx index 7ae6c4c3977b..d875776ed88f 100644 --- a/src/plugins/advanced_settings/public/management_app/advanced_settings.tsx +++ b/src/plugins/advanced_settings/public/management_app/advanced_settings.tsx @@ -174,6 +174,9 @@ export class AdvancedSettingsComponent extends Component< const userSettingsEnabled = config.get('theme:enableUserControl'); const isDashboardAdmin = !!this.props.application.capabilities.dashboards?.isDashboardAdmin; + const isGlobalScopeEditable = + isDashboardAdmin || !!this.props.application.capabilities.globalScopeEditable?.enabled; + return Object.entries(all) .filter(([, setting]) => { const scope = setting.scope; @@ -195,14 +198,16 @@ export class AdvancedSettingsComponent extends Component< return false; }) .map((setting) => { + const isDashboardAdminSetting = all[setting[0]].scope === UiSettingScope.DASHBOARD_ADMIN; return toEditableConfig({ def: setting[1], name: setting[0], value: setting[1].userValue, isCustom: config.isCustom(setting[0]), isOverridden: config.isOverridden(setting[0]), - isPermissionControlled: - all[setting[0]].scope === UiSettingScope.DASHBOARD_ADMIN && !isDashboardAdmin, + isPermissionControlled: isDashboardAdminSetting + ? !isDashboardAdmin + : !isGlobalScopeEditable, userSettingsEnabled, }); }) diff --git a/src/plugins/advanced_settings/public/management_app/components/field/field.tsx b/src/plugins/advanced_settings/public/management_app/components/field/field.tsx index a853cfe2816c..e6556e8584f4 100644 --- a/src/plugins/advanced_settings/public/management_app/components/field/field.tsx +++ b/src/plugins/advanced_settings/public/management_app/components/field/field.tsx @@ -314,6 +314,9 @@ export class Field extends PureComponent { defVal, ariaName, } = setting; + + const disableField = + loading || isOverridden || isPermissionControlled || preferBrowserSetting || !enableSaving; const a11yProps: { [key: string]: string } = ariaDescribedBy ? { 'aria-label': ariaName, @@ -339,13 +342,7 @@ export class Field extends PureComponent { } checked={!!currentValue} onChange={this.onFieldChangeSwitch} - disabled={ - loading || - isOverridden || - isPermissionControlled || - preferBrowserSetting || - !enableSaving - } + disabled={disableField} data-test-subj={`advancedSetting-editField-${name}`} {...a11yProps} /> @@ -408,13 +405,7 @@ export class Field extends PureComponent { })} onChange={this.onFieldChangeEvent} isLoading={loading} - disabled={ - loading || - isOverridden || - isPermissionControlled || - preferBrowserSetting || - !enableSaving - } + disabled={disableField} fullWidth data-test-subj={`advancedSetting-editField-${name}`} /> @@ -426,13 +417,7 @@ export class Field extends PureComponent { value={currentValue} onChange={this.onFieldChangeEvent} isLoading={loading} - disabled={ - loading || - isOverridden || - isPermissionControlled || - preferBrowserSetting || - !enableSaving - } + disabled={disableField} fullWidth data-test-subj={`advancedSetting-editField-${name}`} /> @@ -444,13 +429,7 @@ export class Field extends PureComponent { value={currentValue} onChange={this.onFieldChangeEvent} isLoading={loading} - disabled={ - loading || - isOverridden || - isPermissionControlled || - preferBrowserSetting || - !enableSaving - } + disabled={disableField} fullWidth data-test-subj={`advancedSetting-editField-${name}`} /> diff --git a/src/plugins/advanced_settings/server/capabilities_provider.ts b/src/plugins/advanced_settings/server/capabilities_provider.ts index c8210c029faa..15ff7311fc2d 100644 --- a/src/plugins/advanced_settings/server/capabilities_provider.ts +++ b/src/plugins/advanced_settings/server/capabilities_provider.ts @@ -36,4 +36,7 @@ export const capabilitiesProvider = () => ({ userSettings: { enabled: false, }, + globalScopeEditable: { + enabled: true, + }, }); diff --git a/src/plugins/advanced_settings/server/plugin.ts b/src/plugins/advanced_settings/server/plugin.ts index c4d94ad6506b..f1dd8f8ff2f1 100644 --- a/src/plugins/advanced_settings/server/plugin.ts +++ b/src/plugins/advanced_settings/server/plugin.ts @@ -67,6 +67,28 @@ export class AdvancedSettingsServerPlugin implements Plugin { const globalConfig = await this.globalConfig$.pipe(first()).toPromise(); const isPermissionControlEnabled = globalConfig.savedObjects.permission.enabled === true; + core.capabilities.registerSwitcher(async (requests) => { + const dynamicConfigServiceStart = await core.dynamicConfigService.getStartService(); + const store = dynamicConfigServiceStart.createStoreFromRequest(requests); + const client = dynamicConfigServiceStart.getClient(); + + try { + const dynamicConfig = await client.getConfig( + { pluginConfigPath: 'uiSettings' }, + { asyncLocalStorageContext: store! } + ); + + return { + globalScopeEditable: { + enabled: dynamicConfig.globalScopeEditable.enabled, + }, + }; + } catch (e) { + this.logger.error(e); + return {}; + } + }); + const userUiSettingsClientWrapper = new UserUISettingsClientWrapper( this.logger, isPermissionControlEnabled From cf92fa6d5617fb10ad611af21926901017ef9d7f Mon Sep 17 00:00:00 2001 From: Sumukh Swamy Date: Mon, 29 Jun 2026 12:39:56 -0700 Subject: [PATCH 34/88] fix(capabilities): bound input and linearize loops in /api/core/capabilities (#12292) Mitigates an unauthenticated DoS in POST /api/core/capabilities where a large applications array drove the resolver through O(n^2) loops per registered capabilities switcher, blocking the Node.js event loop. Changes: - Route schema caps applications array at 1000 entries and each entry at 256 characters - resolveCapabilities now merges applications into navLinks with a single linear pass instead of reduce(spread) - recursiveApplyChanges assigns into a fresh result object in O(n) instead of map/reduce/spread O(n^2) All existing resolver semantics preserved: no mutation of caller input, switchers cannot add/remove capabilities, type-mismatch values fall back to the original. Signed-off-by: sumukhswamy --- .../capabilities_service.test.ts | 72 ++++++++++++++++++- .../capabilities/resolve_capabilities.test.ts | 68 ++++++++++++++++++ .../capabilities/resolve_capabilities.ts | 59 +++++++-------- .../routes/resolve_capabilities.ts | 8 ++- 4 files changed, 171 insertions(+), 36 deletions(-) diff --git a/src/core/server/capabilities/integration_tests/capabilities_service.test.ts b/src/core/server/capabilities/integration_tests/capabilities_service.test.ts index eaa5e14538af..9d20f9519716 100644 --- a/src/core/server/capabilities/integration_tests/capabilities_service.test.ts +++ b/src/core/server/capabilities/integration_tests/capabilities_service.test.ts @@ -29,12 +29,14 @@ */ import supertest from 'supertest'; +import { BehaviorSubject } from 'rxjs'; +import { ByteSizeValue } from '@osd/config-schema'; import { REPO_ROOT } from '@osd/dev-utils'; import { HttpService, InternalHttpServiceSetup } from '../../http'; import { contextServiceMock } from '../../context/context_service.mock'; import { loggingSystemMock } from '../../logging/logging_system.mock'; import { Env } from '../../config'; -import { getEnvOptions } from '../../config/mocks'; +import { configServiceMock, getEnvOptions } from '../../config/mocks'; import { CapabilitiesService, CapabilitiesSetup } from '..'; import { createHttpServer } from '../../http/test_utils'; import { dynamicConfigServiceMock } from '../../config/dynamic_config_service.mock'; @@ -110,5 +112,73 @@ describe('CapabilitiesService', () => { } `); }); + + describe('request body schema bounds', () => { + beforeEach(async () => { + await server.stop(); + const configService = configServiceMock.create(); + configService.atPath.mockReturnValue( + new BehaviorSubject({ + hosts: ['localhost'], + maxPayload: new ByteSizeValue(10 * 1024 * 1024), + autoListen: true, + ssl: { enabled: false }, + compression: { enabled: true }, + xsrf: { disableProtection: true, whitelist: [] }, + customResponseHeaders: {}, + requestId: { allowFromAnyIp: true, ipAllowlist: [] }, + keepaliveTimeout: 120_000, + socketTimeout: 120_000, + } as any) + ); + server = createHttpServer({ configService }); + httpSetup = await server.setup({ + context: contextServiceMock.createSetupContract(), + }); + service = new CapabilitiesService({ + coreId, + env, + logger: loggingSystemMock.create(), + configService: {} as any, + dynamicConfigService: dynamicConfigServiceMock.create(), + }); + serviceSetup = await service.setup({ http: httpSetup }); + await server.start({ + dynamicConfigService: dynamicConfigServiceMock.createInternalStartContract(), + }); + }); + + it('accepts an applications array at the maximum allowed size (1000)', async () => { + const applications = Array.from({ length: 1000 }, (_, i) => `app-${i}`); + await supertest(httpSetup.server.listener) + .post('/api/core/capabilities') + .send({ applications }) + .expect(200); + }); + + it('rejects an applications array larger than 1000 entries', async () => { + const applications = Array.from({ length: 1001 }, (_, i) => `app-${i}`); + await supertest(httpSetup.server.listener) + .post('/api/core/capabilities') + .send({ applications }) + .expect(400); + }); + + it('rejects an application id longer than 256 characters', async () => { + const tooLong = 'a'.repeat(257); + await supertest(httpSetup.server.listener) + .post('/api/core/capabilities') + .send({ applications: [tooLong] }) + .expect(400); + }); + + it('accepts an application id of exactly 256 characters', async () => { + const maxLen = 'a'.repeat(256); + await supertest(httpSetup.server.listener) + .post('/api/core/capabilities') + .send({ applications: [maxLen] }) + .expect(200); + }); + }); }); }); diff --git a/src/core/server/capabilities/resolve_capabilities.test.ts b/src/core/server/capabilities/resolve_capabilities.test.ts index 88e2aa7a4f7c..bec29312456b 100644 --- a/src/core/server/capabilities/resolve_capabilities.test.ts +++ b/src/core/server/capabilities/resolve_capabilities.test.ts @@ -174,4 +174,72 @@ describe('resolveCapabilities', () => { }, }); }); + + describe('applications merge into navLinks', () => { + it('adds each application id to navLinks as true', async () => { + const result = await resolveCapabilities(defaultCaps, [], request, ['app_a', 'app_b']); + expect(result.navLinks).toEqual({ + app_a: true, + app_b: true, + }); + }); + + it('preserves existing navLinks entries not listed in applications', async () => { + const caps = { + ...defaultCaps, + navLinks: { + existing_app: false, + }, + }; + const result = await resolveCapabilities(caps, [], request, ['new_app']); + expect(result.navLinks).toEqual({ + existing_app: false, + new_app: true, + }); + }); + + it('overwrites an existing navLinks entry when the application id is listed', async () => { + const caps = { + ...defaultCaps, + navLinks: { + app_a: false, + }, + }; + const result = await resolveCapabilities(caps, [], request, ['app_a']); + expect(result.navLinks).toEqual({ + app_a: true, + }); + }); + + it('does not mutate the caller-provided navLinks when applications are supplied', async () => { + const originalNavLinks = { existing: false }; + const caps = { + ...defaultCaps, + navLinks: originalNavLinks, + }; + await resolveCapabilities(caps, [], request, ['app_a']); + expect(originalNavLinks).toEqual({ existing: false }); + }); + + it('is tolerant of an empty applications array', async () => { + const caps = { + ...defaultCaps, + navLinks: { kept: true }, + }; + const result = await resolveCapabilities(caps, [], request, []); + expect(result.navLinks).toEqual({ kept: true }); + }); + + it('resolves in reasonable time for the maximum allowed input', async () => { + const applications = Array.from({ length: 1000 }, (_, i) => `app_${i}`); + const switchers = Array.from( + { length: 10 }, + () => (_req: OpenSearchDashboardsRequest, caps: Capabilities) => caps + ); + const start = Date.now(); + const result = await resolveCapabilities(defaultCaps, switchers, request, applications); + expect(Date.now() - start).toBeLessThan(1000); + expect(Object.keys(result.navLinks)).toHaveLength(1000); + }); + }); }); diff --git a/src/core/server/capabilities/resolve_capabilities.ts b/src/core/server/capabilities/resolve_capabilities.ts index 968726a7385a..a970c1aff3e4 100644 --- a/src/core/server/capabilities/resolve_capabilities.ts +++ b/src/core/server/capabilities/resolve_capabilities.ts @@ -53,44 +53,35 @@ export const resolveCapabilities = async ( request: OpenSearchDashboardsRequest, applications: string[] ): Promise => { - const mergedCaps = cloneDeep({ - ...capabilities, - navLinks: applications.reduce( - (acc, app) => ({ - ...acc, - [app]: true, - }), - capabilities.navLinks - ), - }); - return switchers.reduce(async (caps, switcher) => { - const resolvedCaps = await caps; - const changes = await switcher(request, resolvedCaps); - return recursiveApplyChanges(resolvedCaps, changes); - }, Promise.resolve(mergedCaps)); + const mergedCaps = cloneDeep(capabilities); + for (const app of applications) { + mergedCaps.navLinks[app] = true; + } + let resolved: Capabilities = mergedCaps; + for (const switcher of switchers) { + const changes = await switcher(request, resolved); + resolved = recursiveApplyChanges(resolved, changes); + } + return resolved; }; function recursiveApplyChanges< TDestination extends Record, TSource extends Record >(destination: TDestination, source: TSource): TDestination { - return Object.keys(destination) - .map((key) => { - const orig = destination[key]; - const changed = source[key]; - if (changed == null) { - return [key, orig]; - } - if (typeof orig === 'object' && typeof changed === 'object') { - return [key, recursiveApplyChanges(orig, changed)]; - } - return [key, typeof orig === typeof changed ? changed : orig]; - }) - .reduce( - (acc, [key, value]) => ({ - ...acc, - [key]: value, - }), - {} as TDestination - ); + const result = {} as Record; + for (const key of Object.keys(destination)) { + const orig = destination[key]; + const changed = source[key]; + if (changed == null) { + result[key] = orig; + continue; + } + if (typeof orig === 'object' && typeof changed === 'object') { + result[key] = recursiveApplyChanges(orig, changed); + continue; + } + result[key] = typeof orig === typeof changed ? changed : orig; + } + return result as TDestination; } diff --git a/src/core/server/capabilities/routes/resolve_capabilities.ts b/src/core/server/capabilities/routes/resolve_capabilities.ts index 6f06960988be..807247e2f8a3 100644 --- a/src/core/server/capabilities/routes/resolve_capabilities.ts +++ b/src/core/server/capabilities/routes/resolve_capabilities.ts @@ -32,6 +32,10 @@ import { schema } from '@osd/config-schema'; import { IRouter } from '../../http'; import { CapabilitiesResolver } from '../resolve_capabilities'; +const MAX_APPLICATIONS = 1000; + +const MAX_APPLICATION_ID_LENGTH = 256; + export function registerCapabilitiesRoutes(router: IRouter, resolver: CapabilitiesResolver) { router.post( { @@ -41,7 +45,9 @@ export function registerCapabilitiesRoutes(router: IRouter, resolver: Capabiliti }, validate: { body: schema.object({ - applications: schema.arrayOf(schema.string()), + applications: schema.arrayOf(schema.string({ maxLength: MAX_APPLICATION_ID_LENGTH }), { + maxSize: MAX_APPLICATIONS, + }), }), }, }, From 5b4eb42a29106e9dbd8d20732cdadf69d62b9872 Mon Sep 17 00:00:00 2001 From: yuboluo Date: Tue, 30 Jun 2026 13:29:54 +0800 Subject: [PATCH 35/88] Hide all sample data for unsupport data source (#12288) cr: https://code.amazon.com/reviews/CR-284815486 Signed-off-by: yubonluo --- .../components/sample_data_set_cards.js | 30 +++++++++++++++++-- .../services/sample_data/routes/list.test.ts | 29 +++++------------- .../services/sample_data/routes/list.ts | 10 +++---- 3 files changed, 40 insertions(+), 29 deletions(-) diff --git a/src/plugins/home/public/application/components/sample_data_set_cards.js b/src/plugins/home/public/application/components/sample_data_set_cards.js index b324998b2a53..1a906d9480ba 100644 --- a/src/plugins/home/public/application/components/sample_data_set_cards.js +++ b/src/plugins/home/public/application/components/sample_data_set_cards.js @@ -31,7 +31,7 @@ import _ from 'lodash'; import React from 'react'; import PropTypes from 'prop-types'; -import { EuiFlexGrid, EuiFlexItem } from '@elastic/eui'; +import { EuiCallOut, EuiFlexGrid, EuiFlexItem } from '@elastic/eui'; import { SampleDataSetCard, INSTALLED_STATUS, UNINSTALLED_STATUS } from './sample_data_set_card'; @@ -54,6 +54,7 @@ export class SampleDataSetCards extends React.Component { this.state = { sampleDataSets: [], processingStatus: {}, + isLoaded: false, }; } @@ -71,7 +72,7 @@ export class SampleDataSetCards extends React.Component { if (this.props.isDataSourceEnabled) { this._isMounted = true; if (prevProps && prevProps.dataSourceId !== this.props.dataSourceId) { - this.setState({ dataSourceId: this.props.dataSourceId }, () => + this.setState({ dataSourceId: this.props.dataSourceId, isLoaded: false }, () => this.loadSampleDataSets(this.state.dataSourceId) ); } @@ -101,6 +102,7 @@ export class SampleDataSetCards extends React.Component { return a.name.toLowerCase().localeCompare(b.name.toLowerCase()); }), processingStatus: {}, + isLoaded: true, }); }; @@ -216,6 +218,30 @@ export class SampleDataSetCards extends React.Component { }; render() { + const { sampleDataSets, isLoaded } = this.state; + + if (isLoaded && sampleDataSets.length === 0) { + return ( + <> + +

+ {i18n.translate('home.sampleDataSet.notSupportedMessage', { + defaultMessage: + 'Sample datasets are not supported for the selected data source. Switch to a supported data source to import sample data.', + })} +

+
+ + ); + } + return ( { ); }); - it('filters sample datasets to only logs for AnalyticEngine data source', async () => { + it('returns empty sample datasets for AnalyticEngine data source', async () => { const mockDataSourceId = 'analyticEngineDataSource'; - const mockClient = jest.fn().mockResolvedValueOnce(true).mockResolvedValueOnce({ count: 1 }); + const mockClient = jest.fn(); // Mock data source with AnalyticEngine engine type const mockDataSourceResponse = { @@ -288,22 +288,8 @@ describe('sample data list route', () => { }, }; - const mockSOClientGetResponse = { - saved_objects: [ - { - type: 'dashboard', - id: `${mockDataSourceId}_90943e30-9a47-11e8-b64d-95841ca0b247`, - namespaces: ['default'], - attributes: { title: 'dashboard' }, - }, - ], - }; - const mockSOClient = { - get: jest - .fn() - .mockResolvedValueOnce(mockDataSourceResponse) - .mockResolvedValue(mockSOClientGetResponse), + get: jest.fn().mockResolvedValueOnce(mockDataSourceResponse), }; const mockContext = { @@ -342,11 +328,12 @@ describe('sample data list route', () => { expect(mockSOClient.get).toHaveBeenCalledWith('data-source', mockDataSourceId); expect(mockResponse.ok).toBeCalled(); - // Verify that only the logs dataset is returned (otel is excluded because its - // nested-field trace mappings cannot be created on an AnalyticEngine domain) + // Verify that no datasets are returned for AnalyticEngine — sample data installation + // is not supported because its pluggable data format rejects certain index mappings. const responseBody = mockResponse.ok.mock.calls[0]?.[0]?.body as any[]; - expect(responseBody).toHaveLength(1); - expect(responseBody.map((ds) => ds.id).sort()).toEqual(['logs']); + expect(responseBody).toHaveLength(0); + // Verify no index or dashboard checks were made since the list is empty + expect(mockClient).not.toHaveBeenCalled(); }); it('returns all sample datasets for non-AnalyticEngine data source', async () => { diff --git a/src/plugins/home/server/services/sample_data/routes/list.ts b/src/plugins/home/server/services/sample_data/routes/list.ts index ac8206175b99..1ffa5b727155 100644 --- a/src/plugins/home/server/services/sample_data/routes/list.ts +++ b/src/plugins/home/server/services/sample_data/routes/list.ts @@ -54,14 +54,12 @@ export const createListRoute = (router: IRouter, sampleDatasets: SampleDatasetSc const workspaceState = getWorkspaceState(req); const workspaceId = workspaceState?.requestWorkspaceId; - // For AnalyticEngine datasource, only support Sample web logs (logs). The - // Observability sample set (otel) is excluded because its trace index mappings use - // `nested` fields (events/links), which the pluggable data format rejects at index - // creation ("nested type is not supported with pluggable data format"), so installing - // it against an AnalyticEngine domain fails with an internal server error. + // For AnalyticEngine datasource, sample data installation is not supported because + // it does not support certain index mappings. + // Return an empty list to avoid partially broken install flows. let filteredSampleDatasets = sampleDatasets; if (await isAnalyticEngineDataSource(dataSourceId, context.core.savedObjects.client)) { - filteredSampleDatasets = sampleDatasets.filter((dataset) => dataset.id === 'logs'); + filteredSampleDatasets = []; } const registeredSampleDatasets = filteredSampleDatasets.map((sampleDataset) => { From 1796dd9ee9002ba8734e84bd7e2e5a4a6d55ef43 Mon Sep 17 00:00:00 2001 From: Tomasz Kania Date: Tue, 30 Jun 2026 09:11:53 +0200 Subject: [PATCH 36/88] chore(deps): shell-quote 1.9.0 (#12289) Signed-off-by: Tomasz Kania Co-authored-by: Yulong Ruan --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 60a59ebdbcfa..de5199064014 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18372,9 +18372,9 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.8.4: - version "1.8.4" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.4.tgz#2edd9a4dcefc96649e2e2cb12f637b1f1d92a190" - integrity sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ== + version "1.9.0" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.9.0.tgz#e108b1a136586d5964edb3300016d4bedba0fe57" + integrity sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA== side-channel-list@^1.0.0: version "1.0.0" From 9f95593c922faf8370f9ad2909170f63fba7ed2d Mon Sep 17 00:00:00 2001 From: Lin Wang Date: Tue, 30 Jun 2026 16:23:48 +0800 Subject: [PATCH 37/88] feat(chat): hide /investigate suggestion card when tool is unavailable (#12300) Filter starter suggestion cards based on tool availability from AssistantActionService. The /investigate card is only shown when the create_investigation tool is registered (i.e., the dashboards-investigation plugin is installed and active). This prevents showing a non-functional suggestion to users who don't have the investigation plugin enabled. Signed-off-by: Lin Wang --- .../public/components/chat_messages.test.tsx | 42 +++++++++++++++++-- .../chat/public/components/chat_messages.tsx | 28 ++++++++++++- 2 files changed, 66 insertions(+), 4 deletions(-) diff --git a/src/plugins/chat/public/components/chat_messages.test.tsx b/src/plugins/chat/public/components/chat_messages.test.tsx index 61e3b8c5303a..b2b5073f390f 100644 --- a/src/plugins/chat/public/components/chat_messages.test.tsx +++ b/src/plugins/chat/public/components/chat_messages.test.tsx @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { render } from '@testing-library/react'; +import { render, act } from '@testing-library/react'; import { ChatMessages } from './chat_messages'; import { ChatLayoutMode } from '../types'; import type { Message, AssistantMessage, ToolMessage, UserMessage } from '../../common/types'; @@ -89,14 +89,50 @@ describe('ChatMessages', () => { ); - // Verify all starter suggestions are still present + // Verify non-tool-gated starter suggestions are present expect(getByText('Ask questions about your data')).toBeTruthy(); - expect(getByText('/investigate an issue')).toBeTruthy(); expect(getByText('Explain a concept')).toBeTruthy(); + // /investigate card is hidden when create_investigation tool is not registered + expect(queryByText('/investigate an issue')).toBeNull(); // RecentSessions should not render without required props expect(queryByText('RECENT')).toBeNull(); }); + it('should show /investigate card when create_investigation tool is registered', () => { + const service = AssistantActionService.getInstance(); + service.registerAction({ + name: 'create_investigation', + description: 'Create an investigation', + parameters: { type: 'object', properties: {}, required: [] }, + }); + + const { getByText } = render(); + + expect(getByText('/investigate an issue')).toBeTruthy(); + + // Cleanup + service.unregisterAction('create_investigation'); + }); + + it('should hide /investigate card when create_investigation tool is unregistered', () => { + const service = AssistantActionService.getInstance(); + service.registerAction({ + name: 'create_investigation', + description: 'Create an investigation', + parameters: { type: 'object', properties: {}, required: [] }, + }); + + const { queryByText } = render(); + expect(queryByText('/investigate an issue')).toBeTruthy(); + + // Unregister the tool within act() to flush state updates + act(() => { + service.unregisterAction('create_investigation'); + }); + + expect(queryByText('/investigate an issue')).toBeNull(); + }); + it('should render RecentSessions component when all required props are provided', async () => { const onShowHistory = jest.fn(); const onSelectConversation = jest.fn(); diff --git a/src/plugins/chat/public/components/chat_messages.tsx b/src/plugins/chat/public/components/chat_messages.tsx index 69bceecf5bfe..8ec1ba252a79 100644 --- a/src/plugins/chat/public/components/chat_messages.tsx +++ b/src/plugins/chat/public/components/chat_messages.tsx @@ -79,6 +79,8 @@ interface SuggestionItem { text: string; prompt?: string; action?: () => void; + /** When set, this suggestion is only shown if the named tool is registered. */ + requiredTool?: string; } const STARTER_SUGGESTIONS: SuggestionItem[] = [ @@ -93,6 +95,7 @@ const STARTER_SUGGESTIONS: SuggestionItem[] = [ iconColor: 'danger', text: '/investigate an issue', prompt: '/investigate ', + requiredTool: 'create_investigation', }, { icon: 'help', @@ -329,6 +332,29 @@ const ChatMessagesComponent: React.FC = ({ assistantActionService.getCurrentState().toolCallStates ); + // Subscribe to tool definitions to conditionally show/hide suggestion cards + const toolDefinitions$ = useMemo( + () => assistantActionService.getState$().pipe(map((state) => state.toolDefinitions)), + [assistantActionService] + ); + const toolDefinitions = useObservable( + toolDefinitions$, + assistantActionService.getCurrentState().toolDefinitions + ); + + // Filter starter suggestions based on tool availability + const visibleSuggestions = useMemo(() => { + return STARTER_SUGGESTIONS.filter((suggestion) => { + if (suggestion.requiredTool) { + if (!toolDefinitions) { + return false; + } + return toolDefinitions.some((tool) => tool.name === suggestion.requiredTool); + } + return true; + }); + }, [toolDefinitions]); + // Context is now handled by RFC hooks and context pills // No need for separate context display here @@ -502,7 +528,7 @@ const ChatMessagesComponent: React.FC = ({
- {STARTER_SUGGESTIONS.map((suggestion, index) => ( + {visibleSuggestions.map((suggestion, index) => ( Date: Tue, 30 Jun 2026 11:41:13 +0200 Subject: [PATCH 38/88] chore: Remove leftover webpack dependencies after Rspack migration (#12295) * chore: Remove leftover webpack dependencies after Rspack migration Signed-off-by: Tomasz Kania * test: v8light it's used on pipeline Signed-off-by: Tomasz Kania * test: downlevelIteration is deprecated and will stop functioning in TypeScript 7.0 Signed-off-by: Tomasz Kania * fix: review fixes Signed-off-by: Tomasz Kania --------- Signed-off-by: Tomasz Kania --- DEVELOPER_GUIDE.md | 4 +- cypress.config.ts | 54 -- cypress/tsconfig.json | 16 + docs/theme.md | 10 +- package.json | 7 +- packages/osd-interpreter/package.json | 3 +- packages/osd-monaco/package.json | 1 - .../{webpack.config.js => rspack.config.js} | 0 packages/osd-monaco/scripts/build.js | 4 +- packages/osd-optimizer/README.md | 10 +- packages/osd-optimizer/package.json | 7 +- packages/osd-optimizer/src/cli.ts | 8 +- .../osd-optimizer/src/common/parse_path.ts | 2 +- .../osd-optimizer/src/common/worker_config.ts | 10 +- .../basic_optimization.test.ts.snap | 2 +- .../osd-optimizer/src/log_optimizer_state.ts | 2 +- .../handle_optimizer_completion.test.ts | 2 +- .../optimizer/handle_optimizer_completion.ts | 2 +- .../src/optimizer/optimizer_config.test.ts | 44 +- .../src/optimizer/optimizer_config.ts | 16 +- .../{webpack.config.ts => rspack.config.ts} | 8 +- .../{webpack_helpers.ts => rspack_helpers.ts} | 32 +- .../osd-optimizer/src/worker/run_compilers.ts | 17 +- .../osd-optimizer/src/worker/theme_loader.ts | 24 +- packages/osd-pm/package.json | 5 +- .../{webpack.config.js => rspack.config.js} | 0 packages/osd-ui-shared-deps/README.md | 2 +- packages/osd-ui-shared-deps/index.d.ts | 4 +- packages/osd-ui-shared-deps/package.json | 1 - .../osd-ui-shared-deps/public_path_loader.js | 3 +- .../{webpack.config.js => rspack.config.js} | 5 +- packages/osd-ui-shared-deps/scripts/build.js | 14 +- src/core/CONVENTIONS.md | 2 +- .../legacy_core_editor/mode/worker/index.js | 1 + src/plugins/vis_builder/tsconfig.json | 2 - src/plugins/vis_type_vega/public/lib/vega.js | 4 +- yarn.lock | 727 +----------------- 37 files changed, 181 insertions(+), 874 deletions(-) create mode 100644 cypress/tsconfig.json rename packages/osd-monaco/{webpack.config.js => rspack.config.js} (100%) rename packages/osd-optimizer/src/worker/{webpack.config.ts => rspack.config.ts} (97%) rename packages/osd-optimizer/src/worker/{webpack_helpers.ts => rspack_helpers.ts} (82%) rename packages/osd-pm/{webpack.config.js => rspack.config.js} (100%) rename packages/osd-ui-shared-deps/{webpack.config.js => rspack.config.js} (97%) diff --git a/DEVELOPER_GUIDE.md b/DEVELOPER_GUIDE.md index 7be8b6f6a5d6..ed1e651fc9da 100644 --- a/DEVELOPER_GUIDE.md +++ b/DEVELOPER_GUIDE.md @@ -904,10 +904,10 @@ define(['lodash'], function (_) { ``` In those extremely rare cases where you're writing server-side JavaScript in a -file that does not pass run through webpack, then use CommonJS modules. +file that does not pass run through rspack, then use CommonJS modules. In those even rarer cases where you're writing client-side code that does not -run through webpack, then do not use a module loader at all. +run through rspack, then do not use a module loader at all. ##### Import only top-level modules diff --git a/cypress.config.ts b/cypress.config.ts index 90df19913b0a..709fe0161061 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -5,7 +5,6 @@ import fs from 'fs'; import { defineConfig } from 'cypress'; -import webpackPreprocessor from '@cypress/webpack-preprocessor'; module.exports = defineConfig({ experimentalMemoryManagement: true, @@ -73,59 +72,6 @@ function setupNodeEvents( on: Cypress.PluginEvents, config: Cypress.PluginConfigOptions ): Cypress.PluginConfigOptions { - const { webpackOptions } = webpackPreprocessor.defaultOptions; - - // Fix: Error: Webpack Compilation Error - // Module not found: Error: Can't resolve 'path' - webpackOptions!.plugins = webpackOptions!.plugins || []; - // eslint-disable-next-line @typescript-eslint/no-var-requires - webpackOptions!.plugins.push(new (require('node-polyfill-webpack-plugin'))()); - - /** - * By default, cypress' internal webpack preprocessor doesn't allow imports without file extensions. - * This makes our life a bit hard since if any file in our testing dependency graph has an import without - * the .js extension our cypress build will fail. - * - * This extra rule relaxes this a bit by allowing imports without file extension - * ex. import module from './module' - */ - // @ts-expect-error TODO FIX ME - webpackOptions!.module!.rules.unshift({ - test: /\.m?js/, - resolve: { - fullySpecified: false, - }, - }); - - /** - * Add babel-loader to handle modern JavaScript syntax like optional chaining - */ - // @ts-expect-error TODO FIX ME - webpackOptions!.module!.rules.push({ - test: /\.(js|ts)$/, - exclude: /node_modules/, - use: { - loader: 'babel-loader', - options: { - presets: [ - ['@babel/preset-env', { targets: { node: 'current' } }], - '@babel/preset-typescript', - ], - plugins: [ - '@babel/plugin-transform-optional-chaining', - '@babel/plugin-transform-nullish-coalescing-operator', - ], - }, - }, - }); - - on( - 'file:preprocessor', - webpackPreprocessor({ - webpackOptions, - }) - ); - // Delete video files for specs where all tests passed. // Keeps compressed videos only for failures to aid debugging. on('after:spec', (spec: Cypress.Spec, results: CypressCommandLine.RunResult) => { diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json new file mode 100644 index 000000000000..03bf423dd6f6 --- /dev/null +++ b/cypress/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "ignoreDeprecations": "6.0", + "target": "es2018", + "lib": ["es2018", "dom"], + "module": "commonjs", + "moduleResolution": "node", + "strict": false, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "types": ["node", "cypress"] + }, + "include": ["**/*.ts", "**/*.tsx", "../cypress.config.ts"] +} diff --git a/docs/theme.md b/docs/theme.md index 4ac3f3f5141a..eddc20858226 100644 --- a/docs/theme.md +++ b/docs/theme.md @@ -6,7 +6,7 @@ Themes are defined in OUI via https://github.com/opensearch-project/oui/blob/main/src/themes/themes.ts. When Building OUI, there are several theming artifacts generated (beyond the react components) for each mode (light/dark) of each theme: -1. Theme compiled stylesheets (e.g. `@elastic/eui/dist/eui_theme_dark.css`). Consumed as entry files in [/packages/osd-ui-shared-deps/webpack.config.js](/packages/osd-ui-shared-deps/webpack.config.js) and republished by `osd-ui-shared-deps` (e.g. [UiSharedDeps.themeCssDistFilenames](/packages/osd-ui-shared-deps/index.js)). +1. Theme compiled stylesheets (e.g. `@elastic/eui/dist/eui_theme_dark.css`). Consumed as entry files in [/packages/osd-ui-shared-deps/rspack.config.js](/packages/osd-ui-shared-deps/rspack.config.js) and republished by `osd-ui-shared-deps` (e.g. [UiSharedDeps.themeCssDistFilenames](/packages/osd-ui-shared-deps/index.js)). 2. Theme compiled and minified stylesheets (e.g. `@elastic/eui/dist/eui_theme_dark.min.css`). These appear unused by OpenSearch Dashboards 3. Theme computed SASS variables as JSON (e.g. `@elastic/eui/dist/eui_theme_dark.json`). Consumed by [/packages/osd-ui-shared-deps/theme.ts](/packages/osd-ui-shared-deps/theme.ts) and made available to other components via the mode and theme aware `euiThemeVars`. In general, these should not be consumed by any other component directly. 4. Theme type definition file for SASS variables as JSON (e.g. `@elastic/eui/dist/eui_theme_dark.json.d.ts`) @@ -18,7 +18,7 @@ In addition to these artifacts, OpenSearch Dashboards also makes heavy use of th ### Theme definitions in OpenSearch Dashboards 1. Theme tags are defined in [/packages/osd-optimizer/src/common/theme_tags.ts](/packages/osd-optimizer/src/common/theme_tags.ts) corresponding to each mode (light/dark) of each OUI theme. -2. These tags must correspond to entrypoint SCSS files in [/src/core/public/core_app/styles/](/src/core/public/core_app/styles/_globals_v8dark.scss), because they are imported by all SCSS files as part of the `sass-loader` in [/packages/osd-optimizer/src/worker/webpack.config.ts](/packages/osd-optimizer/src/worker/webpack.config.ts) and [/packages/osd-optimizer/src/worker/theme_loader.ts](/packages/osd-optimizer/src/worker/theme_loader.ts). Note that the optimizer webpack will compile a separate stylesheet for each unique mode and theme combination. +2. These tags must correspond to entrypoint SCSS files in [/src/core/public/core_app/styles/](/src/core/public/core_app/styles/_globals_v8dark.scss), because they are imported by all SCSS files as part of the `sass-loader` in [/packages/osd-optimizer/src/worker/rspack.config.ts](/packages/osd-optimizer/src/worker/rspack.config.ts) and [/packages/osd-optimizer/src/worker/theme_loader.ts](/packages/osd-optimizer/src/worker/theme_loader.ts). Note that the optimizer rspack will compile a separate stylesheet for each unique mode and theme combination. 3. OUI SCSS source files are also imported by `osd-ui-framework`, which generates the legacy KUI stylesheets (e.g. [/packages/osd-ui-framework/src/kui_next_dark.scss](/packages/osd-ui-framework/src/kui_next_dark.scss)). KUI is a UI library that predates EUI/OUI, and should be deprecated and fully removed via [#1060](https://github.com/opensearch-project/OpenSearch-Dashboards/issues/1060). The compiled CSS files are committed in `packages/osd-ui-framework/dist/`. But similarly to 2., a separate stylesheet is generated for each mode and theme combination. ### Thmemed assets in OpenSearch Dasboards @@ -108,8 +108,8 @@ sequenceDiagram Each of the following are loaded in the browser by the [bootstrap script](/src/legacy/ui/ui_render/bootstrap/template.js.hbs) in this order. Currently, these are never unloaded. -1. Monaco editor styles (e.g. [/packages/osd-ui-shared-deps/target/osd-ui-shared-deps.css](/packages/osd-ui-shared-deps/target/osd-ui-shared-deps.css)), packaged by [/packages/osd-ui-shared-deps/webpack.config.js](/packages/osd-ui-shared-deps/webpack.config.js). In theory, this file could include styles from other shared dependencies, but currently `osd-monaco` is the only package that exports styles. Note that these are the default, un-themed styles; theming of monaco editors is handled by [/src/plugins/opensearch_dashboards_react/public/code_editor/editor_theme.ts](/src/plugins/opensearch_dashboards_react/public/code_editor/editor_theme.ts). -2. Theme and mode-specific OUI styles (e.g. [](), compiled by `packages/osd-ui-shared-deps/webpack.config.js`). +1. Monaco editor styles (e.g. [/packages/osd-ui-shared-deps/target/osd-ui-shared-deps.css](/packages/osd-ui-shared-deps/target/osd-ui-shared-deps.css)), packaged by [/packages/osd-ui-shared-deps/rspack.config.js](/packages/osd-ui-shared-deps/rspack.config.js). In theory, this file could include styles from other shared dependencies, but currently `osd-monaco` is the only package that exports styles. Note that these are the default, un-themed styles; theming of monaco editors is handled by [/src/plugins/opensearch_dashboards_react/public/code_editor/editor_theme.ts](/src/plugins/opensearch_dashboards_react/public/code_editor/editor_theme.ts). +2. Theme and mode-specific OUI styles (e.g. [](), compiled by `packages/osd-ui-shared-deps/rspack.config.js`). 3. Theme and mode-specific KUI styles (e.g. `packages/osd-ui-framework/src/kui_next_dark.scss`, compiled CSS committed in `packages/osd-ui-framework/dist/`). Separate stylesheets for each theme version/dark mode combo (colors). 4. Mode-specific legacy styles (e.g. [/src/core/server/core_app/assets/legacy_dark_theme.css](/src/core/server/core_app/assets/legacy_dark_theme.css)) @@ -142,7 +142,7 @@ Update `DEFAULT_THEME_VERSION` in `src/core/server/ui_settings/ui_settings_confi 2. Update OSD to consume new OUI version 3. Make the following changes in OSD: 1. Load your theme by creating sass files in `src/core/public/core_app/styles` - 2. Update [webpack config](packages/osd-ui-shared-deps/webpack.config.js) to create css files for your theme + 2. Update [rspack config](packages/osd-ui-shared-deps/rspack.config.js) to create css files for your theme 2. Add kui css files: 1. Create kui sass files for your theme in `packages/osd-ui-framework/src/` 2. Compile the SCSS and commit the resulting CSS in `packages/osd-ui-framework/dist/` diff --git a/package.json b/package.json index 7c87185c9689..3d9a9e6e98e9 100644 --- a/package.json +++ b/package.json @@ -145,8 +145,7 @@ "**/loader-utils": "^2.0.4", "**/nth-check": "^2.0.1", "**/semver": "^7.5.3", - "**/compression-webpack-plugin/serialize-javascript": "^7.0.3", - "**/terser-webpack-plugin/serialize-javascript": "^7.0.3", + "**/serialize-javascript": "^7.0.3", "**/trim": "^0.0.3", "**/typescript": "~6.0.2", "**/yaml": "^2.2.2", @@ -229,7 +228,6 @@ "@xyflow/react": "^12.8.2", "antlr4-c3": "^3.4.3", "antlr4ng": "^3.0.16", - "babel-loader": "^10.0.0", "bluebird": "3.5.5", "chalk": "^4.1.0", "chokidar": "^3.4.2", @@ -312,7 +310,6 @@ "@babel/register": "^7.29.7", "@babel/types": "^7.29.7", "@cfaester/enzyme-adapter-react-18": "^0.8.0", - "@cypress/webpack-preprocessor": "^6.0.1", "@elastic/apm-rum": "^5.6.1", "@elastic/charts": "31.1.0", "@elastic/ems-client": "7.10.0", @@ -423,7 +420,6 @@ "@types/uuid": "^3.4.4", "@types/vinyl": "^2.0.4", "@types/vinyl-fs": "^2.4.11", - "@types/webpack-env": "^1.16.3", "@typescript-eslint/eslint-plugin": "^8.58.0", "@typescript-eslint/parser": "^8.58.0", "antlr4ng-cli": "^2.0.0", @@ -537,7 +533,6 @@ "vega-schema-url-parser": "^2.1.0", "vega-tooltip": "^0.30.0", "vinyl-fs": "^3.0.3", - "webpack": "^5.104.1", "xml2js": "^0.5.0", "xmlbuilder": "13.0.2", "zlib": "^1.0.5" diff --git a/packages/osd-interpreter/package.json b/packages/osd-interpreter/package.json index 7233d3cc3a3b..f80f50d25fef 100644 --- a/packages/osd-interpreter/package.json +++ b/packages/osd-interpreter/package.json @@ -28,7 +28,6 @@ "sass-loader": "16.0.5", "style-loader": "^1.1.3", "supports-color": "^7.0.0", - "url-loader": "^2.2.0", - "webpack-cli": "^4.9.2" + "url-loader": "^2.2.0" } } diff --git a/packages/osd-monaco/package.json b/packages/osd-monaco/package.json index 4ea044695a94..b521059e13bd 100644 --- a/packages/osd-monaco/package.json +++ b/packages/osd-monaco/package.json @@ -23,7 +23,6 @@ "file-loader": "^6.2.0", "style-loader": "^1.1.3", "supports-color": "^7.0.0", - "webpack-cli": "^4.9.2", "@babel/plugin-transform-class-properties": "^7.29.7", "@babel/plugin-transform-optional-chaining": "^7.29.7", "@babel/plugin-transform-nullish-coalescing-operator": "^7.29.7", diff --git a/packages/osd-monaco/webpack.config.js b/packages/osd-monaco/rspack.config.js similarity index 100% rename from packages/osd-monaco/webpack.config.js rename to packages/osd-monaco/rspack.config.js diff --git a/packages/osd-monaco/scripts/build.js b/packages/osd-monaco/scripts/build.js index 67b9f1d38891..b42d10d72545 100644 --- a/packages/osd-monaco/scripts/build.js +++ b/packages/osd-monaco/scripts/build.js @@ -35,7 +35,7 @@ const { run } = require('@osd/dev-utils'); const TARGET_BUILD_DIR = path.resolve(__dirname, '../target'); const ROOT_DIR = path.resolve(__dirname, '../'); -const WEBPACK_CONFIG_PATH = path.resolve(ROOT_DIR, 'webpack.config.js'); +const RSPACK_CONFIG_PATH = path.resolve(ROOT_DIR, 'rspack.config.js'); run( async ({ procRunner, log, flags }) => { @@ -51,7 +51,7 @@ run( await procRunner.run('worker', { cmd: 'rspack', - args: ['--config', WEBPACK_CONFIG_PATH], + args: ['--config', RSPACK_CONFIG_PATH], wait: true, env, cwd, diff --git a/packages/osd-optimizer/README.md b/packages/osd-optimizer/README.md index 0a4c364ee229..fef6c4a5a6a4 100644 --- a/packages/osd-optimizer/README.md +++ b/packages/osd-optimizer/README.md @@ -4,9 +4,9 @@ OpenSearch Dashboards Platform plugins with `"ui": true` in their `opensearch_dashboards.json` file will have their `public/index.ts` file (and all of its dependencies) bundled into the `target/public` directory of the plugin. The build output does not need to be updated when other plugins are updated and is included in the distributable without requiring that we ship `@osd/optimizer` 🎉. -## Webpack config +## Rspack config -The [Webpack config][WebpackConfig] is designed to provide the majority of what was available in the legacy optimizer and is the same for all plugins to promote consistency and keep things sane for the operations team. It has support for JS/TS built with babel, url imports of image and font files, and support for importing `scss` and `css` files. SCSS is pre-processed by [postcss][PostCss], built for both light and dark mode and injected automatically into the page when the parent module is loaded (page reloads are still required for switching between light/dark mode). CSS is injected into the DOM as it is written on disk when the parent module is loaded (no postcss support). +The [Rspack config][RspackConfig] is designed to provide the majority of what was available in the legacy optimizer and is the same for all plugins to promote consistency and keep things sane for the operations team. It has support for JS/TS built with babel, url imports of image and font files, and support for importing `scss` and `css` files. SCSS is pre-processed by [postcss][PostCss], built for both light and dark mode and injected automatically into the page when the parent module is loaded (page reloads are still required for switching between light/dark mode). CSS is injected into the DOM as it is written on disk when the parent module is loaded (no postcss support). Source maps are enabled except when building the distributable. They show the code actually being executed by the browser to strike a balance between debuggability and performance. They are not configurable at this time but will be configurable once we have a developer configuration solution that doesn't rely on the server (see [#615](https://github.com/opensearch-project/OpenSearch-Dashboards/issues/615)). @@ -94,7 +94,7 @@ This is essentially what we're doing in [`script/build_opensearch_dashboards_pla ## Internals -The optimizer runs webpack instances in worker processes. Each worker is configured via a [`WorkerConfig`][WorkerConfig] object and an array of [`Bundle`][Bundle] objects which are JSON serialized and passed to the worker as it's arguments. +The optimizer runs rspack instances in worker processes. Each worker is configured via a [`WorkerConfig`][WorkerConfig] object and an array of [`Bundle`][Bundle] objects which are JSON serialized and passed to the worker as it's arguments. Plugins/bundles are assigned to workers based on the number of modules historically seen in each bundle in an effort to evenly distribute the load across the worker pool (see [`assignBundlesToWorkers`][AssignBundlesToWorkers]). @@ -102,7 +102,7 @@ The number of workers that will be started at any time is automatically chosen b The [`WorkerConfig`][WorkerConfig] includes the location of the repo (it might be one of many builds, or the main repo), wether we are running in watch mode, wether we are building a distributable, and other global config items. -The [`Bundle`][Bundle] objects which include the details necessary to create a webpack config for a specific plugin's bundle (created using [`webpack.config.ts`][WebpackConfig]). +The [`Bundle`][Bundle] objects which include the details necessary to create an rspack config for a specific plugin's bundle (created using [`rspack.config.ts`][RspackConfig]). Each worker communicates state back to the main process by sending [`WorkerMsg`][WorkerMsg] and [`CompilerMsg`][CompilerMsg] objects using IPC. @@ -135,7 +135,7 @@ For an example of how to handle these states checkout the [`logOptimizerState()` [CompilerMsg]: src/common/compiler_messages.ts [WorkerMsg]: src/common/worker_messages.ts [Bundle]: src/common/bundle.ts -[WebpackConfig]: src/worker/webpack.config.ts +[RspackConfig]: src/worker/rspack.config.ts [BundleDefinition]: src/common/bundle_definition.ts [WorkerConfig]: src/common/worker_config.ts [OptimizerConfig]: src/optimizer_config.ts diff --git a/packages/osd-optimizer/package.json b/packages/osd-optimizer/package.json index b50161a3ffd5..f4dbf18cea6e 100644 --- a/packages/osd-optimizer/package.json +++ b/packages/osd-optimizer/package.json @@ -18,7 +18,6 @@ "@osd/std": "1.0.0", "@osd/ui-shared-deps": "1.0.0", "autoprefixer": "^10.4.1", - "clean-webpack-plugin": "^3.0.0", "compression-webpack-plugin": "^11.1.0", "cpy": "^8.0.0", "core-js": "^3.6.5", @@ -33,19 +32,15 @@ "pirates": "^4.0.1", "postcss": "^8.4.31", "rxjs": "^6.5.5", - "source-map-support": "^0.5.19", - "terser-webpack-plugin": "^2.1.2", - "webpack-merge": "^5.10.0" + "source-map-support": "^0.5.19" }, "devDependencies": { "@node-rs/xxhash": "^1.3.0", "@types/babel__core": "^7.1.17", - "@types/loader-utils": "^1.1.3", "@types/source-map-support": "^0.5.3", "comment-stripper": "^0.0.4", "css-loader": "^5.2.7", "file-loader": "^6.2.0", - "loader-utils": "^2.0.4", "sass-embedded": "1.93.3", "postcss-loader": "^8.1.1", "raw-loader": "^4.0.2", diff --git a/packages/osd-optimizer/src/cli.ts b/packages/osd-optimizer/src/cli.ts index 0b45cee31021..f1a8ceb337de 100644 --- a/packages/osd-optimizer/src/cli.ts +++ b/packages/osd-optimizer/src/cli.ts @@ -69,8 +69,8 @@ run( throw createFlagError('expected --no-examples to have no value'); } - const profileWebpack = flags.profile ?? false; - if (typeof profileWebpack !== 'boolean') { + const profileRspack = flags.profile ?? false; + if (typeof profileRspack !== 'boolean') { throw createFlagError('expected --profile to have no value'); } @@ -118,7 +118,7 @@ run( dist: dist || updateLimits, cache, examples: examples && !(validateLimits || updateLimits), - profileWebpack, + profileRspack, extraPluginScanDirs, inspectWorkers, includeCoreBundle, @@ -173,7 +173,7 @@ run( help: ` --watch run the optimizer in watch mode --workers max number of workers to use - --profile profile the webpack builds and write stats.json files to build outputs + --profile profile the rspack builds and write stats.json files to build outputs --no-core disable generating the core bundle --no-cache disable rspack persistent cache (forces full rebuild) --filter comma-separated list of bundle id filters, results from multiple flags are merged, * and ! are supported diff --git a/packages/osd-optimizer/src/common/parse_path.ts b/packages/osd-optimizer/src/common/parse_path.ts index 134d021472b7..3ed211a8e2d1 100644 --- a/packages/osd-optimizer/src/common/parse_path.ts +++ b/packages/osd-optimizer/src/common/parse_path.ts @@ -32,7 +32,7 @@ import normalizePath from 'normalize-path'; import Qs from 'querystring'; /** - * Parse an absolute path, supporting normalized paths from webpack, + * Parse an absolute path, supporting normalized paths from rspack, * into a list of directories and root */ export function parseDirPath(path: string) { diff --git a/packages/osd-optimizer/src/common/worker_config.ts b/packages/osd-optimizer/src/common/worker_config.ts index de12d6e371a5..64798d72d111 100644 --- a/packages/osd-optimizer/src/common/worker_config.ts +++ b/packages/osd-optimizer/src/common/worker_config.ts @@ -39,7 +39,7 @@ export interface WorkerConfig { readonly dist: boolean; readonly themeTags: ThemeTags; readonly cache: boolean; - readonly profileWebpack: boolean; + readonly profileRspack: boolean; readonly browserslistEnv: string; } @@ -75,9 +75,9 @@ export function parseWorkerConfig(json: string): WorkerConfig { throw new Error('`dist` config must be a boolean'); } - const profileWebpack = parsed.profileWebpack; - if (typeof profileWebpack !== 'boolean') { - throw new Error('`profileWebpack` must be a boolean'); + const profileRspack = parsed.profileRspack; + if (typeof profileRspack !== 'boolean') { + throw new Error('`profileRspack` must be a boolean'); } const browserslistEnv = parsed.browserslistEnv; @@ -92,7 +92,7 @@ export function parseWorkerConfig(json: string): WorkerConfig { cache, watch, dist, - profileWebpack, + profileRspack, browserslistEnv, themeTags: themes, }; diff --git a/packages/osd-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap b/packages/osd-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap index cab73fb1fbc2..b0d767499962 100644 --- a/packages/osd-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap +++ b/packages/osd-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap @@ -65,7 +65,7 @@ OptimizerConfig { "manifestPath": /packages/osd-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/nested/baz/opensearch_dashboards.json, }, ], - "profileWebpack": false, + "profileRspack": false, "repoRoot": /packages/osd-optimizer/src/__fixtures__/__tmp__/mock_repo, "themeTags": Array [ "v8light", diff --git a/packages/osd-optimizer/src/log_optimizer_state.ts b/packages/osd-optimizer/src/log_optimizer_state.ts index fb7c832a5116..4adc21d83be1 100644 --- a/packages/osd-optimizer/src/log_optimizer_state.ts +++ b/packages/osd-optimizer/src/log_optimizer_state.ts @@ -160,7 +160,7 @@ export function logOptimizerState(log: ToolingLog, config: OptimizerConfig) { if (state.phase === 'issue') { clearProgressLine(); stopRedrawInterval(); - log.error(`webpack compile errors`); + log.error(`rspack compile errors`); log.indent(4); for (const b of state.compilerStates) { if (b.type === 'compiler issue') { diff --git a/packages/osd-optimizer/src/optimizer/handle_optimizer_completion.test.ts b/packages/osd-optimizer/src/optimizer/handle_optimizer_completion.test.ts index 40276bace391..02f118fc2be8 100644 --- a/packages/osd-optimizer/src/optimizer/handle_optimizer_completion.test.ts +++ b/packages/osd-optimizer/src/optimizer/handle_optimizer_completion.test.ts @@ -70,7 +70,7 @@ it('errors if the optimizer completes in phase "issue"', async () => { await expect( allValuesFrom(update$.pipe(handleOptimizerCompletion(config()))) - ).rejects.toThrowErrorMatchingInlineSnapshot(`"webpack issue"`); + ).rejects.toThrowErrorMatchingInlineSnapshot(`"rspack issue"`); }); it('errors if the optimizer completes in phase "initializing"', async () => { diff --git a/packages/osd-optimizer/src/optimizer/handle_optimizer_completion.ts b/packages/osd-optimizer/src/optimizer/handle_optimizer_completion.ts index 1cc9afadfd26..57285b27d012 100644 --- a/packages/osd-optimizer/src/optimizer/handle_optimizer_completion.ts +++ b/packages/osd-optimizer/src/optimizer/handle_optimizer_completion.ts @@ -56,7 +56,7 @@ export function handleOptimizerCompletion(config: OptimizerConfig) { } if (prevState?.phase === 'issue') { - throw createFailError('webpack issue'); + throw createFailError('rspack issue'); } throw new Error(`optimizer unexpectedly exit in phase "${prevState?.phase}"`); diff --git a/packages/osd-optimizer/src/optimizer/optimizer_config.test.ts b/packages/osd-optimizer/src/optimizer/optimizer_config.test.ts index 46ed88647567..d47663fe3922 100644 --- a/packages/osd-optimizer/src/optimizer/optimizer_config.test.ts +++ b/packages/osd-optimizer/src/optimizer/optimizer_config.test.ts @@ -153,7 +153,7 @@ describe('OptimizerConfig::parseOptions()', () => { /plugins, /opensearch-dashboards-extra, ], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -181,7 +181,7 @@ describe('OptimizerConfig::parseOptions()', () => { /plugins, /opensearch-dashboards-extra, ], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -210,7 +210,7 @@ describe('OptimizerConfig::parseOptions()', () => { /examples, /opensearch-dashboards-extra, ], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -237,7 +237,7 @@ describe('OptimizerConfig::parseOptions()', () => { /plugins, /opensearch-dashboards-extra, ], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -264,7 +264,7 @@ describe('OptimizerConfig::parseOptions()', () => { /x/y/z, "/outside/of/repo", ], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -289,7 +289,7 @@ describe('OptimizerConfig::parseOptions()', () => { "outputRoot": , "pluginPaths": Array [], "pluginScanDirs": Array [], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -314,7 +314,7 @@ describe('OptimizerConfig::parseOptions()', () => { "outputRoot": , "pluginPaths": Array [], "pluginScanDirs": Array [], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -339,7 +339,7 @@ describe('OptimizerConfig::parseOptions()', () => { "outputRoot": , "pluginPaths": Array [], "pluginScanDirs": Array [], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -365,7 +365,7 @@ describe('OptimizerConfig::parseOptions()', () => { "outputRoot": , "pluginPaths": Array [], "pluginScanDirs": Array [], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -391,7 +391,7 @@ describe('OptimizerConfig::parseOptions()', () => { "outputRoot": , "pluginPaths": Array [], "pluginScanDirs": Array [], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -421,7 +421,7 @@ describe('OptimizerConfig::parseOptions()', () => { /plugins, /opensearch-dashboards-extra, ], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -449,7 +449,7 @@ describe('OptimizerConfig::parseOptions()', () => { /plugins, /opensearch-dashboards-extra, ], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -478,7 +478,7 @@ describe('OptimizerConfig::parseOptions()', () => { /examples, /opensearch-dashboards-extra, ], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -505,7 +505,7 @@ describe('OptimizerConfig::parseOptions()', () => { /plugins, /opensearch-dashboards-extra, ], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -532,7 +532,7 @@ describe('OptimizerConfig::parseOptions()', () => { /x/y/z, "/outside/of/repo", ], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -557,7 +557,7 @@ describe('OptimizerConfig::parseOptions()', () => { "outputRoot": , "pluginPaths": Array [], "pluginScanDirs": Array [], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -582,7 +582,7 @@ describe('OptimizerConfig::parseOptions()', () => { "outputRoot": , "pluginPaths": Array [], "pluginScanDirs": Array [], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -607,7 +607,7 @@ describe('OptimizerConfig::parseOptions()', () => { "outputRoot": , "pluginPaths": Array [], "pluginScanDirs": Array [], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -633,7 +633,7 @@ describe('OptimizerConfig::parseOptions()', () => { "outputRoot": , "pluginPaths": Array [], "pluginScanDirs": Array [], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -659,7 +659,7 @@ describe('OptimizerConfig::parseOptions()', () => { "outputRoot": , "pluginPaths": Array [], "pluginScanDirs": Array [], - "profileWebpack": false, + "profileRspack": false, "repoRoot": , "themeTags": undefined, "watch": false, @@ -710,7 +710,7 @@ describe('OptimizerConfig::create()', () => { watch: Symbol('parsed watch'), themeTags: Symbol('theme tags'), inspectWorkers: Symbol('parsed inspect workers'), - profileWebpack: Symbol('parsed profile webpack'), + profileRspack: Symbol('parsed profile rspack'), filters: [], includeCoreBundle: false, bundleRefs: Symbol('bundle refs'), @@ -732,7 +732,7 @@ describe('OptimizerConfig::create()', () => { "limits": Symbol(limits), "maxWorkerCount": Symbol(parsed max worker count), "plugins": Symbol(new platform plugins), - "profileWebpack": Symbol(parsed profile webpack), + "profileRspack": Symbol(parsed profile rspack), "repoRoot": Symbol(parsed repo root), "themeTags": Symbol(theme tags), "watch": Symbol(parsed watch), diff --git a/packages/osd-optimizer/src/optimizer/optimizer_config.ts b/packages/osd-optimizer/src/optimizer/optimizer_config.ts index 96729f172d00..a429fdd7c8f0 100644 --- a/packages/osd-optimizer/src/optimizer/optimizer_config.ts +++ b/packages/osd-optimizer/src/optimizer/optimizer_config.ts @@ -74,8 +74,8 @@ interface Options { cache?: boolean; /** build assets suitable for use in the distributable */ dist?: boolean; - /** enable webpack profiling, writes stats.json files to the root of each plugin's output dir */ - profileWebpack?: boolean; + /** enable rspack profiling, writes stats.json files to the root of each plugin's output dir */ + profileRspack?: boolean; /** set to true to inspecting workers when the parent process is being inspected */ inspectWorkers?: boolean; @@ -123,7 +123,7 @@ export interface ParsedOptions { outputRoot: string; watch: boolean; maxWorkerCount: number; - profileWebpack: boolean; + profileRspack: boolean; cache: boolean; dist: boolean; pluginPaths: string[]; @@ -140,7 +140,7 @@ export class OptimizerConfig { const watch = !!options.watch; const dist = !!options.dist; const examples = !!options.examples; - const profileWebpack = !!options.profileWebpack; + const profileRspack = !!options.profileRspack; const inspectWorkers = !!options.inspectWorkers; const cache = options.cache !== false && !process.env.OSD_OPTIMIZER_NO_CACHE; const includeCoreBundle = !!options.includeCoreBundle; @@ -202,7 +202,7 @@ export class OptimizerConfig { repoRoot, outputRoot, maxWorkerCount, - profileWebpack, + profileRspack, cache, pluginScanDirs, pluginPaths, @@ -245,7 +245,7 @@ export class OptimizerConfig { options.repoRoot, options.maxWorkerCount, options.dist, - options.profileWebpack, + options.profileRspack, options.themeTags, readLimits(), options.bundleRefs @@ -261,7 +261,7 @@ export class OptimizerConfig { public readonly repoRoot: string, public readonly maxWorkerCount: number, public readonly dist: boolean, - public readonly profileWebpack: boolean, + public readonly profileRspack: boolean, public readonly themeTags: ThemeTags, public readonly limits: Limits, public readonly bundleRefs: BundleRef[] @@ -271,7 +271,7 @@ export class OptimizerConfig { return { cache: this.cache, dist: this.dist, - profileWebpack: this.profileWebpack, + profileRspack: this.profileRspack, repoRoot: this.repoRoot, watch: this.watch, themeTags: this.themeTags, diff --git a/packages/osd-optimizer/src/worker/webpack.config.ts b/packages/osd-optimizer/src/worker/rspack.config.ts similarity index 97% rename from packages/osd-optimizer/src/worker/webpack.config.ts rename to packages/osd-optimizer/src/worker/rspack.config.ts index 683a52d851de..0a55178ecf84 100644 --- a/packages/osd-optimizer/src/worker/webpack.config.ts +++ b/packages/osd-optimizer/src/worker/rspack.config.ts @@ -38,7 +38,7 @@ import browserslist from 'browserslist'; import * as sass from 'sass-embedded'; import { Bundle, BundleRefs, WorkerConfig } from '../common'; -import { STATS_WARNINGS_FILTER } from './webpack_helpers'; +import { STATS_WARNINGS_FILTER } from './rspack_helpers'; import { BundleDepsCheckPlugin } from './bundle_deps_check_plugin'; const compilers: sass.AsyncCompiler[] = []; @@ -74,7 +74,7 @@ export const sassCompiler = { }, }; -export function getWebpackConfig(bundle: Bundle, bundleRefs: BundleRefs, worker: WorkerConfig) { +export function getRspackConfig(bundle: Bundle, bundleRefs: BundleRefs, worker: WorkerConfig) { const targets = browserslist.loadConfig({ path: worker.repoRoot }); const ENTRY_CREATOR = require.resolve('./entry_point_creator'); const resolveOptions = { @@ -341,7 +341,7 @@ export function getWebpackConfig(bundle: Bundle, bundleRefs: BundleRefs, worker: test: /\.(j|t)sx?$/, exclude: [ /* vega-lite, reactflow and some of its dependencies don't have es5 builds - * so we need to build from source and transpile for webpack v4 + * so we need to build from source and transpile with SWC * kbn-handlebars uses modern syntax (nullish coalescing) that needs transpilation */ /[\/\\]node_modules[\/\\](?!(vega(-lite|-label|-functions|-scenegraph)?|kbn-handlebars|@?reactflow)[\/\\])/, @@ -390,7 +390,7 @@ export function getWebpackConfig(bundle: Bundle, bundleRefs: BundleRefs, worker: performance: { // NOTE: we are disabling this as those hints // are more tailored for the final bundles result - // and not for the webpack compilations performance itself + // and not for the rspack compilations performance itself hints: false, }, ignoreWarnings: [STATS_WARNINGS_FILTER], diff --git a/packages/osd-optimizer/src/worker/webpack_helpers.ts b/packages/osd-optimizer/src/worker/rspack_helpers.ts similarity index 82% rename from packages/osd-optimizer/src/worker/webpack_helpers.ts rename to packages/osd-optimizer/src/worker/rspack_helpers.ts index 2cc4927eec90..a99a1968b595 100644 --- a/packages/osd-optimizer/src/worker/webpack_helpers.ts +++ b/packages/osd-optimizer/src/worker/rspack_helpers.ts @@ -36,7 +36,7 @@ export function isFailureStats(stats: Stats) { // Log warnings if present if (warnings && warnings.length > 0) { // eslint-disable-next-line no-console - console.warn(`[Webpack] ${warnings.length} warning(s) found:`); + console.warn(`[Rspack] ${warnings.length} warning(s) found:`); warnings.forEach((warning, index) => { // eslint-disable-next-line no-console console.warn(` Warning ${index + 1}: ${warning.message || warning}`); @@ -46,7 +46,7 @@ export function isFailureStats(stats: Stats) { // Log errors if present if (errors && errors.length > 0) { // eslint-disable-next-line no-console - console.error(`[Webpack] ${errors.length} error(s) found:`); + console.error(`[Rspack] ${errors.length} error(s) found:`); errors.forEach((error, index) => { // eslint-disable-next-line no-console console.error(` Error ${index + 1}: ${error.message || error}`); @@ -72,7 +72,7 @@ export function failedStatsToErrorMessage(stats: Stats) { return `Optimizations failure.\n${details.split('\n').join('\n ')}`; } -export interface WebpackResolveData { +export interface RspackResolveData { /** compilation context */ context: string; /** full request (with loaders) */ @@ -92,7 +92,7 @@ export interface WebpackResolveData { /** string from source code */ rawRequest: string; loaders: unknown; - /** absolute path to file, but probablt includes loaders in some cases */ + /** absolute path to file, but probably includes loaders in some cases */ resource: string; /** module type */ type: string | 'javascript/auto'; @@ -113,7 +113,7 @@ interface Dependency { } /** used for standard js/ts modules */ -export interface WebpackNormalModule { +export interface RspackNormalModule { type: string; /** absolute path to file on disk */ resource: string; @@ -124,12 +124,12 @@ export interface WebpackNormalModule { dependencies: Dependency[]; } -export function isNormalModule(module: any): module is WebpackNormalModule { +export function isNormalModule(module: any): module is RspackNormalModule { return module?.constructor?.name === 'NormalModule'; } /** module used for ignored code */ -export interface WebpackIgnoredModule { +export interface RspackIgnoredModule { type: string; /** unique string to identify this module with (starts with `ignored`) */ identifierStr: string; @@ -138,15 +138,15 @@ export interface WebpackIgnoredModule { } // TODO: refactor the types here -export function isIgnoredModule(module: any): module is WebpackIgnoredModule { +export function isIgnoredModule(module: any): module is RspackIgnoredModule { return ( (module?.constructor?.name === 'RawModule' && module.identifierStr?.startsWith('ignored ')) || (module?.constructor?.name === 'Module' && module?.identifier?.().startsWith('ignored')) ); } -/** module replacing imports for webpack externals */ -export interface WebpackExternalModule { +/** module replacing imports for rspack externals */ +export interface RspackExternalModule { type: string; id: string; /** JS used to get instance of External */ @@ -155,16 +155,16 @@ export interface WebpackExternalModule { userRequest: string; } -export function isExternalModule(module: any): module is WebpackExternalModule { +export function isExternalModule(module: any): module is RspackExternalModule { return module?.constructor?.name === 'ExternalModule'; } -export function isContextModule(module: any): module is WebpackExternalModule { +export function isContextModule(module: any): module is RspackExternalModule { return module?.constructor?.name === 'ContextModule'; } -/** module replacing imports for webpack externals */ -export interface WebpackConcatenatedModule { +/** module replacing imports for rspack externals */ +export interface RspackConcatenatedModule { type: string; id: number; dependencies: Dependency[]; @@ -172,11 +172,11 @@ export interface WebpackConcatenatedModule { modules: unknown[]; } -export function isConcatenatedModule(module: any): module is WebpackConcatenatedModule { +export function isConcatenatedModule(module: any): module is RspackConcatenatedModule { return module?.constructor?.name === 'ConcatenatedModule'; } -export function getModulePath(module: WebpackNormalModule) { +export function getModulePath(module: RspackNormalModule) { const queryIndex = module.resource.indexOf('?'); return queryIndex === -1 ? module.resource : module.resource.slice(0, queryIndex); } diff --git a/packages/osd-optimizer/src/worker/run_compilers.ts b/packages/osd-optimizer/src/worker/run_compilers.ts index 1eb4ed562ce6..00f4fef0260e 100644 --- a/packages/osd-optimizer/src/worker/run_compilers.ts +++ b/packages/osd-optimizer/src/worker/run_compilers.ts @@ -34,7 +34,6 @@ import Fs from 'fs'; import Path from 'path'; import { inspect } from 'util'; -// import webpack, { Stats } from 'webpack'; import { rspack, Compiler, Stats } from '@rspack/core'; import * as Rx from 'rxjs'; import { mergeMap, map, mapTo, takeUntil, finalize } from 'rxjs/operators'; @@ -49,15 +48,15 @@ import { parseFilePath, BundleRefs, } from '../common'; -import { getWebpackConfig, sassCompiler } from './webpack.config'; -import { isFailureStats, failedStatsToErrorMessage, isContextModule } from './webpack_helpers'; +import { getRspackConfig, sassCompiler } from './rspack.config'; +import { isFailureStats, failedStatsToErrorMessage, isContextModule } from './rspack_helpers'; import { isExternalModule, isNormalModule, isIgnoredModule, isConcatenatedModule, getModulePath, -} from './webpack_helpers'; +} from './rspack_helpers'; const PLUGIN_NAME = '@osd/optimizer'; @@ -84,7 +83,7 @@ const observeCompiler = ( const { beforeRun, watchRun, done } = compiler.hooks; /** - * Called by webpack as a single run compilation is starting + * Called by rspack as a single run compilation is starting */ const started$ = Rx.merge( Rx.fromEventPattern((cb) => beforeRun.tap(PLUGIN_NAME, cb)), @@ -92,7 +91,7 @@ const observeCompiler = ( ).pipe(mapTo(compilerMsgs.running())); /** - * Called by webpack as any compilation is complete. If the + * Called by rspack as any compilation is complete. If the * needAdditionalPass property is set then another compilation * is about to be started, so we shouldn't send complete quite yet */ @@ -102,7 +101,7 @@ const observeCompiler = ( return undefined; } - if (workerConfig.profileWebpack) { + if (workerConfig.profileRspack) { Fs.writeFileSync( Path.resolve(bundle.outputDir, 'stats.json'), JSON.stringify( @@ -226,7 +225,7 @@ const observeCompiler = ( }; /** - * Run webpack compilers + * Run rspack compilers */ export const runCompilers = ( workerConfig: WorkerConfig, @@ -234,7 +233,7 @@ export const runCompilers = ( bundleRefs: BundleRefs ) => { const multiCompiler = rspack( - bundles.map((def) => getWebpackConfig(def, bundleRefs, workerConfig)) + bundles.map((def) => getRspackConfig(def, bundleRefs, workerConfig)) ); return Rx.merge( diff --git a/packages/osd-optimizer/src/worker/theme_loader.ts b/packages/osd-optimizer/src/worker/theme_loader.ts index 691915b7a571..9cdc44a7a114 100644 --- a/packages/osd-optimizer/src/worker/theme_loader.ts +++ b/packages/osd-optimizer/src/worker/theme_loader.ts @@ -28,28 +28,36 @@ * under the License. */ -import { stringifyRequest, getOptions } from 'loader-utils'; -import webpack from 'webpack'; +import type { LoaderContext } from '@rspack/core'; import { parseThemeTags, ALL_THEMES, ThemeTag } from '../common'; -const getVersion = (tag: ThemeTag) => (tag.includes('v7') ? 7 : 8); +interface ThemeLoaderOptions { + bundleId: string; + themeTags: string; +} + +const getVersion = (tag: ThemeTag) => (tag.includes('v7') ? 7 : tag.includes('v9') ? 9 : 8); const getIsDark = (tag: ThemeTag) => tag.includes('dark'); const compare = (a: ThemeTag, b: ThemeTag) => (getVersion(a) === getVersion(b) ? 1 : 0) + (getIsDark(a) === getIsDark(b) ? 1 : 0); // eslint-disable-next-line import/no-default-export -export default function (this: webpack.loader.LoaderContext) { +export default function (this: LoaderContext) { this.cacheable(true); - const options = getOptions(this); - const bundleId: string = options.bundleId!; + const options = this.getOptions(); + const bundleId: string = options.bundleId; const themeTags = parseThemeTags(options.themeTags); + const contextify = (resourcePath: string) => { + return this.utils.contextify(this.context!, resourcePath); + }; + const cases = ALL_THEMES.map((tag) => { if (themeTags.includes(tag)) { return ` case '${tag}': - return require(${stringifyRequest(this, `${this.resourcePath}?${tag}`)});`; + return require(${JSON.stringify(contextify(`${this.resourcePath}?${tag}`))});`; } const fallback = themeTags @@ -61,7 +69,7 @@ export default function (this: webpack.loader.LoaderContext) { return ` case '${tag}': console.error(new Error(${JSON.stringify(message)})); - return require(${stringifyRequest(this, `${this.resourcePath}?${fallback}`)})`; + return require(${JSON.stringify(contextify(`${this.resourcePath}?${fallback}`))})`; }).join('\n'); return ` diff --git a/packages/osd-pm/package.json b/packages/osd-pm/package.json index 1f91acd92292..80ea5fee38ff 100644 --- a/packages/osd-pm/package.json +++ b/packages/osd-pm/package.json @@ -8,8 +8,8 @@ "devOnly": true }, "scripts": { - "build": "rspack --config webpack.config.js", - "osd:watch": "rspack --config webpack.config.js --watch", + "build": "rspack --config rspack.config.js", + "osd:watch": "rspack --config rspack.config.js --watch", "prettier": "prettier --write './src/**/*.ts'" }, "devDependencies": { @@ -58,7 +58,6 @@ "strong-log-transformer": "^2.1.0", "tempy": "^0.3.0", "unlazy-loader": "^0.1.3", - "webpack-cli": "^4.9.2", "write-pkg": "^4.0.0" }, "dependencies": { diff --git a/packages/osd-pm/webpack.config.js b/packages/osd-pm/rspack.config.js similarity index 100% rename from packages/osd-pm/webpack.config.js rename to packages/osd-pm/rspack.config.js diff --git a/packages/osd-ui-shared-deps/README.md b/packages/osd-ui-shared-deps/README.md index ce1996886962..f88a697dc874 100644 --- a/packages/osd-ui-shared-deps/README.md +++ b/packages/osd-ui-shared-deps/README.md @@ -1,3 +1,3 @@ # `@osd/ui-shared-deps` -Shared dependencies that must only have a single instance are installed and re-exported from here. To consume them, import the package and merge the `externals` export into your webpack config so that all references to the supported modules will be remapped to use the global versions. \ No newline at end of file +Shared dependencies that must only have a single instance are installed and re-exported from here. To consume them, import the package and merge the `externals` export into your rspack/webpack config so that all references to the supported modules will be remapped to use the global versions. \ No newline at end of file diff --git a/packages/osd-ui-shared-deps/index.d.ts b/packages/osd-ui-shared-deps/index.d.ts index fe2d19d85f30..692a9a7bd7ed 100644 --- a/packages/osd-ui-shared-deps/index.d.ts +++ b/packages/osd-ui-shared-deps/index.d.ts @@ -54,13 +54,13 @@ export * from './theme_config'; export const baseCssDistFilename: string; /** - * Externals mapping inteded to be used in a webpack config + * Externals mapping inteded to be used in an rspack/webpack config */ export const externals: { [key: string]: string; }; /** - * Webpack loader for configuring the public path lookup from `window.__osdPublicPath__`. + * Rspack/webpack loader for configuring the public path lookup from `window.__osdPublicPath__`. */ export const publicPathLoader: string; diff --git a/packages/osd-ui-shared-deps/package.json b/packages/osd-ui-shared-deps/package.json index 4e88b950e16b..768f466dd3f1 100644 --- a/packages/osd-ui-shared-deps/package.json +++ b/packages/osd-ui-shared-deps/package.json @@ -43,7 +43,6 @@ "comment-stripper": "^0.0.4", "css-loader": "^5.2.7", "del": "^6.1.1", - "loader-utils": "^2.0.4", "sass-embedded": "1.93.3", "sass-loader": "16.0.5", "val-loader": "^2.1.2" diff --git a/packages/osd-ui-shared-deps/public_path_loader.js b/packages/osd-ui-shared-deps/public_path_loader.js index 35980b75e2f5..3db4ca8c8852 100644 --- a/packages/osd-ui-shared-deps/public_path_loader.js +++ b/packages/osd-ui-shared-deps/public_path_loader.js @@ -29,7 +29,6 @@ */ const Qs = require('querystring'); -const { stringifyRequest } = require('loader-utils'); const VAL_LOADER = require.resolve('val-loader'); const MODULE_CREATOR = require.resolve('./public_path_module_creator'); @@ -38,5 +37,5 @@ module.exports = function (source) { const options = this.query; const valOpts = Qs.stringify({ key: options.key }); const req = `${VAL_LOADER}?${valOpts}!${MODULE_CREATOR}`; - return `import ${stringifyRequest(this, req)};${source}`; + return `import ${JSON.stringify(this.utils.contextify(this.context, req))};${source}`; }; diff --git a/packages/osd-ui-shared-deps/webpack.config.js b/packages/osd-ui-shared-deps/rspack.config.js similarity index 97% rename from packages/osd-ui-shared-deps/webpack.config.js rename to packages/osd-ui-shared-deps/rspack.config.js index d035104f0ad0..37253d968134 100644 --- a/packages/osd-ui-shared-deps/webpack.config.js +++ b/packages/osd-ui-shared-deps/rspack.config.js @@ -32,7 +32,6 @@ const Path = require('path'); const CompressionPlugin = require('compression-webpack-plugin'); const { REPO_ROOT } = require('@osd/utils'); -// const webpack = require('webpack'); // eslint-disable-next-line import/no-unresolved const { rspack } = require('@rspack/core'); const { getSwcLoaderConfig } = require('@osd/utils'); @@ -43,7 +42,7 @@ const MOMENT_SRC = require.resolve('moment/min/moment-with-locales.js'); const targets = ['last 2 versions', 'ie >= 11']; -exports.getWebpackConfig = ({ dev = false } = {}) => ({ +exports.getRspackConfig = ({ dev = false } = {}) => ({ mode: dev ? 'development' : 'production', entry: { 'osd-ui-shared-deps': './entry.js', @@ -198,7 +197,7 @@ exports.getWebpackConfig = ({ dev = false } = {}) => ({ performance: { // NOTE: we are disabling this as those hints // are more tailored for the final bundles result - // and not for the webpack compilations performance itself + // and not for the rspack compilations performance itself hints: false, }, diff --git a/packages/osd-ui-shared-deps/scripts/build.js b/packages/osd-ui-shared-deps/scripts/build.js index 896f17b57dec..a3803498b9ab 100644 --- a/packages/osd-ui-shared-deps/scripts/build.js +++ b/packages/osd-ui-shared-deps/scripts/build.js @@ -32,13 +32,11 @@ const Path = require('path'); const Fs = require('fs'); const { run, createFailError, CiStatsReporter } = require('@osd/dev-utils'); -// const webpack = require('webpack'); // eslint-disable-next-line import/no-unresolved const { rspack } = require('@rspack/core'); -// const Stats = require('webpack/lib/Stats'); const del = require('del'); -const { getWebpackConfig } = require('../webpack.config'); +const { getRspackConfig } = require('../rspack.config'); const DIST_DIR = Path.resolve(__dirname, '../target'); @@ -48,7 +46,7 @@ run( await del(DIST_DIR); const compiler = rspack( - getWebpackConfig({ + getRspackConfig({ dev: flags.dev, }) ); @@ -86,12 +84,12 @@ run( await reporter.metrics(metrics); } - log.success(`webpack completed in about ${took} seconds`); + log.success(`rspack completed in about ${took} seconds`); return; } throw createFailError( - `webpack failure in about ${took} seconds\n${stats.toString({ + `rspack failure in about ${took} seconds\n${stats.toString({ colors: true, preset: 'minimal', })}` @@ -111,12 +109,12 @@ run( process.stdout.clearScreenDown(); } - log.info('Running webpack compilation...'); + log.info('Running rspack compilation...'); }); compiler.watch({}, (error) => { if (error) { - log.error('Fatal webpack error'); + log.error('Fatal rspack error'); log.error(error); process.exit(1); } diff --git a/src/core/CONVENTIONS.md b/src/core/CONVENTIONS.md index 7c3de41e5751..b58ea86e3dd6 100644 --- a/src/core/CONVENTIONS.md +++ b/src/core/CONVENTIONS.md @@ -153,7 +153,7 @@ The bulk of your plugin logic will most likely live inside _handlers_ registered #### Applications -It's important that UI code is not included in the main bundle for your plugin. Our webpack configuration supports +It's important that UI code is not included in the main bundle for your plugin. Our rspack configuration supports dynamic async imports to split out imports into a separate bundle. Every app's rendering logic and UI code should leverage this pattern. diff --git a/src/plugins/console/public/application/models/legacy_core_editor/mode/worker/index.js b/src/plugins/console/public/application/models/legacy_core_editor/mode/worker/index.js index f5b5679d918a..14c3c032ccbc 100644 --- a/src/plugins/console/public/application/models/legacy_core_editor/mode/worker/index.js +++ b/src/plugins/console/public/application/models/legacy_core_editor/mode/worker/index.js @@ -28,6 +28,7 @@ * under the License. */ +// eslint-disable-next-line import/no-unresolved -- inline loader syntax (!!file-loader!) is not understood by ESLint import resolvers import workerPath from '!!file-loader!./worker.js'; export const workerUrl = workerPath; diff --git a/src/plugins/vis_builder/tsconfig.json b/src/plugins/vis_builder/tsconfig.json index 96ab13d92713..efe798259109 100644 --- a/src/plugins/vis_builder/tsconfig.json +++ b/src/plugins/vis_builder/tsconfig.json @@ -46,8 +46,6 @@ "forceConsistentCasingInFileNames": true, // Forbid unused local variables as the rule was deprecated by ts-lint "noUnusedLocals": true, - // Provide full support for iterables in for..of, spread and destructuring when targeting ES5 or ES3. - "downlevelIteration": true, // import tslib helpers rather than inlining helpers for iteration or spreading, for instance "importHelpers": true, // adding global typings diff --git a/src/plugins/vis_type_vega/public/lib/vega.js b/src/plugins/vis_type_vega/public/lib/vega.js index 53cf01ab52a9..d6fc9a2ab067 100644 --- a/src/plugins/vis_type_vega/public/lib/vega.js +++ b/src/plugins/vis_type_vega/public/lib/vega.js @@ -30,7 +30,9 @@ /* eslint-disable import/namespace */ -// vega-lite 6.x no longer exports from /src subpath +// vega-lite 6.x uses package.json#exports (no `main`/`module` fields); the ESLint +// import resolver does not support the exports map so it cannot resolve the package root. +// eslint-disable-next-line import/no-unresolved -- vega-lite uses package.json#exports, unsupported by the ESLint resolver import { compile, version } from 'vega-lite'; import * as vega from 'vega'; import { expressionInterpreter as vegaExpressionInterpreter } from 'vega-interpreter/build/vega-interpreter.module'; diff --git a/yarn.lock b/yarn.lock index de5199064014..07f3ff0db56f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2168,15 +2168,6 @@ tunnel-agent "^0.6.0" uuid "^8.3.2" -"@cypress/webpack-preprocessor@^6.0.1": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-6.0.2.tgz#58a96aa4dbff7433dd37d24ed47e413aa3d3fabb" - integrity sha512-0+1+4iy4W9PE6R5ywBNKAZoFp8Sf//w3UJ+CKTqkcAjA29b+dtsD0iFT70DsYE0BMqUM1PO7HXFGbXllQ+bRAA== - dependencies: - bluebird "3.7.1" - debug "^4.3.4" - lodash "^4.17.20" - "@cypress/xvfb@^1.2.4": version "1.2.4" resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" @@ -2197,11 +2188,6 @@ resolved "https://registry.yarnpkg.com/@dagrejs/graphlib/-/graphlib-2.2.4.tgz#d77bfa9ff49e2307c0c6e6b8b26b5dd3c05816c4" integrity sha512-mepCf/e9+SKYy1d02/UkvSy6+6MoyXhVxP8lLDfA7BPE1X1d4dR0sZznmbM8/XVJ1GPM+Svnx7Xj6ZweByWUkw== -"@discoveryjs/json-ext@^0.5.0": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" - integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== - "@elastic/apm-rum-core@^5.14.1": version "5.14.1" resolved "https://registry.yarnpkg.com/@elastic/apm-rum-core/-/apm-rum-core-5.14.1.tgz#8f65060967c8d68498f2c520e4169ec07eb3b5bb" @@ -3465,14 +3451,6 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@jridgewell/source-map@^0.3.3": - version "0.3.11" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.11.tgz#b21835cbd36db656b857c2ad02ebd413cc13a9ba" - integrity sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5": version "1.5.5" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" @@ -3486,7 +3464,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.28": version "0.3.31" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== @@ -5360,22 +5338,6 @@ "@types/cheerio" "*" "@types/react" "*" -"@types/eslint-scope@^3.7.7": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" - integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - "@types/eslint@^7.2.13": version "7.29.0" resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.29.0.tgz#e56ddc8e542815272720bb0b4ccc2aff9c3e1c78" @@ -5670,14 +5632,6 @@ "@types/node" "*" rxjs "^6.5.1" -"@types/loader-utils@^1.1.3": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@types/loader-utils/-/loader-utils-1.1.6.tgz#41a6e6750ad1938e0498394d23459f9a62c5c73a" - integrity sha512-0U4S5kLpm3Cu9YkO46JrmujS2abL2tWsxA1SR8km6X0a1E96tfPu34zRdQSZsJ6dfRYwQpmuKmy9Mx2Od7AXag== - dependencies: - "@types/node" "*" - "@types/webpack" "^4" - "@types/lodash@4.14.165": version "4.14.165" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.165.tgz#74d55d947452e2de0742bad65270433b63a8c30f" @@ -6047,11 +6001,6 @@ resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.5.tgz#d93dd29cdcd5801d90be968073b09a6b370780e4" integrity sha512-tAe4Q+OLFOA/AMD+0lq8ovp8t3ysxAOeaScnfNdZpUxaGl51ZMDEITxkvFl1STudQ58mz6gzVGl9VhMKhwRnZQ== -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - "@types/source-map-support@^0.5.3": version "0.5.4" resolved "https://registry.yarnpkg.com/@types/source-map-support/-/source-map-support-0.5.4.tgz#574ff6a8636bc0ebae78a8014136f749b3177d58" @@ -6109,7 +6058,7 @@ dependencies: tapable "^2.3.0" -"@types/tapable@^1", "@types/tapable@^1.0.6": +"@types/tapable@^1.0.6": version "1.0.8" resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== @@ -6153,13 +6102,6 @@ resolved "https://registry.yarnpkg.com/@types/type-detect/-/type-detect-4.0.1.tgz#3b0f5ac82ea630090cbf57c57a1bf5a63a29b9b6" integrity sha512-0+S1S9Iq0oJ9w9IaBC5W/z1WsPNDUIAJG+THGmqR4vUAxUPCzIY+dApTvyGsaBUWjafTDL0Dg8Z9+iRuk3/BQA== -"@types/uglify-js@*": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.1.tgz#5e889e9e81e94245c75b6450600e1c5ea2878aea" - integrity sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ== - dependencies: - source-map "^0.6.1" - "@types/unist@*", "@types/unist@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" @@ -6207,32 +6149,6 @@ "@types/expect" "^1.20.4" "@types/node" "*" -"@types/webpack-env@^1.16.3": - version "1.16.3" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.16.3.tgz#b776327a73e561b71e7881d0cd6d34a1424db86a" - integrity sha512-9gtOPPkfyNoEqCQgx4qJKkuNm/x0R2hKR7fdl7zvTJyHnIisuE/LfvXOsYWL0o3qq6uiBnKZNNNzi3l0y/X+xw== - -"@types/webpack-sources@*": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" - integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.7.3" - -"@types/webpack@^4", "@types/webpack@^4.4.31": - version "4.41.32" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.32.tgz#a7bab03b72904070162b2f169415492209e94212" - integrity sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg== - dependencies: - "@types/node" "*" - "@types/tapable" "^1" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - anymatch "^3.0.0" - source-map "^0.6.0" - "@types/write-pkg@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@types/write-pkg/-/write-pkg-3.1.0.tgz#f58767f4fb9a6a3ad8e95d3e9cd1f2d026ceab26" @@ -6436,159 +6352,11 @@ safe-regex2 "^5.0.0" strip-ansi "^7.1.0" -"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" - integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== - dependencies: - "@webassemblyjs/helper-numbers" "1.13.2" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - -"@webassemblyjs/floating-point-hex-parser@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" - integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== - -"@webassemblyjs/helper-api-error@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" - integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== - -"@webassemblyjs/helper-buffer@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" - integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== - -"@webassemblyjs/helper-numbers@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" - integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.13.2" - "@webassemblyjs/helper-api-error" "1.13.2" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" - integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== - -"@webassemblyjs/helper-wasm-section@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" - integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/wasm-gen" "1.14.1" - -"@webassemblyjs/ieee754@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" - integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" - integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" - integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== - -"@webassemblyjs/wasm-edit@^1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" - integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/helper-wasm-section" "1.14.1" - "@webassemblyjs/wasm-gen" "1.14.1" - "@webassemblyjs/wasm-opt" "1.14.1" - "@webassemblyjs/wasm-parser" "1.14.1" - "@webassemblyjs/wast-printer" "1.14.1" - -"@webassemblyjs/wasm-gen@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" - integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/ieee754" "1.13.2" - "@webassemblyjs/leb128" "1.13.2" - "@webassemblyjs/utf8" "1.13.2" - -"@webassemblyjs/wasm-opt@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" - integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/wasm-gen" "1.14.1" - "@webassemblyjs/wasm-parser" "1.14.1" - -"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" - integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-api-error" "1.13.2" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/ieee754" "1.13.2" - "@webassemblyjs/leb128" "1.13.2" - "@webassemblyjs/utf8" "1.13.2" - -"@webassemblyjs/wast-printer@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" - integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@xtuc/long" "4.2.2" - -"@webpack-cli/configtest@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.1.tgz#9f53b1b7946a6efc2a749095a4f450e2932e8356" - integrity sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg== - -"@webpack-cli/info@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.1.tgz#2360ea1710cbbb97ff156a3f0f24556e0fc1ebea" - integrity sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA== - dependencies: - envinfo "^7.7.3" - -"@webpack-cli/serve@^1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.1.tgz#0de2875ac31b46b6c5bb1ae0a7d7f0ba5678dffe" - integrity sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw== - "@xobotyi/scrollbar-width@^1.9.5": version "1.9.5" resolved "https://registry.yarnpkg.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d" integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ== -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - "@xyflow/react@^12.8.2": version "12.8.2" resolved "https://registry.yarnpkg.com/@xyflow/react/-/react-12.8.2.tgz#3e0818699c8d29407bd6f77d88570d38ef513b46" @@ -6669,11 +6437,6 @@ acorn-import-attributes@^1.9.5: resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== -acorn-import-phases@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz#16eb850ba99a056cb7cbfe872ffb8972e18c8bd7" - integrity sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ== - acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -6904,7 +6667,7 @@ any-observable@^0.3.0: resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== -anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: +anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -6926,11 +6689,6 @@ append-transform@^2.0.0: dependencies: default-require-extensions "^3.0.0" -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - arch@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" @@ -7053,23 +6811,11 @@ array-includes@^3.1.3, array-includes@^3.1.4: get-intrinsic "^1.1.1" is-string "^1.0.7" -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - array.prototype.every@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/array.prototype.every/-/array.prototype.every-1.1.3.tgz#31f01b48e1160bc4b49ecab246bf7f765c6686f9" @@ -7339,13 +7085,6 @@ babel-jest@^28.1.3: graceful-fs "^4.2.9" slash "^3.0.0" -babel-loader@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-10.0.0.tgz#b9743714c0e1e084b3e4adef3cd5faee33089977" - integrity sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA== - dependencies: - find-up "^5.0.0" - babel-plugin-add-module-exports@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz#6caa4ddbe1f578c6a5264d4d3e6c8a2720a7ca2b" @@ -7658,11 +7397,6 @@ bluebird@3.5.5: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== -bluebird@3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" - integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== - bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -7925,30 +7659,6 @@ bytes@^3.1.2, bytes@~3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -cacache@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" - integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== - dependencies: - chownr "^1.1.2" - figgy-pudding "^3.5.1" - fs-minipass "^2.0.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - minipass "^3.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - p-map "^3.0.0" - promise-inflight "^1.0.1" - rimraf "^2.7.1" - ssri "^7.0.0" - unique-filename "^1.1.1" - cacheable-lookup@^5.0.3: version "5.0.4" resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" @@ -8205,7 +7915,7 @@ chokidar@^4.0.0: dependencies: readdirp "^4.0.1" -chownr@^1.1.1, chownr@^1.1.2: +chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -8220,11 +7930,6 @@ chroma-js@^2.1.0, chroma-js@^2.4.2: resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-2.4.2.tgz#dffc214ed0c11fa8eefca2c36651d8e57cbfb2b0" integrity sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A== -chrome-trace-event@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" - integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== - chromedriver@^121.0.1: version "121.0.2" resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-121.0.2.tgz#208909a61e9d510913107ea6faf34bcdd72cdced" @@ -8285,14 +7990,6 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -clean-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz#a99d8ec34c1c628a4541567aa7b457446460c62b" - integrity sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A== - dependencies: - "@types/webpack" "^4.4.31" - del "^4.1.1" - cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -8508,7 +8205,7 @@ colord@^2.9.2: resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== -colorette@^2.0.14, colorette@^2.0.16: +colorette@^2.0.16: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== @@ -8530,12 +8227,12 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -commander@2, commander@^2.19.0, commander@^2.20.0: +commander@2, commander@^2.19.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@7, commander@^7.0.0: +commander@7: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== @@ -8676,18 +8373,6 @@ copy-anything@^2.0.1: dependencies: is-what "^3.14.1" -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - copy-to-clipboard@^3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" @@ -9543,19 +9228,6 @@ del-cli@^3.0.1: del "^5.1.0" meow "^6.1.1" -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - del@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" @@ -10116,7 +9788,7 @@ enhanced-resolve@^0.9.1: memory-fs "^0.2.0" tapable "^0.1.8" -enhanced-resolve@^5.17.4, enhanced-resolve@^5.19.0: +enhanced-resolve@^5.19.0: version "5.19.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz#6687446a15e969eaa63c2fa2694510e17ae6d97c" integrity sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg== @@ -10162,11 +9834,6 @@ envinfo@7.21.0: resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.21.0.tgz#04a251be79f92548541f37d13c8b6f22940c3bae" integrity sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow== -envinfo@^7.7.3: - version "7.19.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.19.0.tgz#b4b4507a27e9900b0175f556167fd3a95f8623f1" - integrity sha512-DoSM9VyG6O3vqBf+p3Gjgr/Q52HYBBtO3v+4koAxt1MnWr+zEnxE+nke/yXS4lt2P4SYCHQ4V3f1i88LQVOpAw== - enzyme-shallow-equal@^1.0.0, enzyme-shallow-equal@^1.0.1: version "1.0.7" resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.7.tgz#4e3aa678022387a68e6c47aff200587851885b5e" @@ -10319,11 +9986,6 @@ es-get-iterator@^1.1.1: is-string "^1.0.5" isarray "^2.0.5" -es-module-lexer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.0.0.tgz#f657cd7a9448dcdda9c070a3cb75e5dc1e85f5b1" - integrity sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw== - es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" @@ -10805,7 +10467,7 @@ eventemitter3@^4.0.4: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0, events@^3.2.0, events@^3.3.0: +events@^3.0.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -11151,11 +10813,6 @@ fetch-mock@^7.3.9: path-to-regexp "^2.2.1" whatwg-url "^6.5.0" -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -11272,7 +10929,7 @@ find-cache-dir@^2.0.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-cache-dir@^3.2.0, find-cache-dir@^3.3.1: +find-cache-dir@^3.2.0: version "3.3.2" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== @@ -11464,13 +11121,6 @@ fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - fs-mkdirp-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" @@ -11484,16 +11134,6 @@ fs-readdir-recursive@^1.1.0: resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -11702,7 +11342,7 @@ glob-stream@^6.1.0: to-absolute-glob "^2.0.0" unique-stream "^2.0.2" -glob-to-regexp@^0.4.0, glob-to-regexp@^0.4.1: +glob-to-regexp@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== @@ -11716,7 +11356,7 @@ glob@^13.0.0: minipass "^7.1.2" path-scurry "^2.0.0" -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7, glob@^7.2.0: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7, glob@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -11817,17 +11457,6 @@ globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - globjoin@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" @@ -11855,7 +11484,7 @@ got@^11.8.2: p-cancelable "^2.0.0" responselike "^2.0.0" -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -12361,11 +11990,6 @@ if-async@^3.7.4: resolved "https://registry.yarnpkg.com/if-async/-/if-async-3.7.4.tgz#55868deb0093d3c67bf7166e745353fb9bcb21a2" integrity sha1-VYaN6wCT08Z79xZudFNT+5vLIaI= -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - ignore@^5.0.5, ignore@^5.1.1, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" @@ -12449,11 +12073,6 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -12527,11 +12146,6 @@ interpret@^1.4.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== - intl-format-cache@^2.0.5, intl-format-cache@^2.1.0: version "2.2.9" resolved "https://registry.yarnpkg.com/intl-format-cache/-/intl-format-cache-2.2.9.tgz#fb560de20c549cda20b569cf1ffb6dc62b5b93b4" @@ -12823,25 +12437,11 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-cwd@^2.0.0, is-path-cwd@^2.2.0: +is-path-cwd@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - is-path-inside@^3.0.1, is-path-inside@^3.0.2, is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" @@ -13805,15 +13405,7 @@ jest-watcher@^28.1.3: jest-util "^28.1.3" string-length "^4.0.1" -jest-worker@^25.4.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== - dependencies: - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest-worker@^27.4.5, jest-worker@^27.5.1: +jest-worker@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== @@ -13991,7 +13583,7 @@ json-buffer@3.0.1: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: +json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -14443,11 +14035,6 @@ load-json-file@^6.2.0: strip-bom "^4.0.0" type-fest "^0.6.0" -loader-runner@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.1.tgz#6c76ed29b0ccce9af379208299f07f876de737e3" - integrity sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q== - loader-utils@^1.2.3, loader-utils@^2.0.0, loader-utils@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" @@ -14592,7 +14179,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@^4.0.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.18.0, lodash@^4.7.0, lodash@~4.18.1: +lodash@^4.0.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.18.0, lodash@^4.7.0, lodash@~4.18.1: version "4.18.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.1.tgz#ff2b66c1f6326d59513de2407bf881439812771c" integrity sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q== @@ -15018,7 +14605,7 @@ mime-db@1.52.0, mime-db@^1.52.0, mime-db@^1.54.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== -mime-types@^2.1.27, mime-types@^2.1.35, mime-types@~2.1.19, mime-types@~2.1.34: +mime-types@^2.1.35, mime-types@~2.1.19, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -15137,34 +14724,6 @@ minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1. resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" - integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== - dependencies: - yallist "^4.0.0" - minipass@^4.2.4: version "4.2.8" resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" @@ -15286,18 +14845,6 @@ moo@^0.5.0: resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - ms-chromium-edge-driver@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/ms-chromium-edge-driver/-/ms-chromium-edge-driver-0.4.3.tgz#808723efaf24da086ebc2a2feb0975162164d2ff" @@ -15752,7 +15299,7 @@ nyc@^15.1.0: test-exclude "^6.0.0" yargs "^15.0.2" -object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -15996,7 +15543,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -16261,11 +15808,6 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -16356,7 +15898,7 @@ picomatch@^4.0.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.4.tgz#fd6f5e00a143086e074dffe4c924b8fb293b0589" integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A== -pify@^2.0.0, pify@^2.2.0: +pify@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -16366,18 +15908,6 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - pino-abstract-transport@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz#97f9f2631931e242da531b5c66d3079c12c9d1b5" @@ -16690,11 +16220,6 @@ progress@^2.0.3: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - promise-polyfill@^8.1.3: version "8.2.3" resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.2.3.tgz#2edc7e4b81aff781c88a0d577e5fe9da822107c6" @@ -17365,19 +16890,6 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@^2.3.8, readable-stream@~2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - "readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0, readable-stream@^3.6.2: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" @@ -17397,6 +16909,19 @@ read-pkg@^5.2.0: isarray "0.0.1" string_decoder "~0.10.x" +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@^2.3.8, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readable-stream@^4.0.0: version "4.7.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.7.0.tgz#cedbd8a1146c13dfff8dab14068028d58c15ac91" @@ -17442,13 +16967,6 @@ real-require@^0.2.0: resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== -rechoir@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" - integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== - dependencies: - resolve "^1.9.0" - redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -17786,7 +17304,7 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.8, resolve@^1.5.0, resolve@^1.7.1, resolve@^1.9.0, resolve@~1.22.1, resolve@~1.22.2: +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.8, resolve@^1.5.0, resolve@^1.7.1, resolve@~1.22.1, resolve@~1.22.2: version "1.22.11" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== @@ -17869,7 +17387,7 @@ rfdc@^1.3.0: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== -rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@^2.6.2, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -17952,13 +17470,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - rw@1: version "1.3.3" resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" @@ -18188,7 +17699,7 @@ scheduler@^0.23.2: dependencies: loose-envify "^1.1.0" -schema-utils@^2.5.0, schema-utils@^2.6.6, schema-utils@^2.7.0: +schema-utils@^2.5.0, schema-utils@^2.7.0: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -18206,7 +17717,7 @@ schema-utils@^3.0.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0, schema-utils@^4.2.0, schema-utils@^4.3.0, schema-utils@^4.3.3: +schema-utils@^4.0.0, schema-utils@^4.2.0: version "4.3.3" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.3.tgz#5b1850912fa31df90716963d45d9121fdfc09f46" integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== @@ -18264,7 +17775,7 @@ send@^1.1.0, send@^1.2.0: range-parser "^1.2.1" statuses "^2.0.1" -serialize-javascript@^4.0.0, serialize-javascript@^6.0.2, serialize-javascript@^7.0.3: +serialize-javascript@^6.0.2, serialize-javascript@^7.0.3: version "7.0.5" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-7.0.5.tgz#c798cc0552ffbb08981914a42a8756e339d0d5b1" integrity sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw== @@ -18579,11 +18090,6 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" @@ -18597,7 +18103,7 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.16, source-map-support@^0.5.19, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: +source-map-support@^0.5.16, source-map-support@^0.5.19, source-map-support@^0.5.6: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -18620,7 +18126,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3, source-map@^0.7.6: +source-map@^0.7.6: version "0.7.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.6.tgz#a3658ab87e5b6429c8a1f3ba0083d4c61ca3ef02" integrity sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ== @@ -18745,14 +18251,6 @@ sshpk@^1.18.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.1.tgz#33e44f896a967158e3c63468e47ec46613b95b5f" - integrity sha512-w+daCzXN89PseTL99MkA+fxJEcU3wfaE/ah0i0lnOlpG1CYLJ2ZjzEry68YBKfLs4JfoTShrTEsJkAZuNZ/stw== - dependencies: - figgy-pudding "^3.5.1" - minipass "^3.1.1" - stack-generator@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.5.tgz#fb00e5b4ee97de603e0773ea78ce944d81596c36" @@ -19420,51 +18918,6 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser-webpack-plugin@^2.1.2: - version "2.3.8" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" - integrity sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== - dependencies: - cacache "^13.0.1" - find-cache-dir "^3.3.1" - jest-worker "^25.4.0" - p-limit "^2.3.0" - schema-utils "^2.6.6" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.6.12" - webpack-sources "^1.4.3" - -terser-webpack-plugin@^5.3.16: - version "5.3.16" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz#741e448cc3f93d8026ebe4f7ef9e4afacfd56330" - integrity sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q== - dependencies: - "@jridgewell/trace-mapping" "^0.3.25" - jest-worker "^27.4.5" - schema-utils "^4.3.0" - serialize-javascript "^6.0.2" - terser "^5.31.1" - -terser@^4.6.12: - version "4.8.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" - integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -terser@^5.31.1: - version "5.46.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.46.0.tgz#1b81e560d584bbdd74a8ede87b4d9477b0ff9695" - integrity sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.15.0" - commander "^2.20.0" - source-map-support "~0.5.20" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -20110,20 +19563,6 @@ unified@^9.0.0, unified@^9.2.0: trough "^1.0.0" vfile "^4.0.0" -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - unique-stream@^2.0.2: version "2.3.1" resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" @@ -20899,14 +20338,6 @@ walker@^1.0.7, walker@^1.0.8: dependencies: makeerror "1.0.12" -watchpack@^2.4.4: - version "2.5.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.1.tgz#dd38b601f669e0cbf567cb802e75cead82cde102" - integrity sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -20944,77 +20375,6 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-cli@^4.9.2: - version "4.9.2" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.2.tgz#77c1adaea020c3f9e2db8aad8ea78d235c83659d" - integrity sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ== - dependencies: - "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^1.1.1" - "@webpack-cli/info" "^1.4.1" - "@webpack-cli/serve" "^1.6.1" - colorette "^2.0.14" - commander "^7.0.0" - execa "^5.0.0" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^2.2.0" - rechoir "^0.7.0" - webpack-merge "^5.7.3" - -webpack-merge@^5.10.0, webpack-merge@^5.7.3: - version "5.10.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" - integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== - dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.0" - -webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack-sources@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.3.tgz#d4bf7f9909675d7a070ff14d0ef2a4f3c982c723" - integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== - -webpack@^5.104.1: - version "5.104.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.104.1.tgz#94bd41eb5dbf06e93be165ba8be41b8260d4fb1a" - integrity sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA== - dependencies: - "@types/eslint-scope" "^3.7.7" - "@types/estree" "^1.0.8" - "@types/json-schema" "^7.0.15" - "@webassemblyjs/ast" "^1.14.1" - "@webassemblyjs/wasm-edit" "^1.14.1" - "@webassemblyjs/wasm-parser" "^1.14.1" - acorn "^8.15.0" - acorn-import-phases "^1.0.3" - browserslist "^4.28.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.4" - es-module-lexer "^2.0.0" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.3.1" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^4.3.3" - tapable "^2.3.0" - terser-webpack-plugin "^5.3.16" - watchpack "^2.4.4" - webpack-sources "^3.3.3" - whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -21120,11 +20480,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wildcard@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" - integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== - word-wrap@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" From 209ac672c7db83feecf566827a4f2c585a83d0fa Mon Sep 17 00:00:00 2001 From: yuboluo Date: Tue, 30 Jun 2026 18:22:11 +0800 Subject: [PATCH 39/88] fix migration issue (#12302) Signed-off-by: yubonluo --- .../utils/update_saved_dashboard.test.ts | 72 +++++++++++++++++++ .../utils/update_saved_dashboard.ts | 2 +- 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 src/plugins/dashboard/public/application/utils/update_saved_dashboard.test.ts diff --git a/src/plugins/dashboard/public/application/utils/update_saved_dashboard.test.ts b/src/plugins/dashboard/public/application/utils/update_saved_dashboard.test.ts new file mode 100644 index 000000000000..b3b9cb3c030e --- /dev/null +++ b/src/plugins/dashboard/public/application/utils/update_saved_dashboard.test.ts @@ -0,0 +1,72 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { updateSavedDashboard } from './update_saved_dashboard'; +import { SavedObjectDashboard } from '../../saved_dashboards'; +import { DashboardAppState } from '../../types'; +import { Dashboard } from '../../dashboard'; + +const createServices = () => { + const savedDashboard = ({ + searchSource: { + setField: jest.fn(), + }, + } as unknown) as SavedObjectDashboard; + + const timeFilter = { + getTime: jest.fn(() => ({ from: 'now-15m', to: 'now' })), + getRefreshInterval: jest.fn(() => ({ pause: true, value: 0 })), + } as any; + + const dashboard = ({ + setState: jest.fn(), + } as unknown) as Dashboard; + + const baseAppState = ({ + title: 'My dashboard', + description: '', + timeRestore: false, + panels: [], + options: {}, + query: { query: '', language: 'kuery' }, + filters: [], + } as unknown) as DashboardAppState; + + return { savedDashboard, timeFilter, dashboard, baseAppState }; +}; + +describe('updateSavedDashboard - variablesJSON', () => { + it('leaves variablesJSON undefined when there are no variables', () => { + const { savedDashboard, timeFilter, dashboard, baseAppState } = createServices(); + + updateSavedDashboard(savedDashboard, { ...baseAppState, variables: [] }, timeFilter, dashboard); + + // Must stay undefined (not '') so the field is omitted from the full-document overwrite + // and never written to indices that lack a `variablesJSON` strict mapping. See issue #12287. + expect(savedDashboard.variablesJSON).toBeUndefined(); + }); + + it('leaves variablesJSON undefined when variables is not provided', () => { + const { savedDashboard, timeFilter, dashboard, baseAppState } = createServices(); + + updateSavedDashboard(savedDashboard, { ...baseAppState }, timeFilter, dashboard); + + expect(savedDashboard.variablesJSON).toBeUndefined(); + }); + + it('serializes variablesJSON when variables exist', () => { + const { savedDashboard, timeFilter, dashboard, baseAppState } = createServices(); + const variables = [{ name: 'foo', type: 'custom', value: 'bar' }]; + + updateSavedDashboard( + savedDashboard, + ({ ...baseAppState, variables } as unknown) as DashboardAppState, + timeFilter, + dashboard + ); + + expect(savedDashboard.variablesJSON).toBe(JSON.stringify({ variables })); + }); +}); diff --git a/src/plugins/dashboard/public/application/utils/update_saved_dashboard.ts b/src/plugins/dashboard/public/application/utils/update_saved_dashboard.ts index 483262032e36..2e25eca343d7 100644 --- a/src/plugins/dashboard/public/application/utils/update_saved_dashboard.ts +++ b/src/plugins/dashboard/public/application/utils/update_saved_dashboard.ts @@ -50,7 +50,7 @@ export function updateSavedDashboard( savedDashboard.variablesJSON = appState.variables && appState.variables.length > 0 ? JSON.stringify({ variables: appState.variables }) - : ''; + : undefined; const timeFrom = savedDashboard.timeRestore ? FilterUtils.convertTimeToUTCString(timeFilter.getTime().from) From 6e8a0dbc0538cca587f7ccb2f9eeff1fcd54c45d Mon Sep 17 00:00:00 2001 From: Suchit Sahoo <38322563+LDrago27@users.noreply.github.com> Date: Tue, 30 Jun 2026 15:46:05 -0700 Subject: [PATCH 40/88] Fix creating Index patterns for 6.x ES versions (#12307) * docs: add implementation plan for ES 6.8 resolve_index fix Signed-off-by: Suchit Sahoo * feat(core): expose getClientTransport on public OpenSearchServiceStart Signed-off-by: Suchit Sahoo * feat(data_source): forward custom Transport into modern client pool Signed-off-by: Suchit Sahoo * feat(data_source): apply core's registered Transport to data-source clients on start Signed-off-by: Suchit Sahoo * fix(index_pattern_management): resolve_index uses modern data source client for ES 6.x compatibility Signed-off-by: Suchit Sahoo * test(data_source): cover custom Transport forwarding in DataSourceService Signed-off-by: Suchit Sahoo * Address failures of Transport layer Injection into datasources Signed-off-by: Suchit Sahoo * chore: remove implementation plan and sidebar tracking file Signed-off-by: Suchit Sahoo * chore: restore docs/_sidebar.md to main state Signed-off-by: Suchit Sahoo * fix: remove debug console.log statements from production code Remove all [DBG es68] console.log statements that leaked data source IDs, query strings, Transport class names, and full response bodies to stdout. Signed-off-by: Suchit Sahoo --------- Signed-off-by: Suchit Sahoo --- src/core/server/opensearch/types.ts | 20 +-- src/core/server/plugins/plugin_context.ts | 1 + src/core/server/server.api.md | 4 + .../server/client/configure_client.test.ts | 29 +++- .../server/client/configure_client.ts | 13 +- .../server/data_source_service.test.ts | 43 ++++++ .../data_source/server/data_source_service.ts | 22 ++- src/plugins/data_source/server/plugin.ts | 6 + src/plugins/data_source/server/types.ts | 4 + .../server/routes/resolve_index.test.ts | 126 ++++++++++++++++++ .../server/routes/resolve_index.ts | 19 +-- 11 files changed, 266 insertions(+), 21 deletions(-) create mode 100644 src/plugins/index_pattern_management/server/routes/resolve_index.test.ts diff --git a/src/core/server/opensearch/types.ts b/src/core/server/opensearch/types.ts index eaf5ed2aee3f..90224f559776 100644 --- a/src/core/server/opensearch/types.ts +++ b/src/core/server/opensearch/types.ts @@ -208,20 +208,24 @@ export interface OpenSearchServiceStart { */ readonly client: ILegacyClusterClient; }; -} -/** - * @internal - */ -export interface InternalOpenSearchServiceStart extends OpenSearchServiceStart { /** - * Returns the custom Transport class registered via `registerClientTransport`, if any. - * Useful for plugins that create their own OpenSearch clients and need to apply - * the same Transport extension. + * Returns the custom Transport class registered via + * {@link OpenSearchServiceSetup.registerClientTransport}, if any. + * Plugins that create their own OpenSearch clients (e.g. the data source plugin's + * per-connection client pool) can apply the same Transport extension so that + * request/response interception (such as legacy backend compatibility) is consistent + * with core's own client. Returns `undefined` when no Transport has been registered. */ getClientTransport?: () => typeof Transport | undefined; } +/** + * @internal + */ +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface InternalOpenSearchServiceStart extends OpenSearchServiceStart {} + /** @public */ export interface OpenSearchStatusMeta { warningNodes: NodesVersionCompatibility['warningNodes']; diff --git a/src/core/server/plugins/plugin_context.ts b/src/core/server/plugins/plugin_context.ts index d2a42f6ba12e..9bff3767458d 100644 --- a/src/core/server/plugins/plugin_context.ts +++ b/src/core/server/plugins/plugin_context.ts @@ -258,6 +258,7 @@ export function createPluginStartContext( client: deps.opensearch.client, createClient: deps.opensearch.createClient, legacy: deps.opensearch.legacy, + getClientTransport: deps.opensearch.getClientTransport, }, http: { auth: deps.http.auth, diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index 4cfe9f477e74..89e133286e98 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -155,6 +155,7 @@ import { TasksCancelParams } from 'elasticsearch'; import { TasksGetParams } from 'elasticsearch'; import { TasksListParams } from 'elasticsearch'; import { TermvectorsParams } from 'elasticsearch'; +import { Transport } from '@opensearch-project/opensearch'; import { TransportRequestOptions } from '@opensearch-project/opensearch/lib/Transport'; import { TransportRequestParams } from '@opensearch-project/opensearch/lib/Transport'; import { TransportRequestPromise } from '@opensearch-project/opensearch/lib/Transport'; @@ -1528,18 +1529,21 @@ export const opensearchDashboardsResponseFactory: { // @public (undocumented) export interface OpenSearchServiceSetup { + hasClientTransport: () => boolean; // @deprecated (undocumented) legacy: { readonly config$: Observable; readonly createClient: (type: string, clientConfig?: Partial) => ILegacyCustomClusterClient; readonly client: ILegacyClusterClient; }; + registerClientTransport: (TransportClass: typeof Transport) => void; } // @public (undocumented) export interface OpenSearchServiceStart { readonly client: IClusterClient; readonly createClient: (type: string, clientConfig?: Partial) => ICustomClusterClient; + getClientTransport?: () => typeof Transport | undefined; // @deprecated (undocumented) legacy: { readonly config$: Observable; diff --git a/src/plugins/data_source/server/client/configure_client.test.ts b/src/plugins/data_source/server/client/configure_client.test.ts index 3cc89a5ef6e3..5207f53088a5 100644 --- a/src/plugins/data_source/server/client/configure_client.test.ts +++ b/src/plugins/data_source/server/client/configure_client.test.ts @@ -21,7 +21,7 @@ import { } from './configure_client.test.mocks'; import { OpenSearchClientPool, OpenSearchClientPoolSetup } from './client_pool'; import { configureClient } from './configure_client'; -import { ClientOptions } from '@opensearch-project/opensearch'; +import { ClientOptions, Transport } from '@opensearch-project/opensearch'; // eslint-disable-next-line @osd/eslint/no-restricted-paths import { opensearchClientMock } from '../../../../core/server/opensearch/client/mocks'; import { cryptographyServiceSetupMock } from '../cryptography_service.mocks'; @@ -137,6 +137,33 @@ describe('configureClient', () => { authRegistryCredentialProviderMock.mockReset(); }); + test('configureClient passes customTransport to the Client constructor when provided', async () => { + class FakeTransport {} + parseClientOptionsMock.mockReturnValue(clientOptions); + savedObjectsMock.get.mockReset(); + savedObjectsMock.get.mockResolvedValueOnce({ + id: DATA_SOURCE_ID, + type: DATA_SOURCE_SAVED_OBJECT_TYPE, + attributes: { + ...dataSourceAttr, + auth: { type: AuthType.NoAuth, credentials: undefined }, + }, + references: [], + }); + + await configureClient( + { + ...dataSourceClientParams, + customTransport: (FakeTransport as unknown) as typeof Transport, + }, + clientPoolSetup, + config, + logger + ); + + expect(ClientMock).toHaveBeenCalledWith(expect.objectContaining({ Transport: FakeTransport })); + }); + test('configure client with auth.type == no_auth, will call new Client() to create client', async () => { savedObjectsMock.get.mockReset().mockResolvedValueOnce({ id: DATA_SOURCE_ID, diff --git a/src/plugins/data_source/server/client/configure_client.ts b/src/plugins/data_source/server/client/configure_client.ts index 2c35c324df7d..6e6547e1ab5f 100644 --- a/src/plugins/data_source/server/client/configure_client.ts +++ b/src/plugins/data_source/server/client/configure_client.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { Client, ClientOptions } from '@opensearch-project/opensearch'; +import { Client, ClientOptions, Transport } from '@opensearch-project/opensearch'; import { Client as LegacyClient } from 'elasticsearch'; import { AwsSigv4Signer } from '@opensearch-project/opensearch/aws'; import { Logger, OpenSearchDashboardsRequest } from '../../../../../src/core/server'; @@ -41,6 +41,7 @@ export const configureClient = async ( customApiSchemaRegistryPromise, request, authRegistry, + customTransport, }: DataSourceClientParams, openSearchClientPoolSetup: OpenSearchClientPoolSetup, config: DataSourcePluginConfigType, @@ -110,7 +111,8 @@ export const configureClient = async ( dataSourceId, request, clientParams, - requireDecryption + requireDecryption, + customTransport ); } catch (error: any) { logger.debug( @@ -146,7 +148,8 @@ const getQueryClient = async ( dataSourceId?: string, request?: OpenSearchDashboardsRequest, clientParams?: ClientParameters, - requireDecryption: boolean = true + requireDecryption: boolean = true, + customTransport?: typeof Transport ): Promise => { let credential; let cacheKeySuffix; @@ -155,6 +158,10 @@ const getQueryClient = async ( endpoint, } = dataSourceAttr; const clientOptions = parseClientOptions(config, endpoint, registeredSchema); + if (customTransport) { + // The Transport applies to the root client; children created via .child() inherit it. + clientOptions.Transport = customTransport; + } if (clientParams !== undefined) { credential = clientParams.credentials; diff --git a/src/plugins/data_source/server/data_source_service.test.ts b/src/plugins/data_source/server/data_source_service.test.ts index e91594078521..8761537bf571 100644 --- a/src/plugins/data_source/server/data_source_service.test.ts +++ b/src/plugins/data_source/server/data_source_service.test.ts @@ -4,9 +4,16 @@ */ import { duration } from 'moment'; +import { Transport } from '@opensearch-project/opensearch'; import { loggingSystemMock } from '../../../core/server/mocks'; import { DataSourcePluginConfigType } from '../config'; import { DataSourceService } from './data_source_service'; +import { configureClient } from './client/configure_client'; +import { DataSourceClientParams } from './types'; + +jest.mock('./client/configure_client'); + +const configureClientMock = configureClient as jest.Mock; const logger = loggingSystemMock.create(); @@ -41,4 +48,40 @@ describe('Data Source Service', () => { expect(setup).toHaveProperty('getDataSourceLegacyClient'); }); }); + + describe('setCustomTransport()', () => { + const clientParams = ({ + dataSourceId: 'test-data-source-id', + } as unknown) as DataSourceClientParams; + + test('forwards the registered custom Transport to configureClient', async () => { + class FakeTransport {} + const fakeTransport = (FakeTransport as unknown) as typeof Transport; + + const { getDataSourceClient } = await service.setup(config); + service.setCustomTransport(fakeTransport); + + await getDataSourceClient(clientParams); + + expect(configureClientMock).toHaveBeenCalledWith( + expect.objectContaining({ customTransport: fakeTransport }), + expect.anything(), + expect.anything(), + expect.anything() + ); + }); + + test('forwards undefined customTransport when no Transport is registered', async () => { + const { getDataSourceClient } = await service.setup(config); + + await getDataSourceClient(clientParams); + + expect(configureClientMock).toHaveBeenCalledWith( + expect.objectContaining({ customTransport: undefined }), + expect.anything(), + expect.anything(), + expect.anything() + ); + }); + }); }); diff --git a/src/plugins/data_source/server/data_source_service.ts b/src/plugins/data_source/server/data_source_service.ts index 36a8d2a5ce5f..d9c407595918 100644 --- a/src/plugins/data_source/server/data_source_service.ts +++ b/src/plugins/data_source/server/data_source_service.ts @@ -3,6 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +import { Transport } from '@opensearch-project/opensearch'; import { LegacyCallAPIOptions, Logger, OpenSearchClient } from '../../../../src/core/server'; import { DataSourcePluginConfigType } from '../config'; import { OpenSearchClientPool } from './client'; @@ -26,6 +27,7 @@ export class DataSourceService { private readonly openSearchClientPool: OpenSearchClientPool; private readonly legacyClientPool: OpenSearchClientPool; private readonly legacyLogger: Logger; + private customTransport?: typeof Transport; constructor(private logger: Logger) { this.legacyLogger = logger.get('legacy'); @@ -33,6 +35,19 @@ export class DataSourceService { this.legacyClientPool = new OpenSearchClientPool(this.legacyLogger); } + /** + * Register a custom Transport class (e.g. legacy backend compatibility) to apply to + * modern data-source clients. Called from the plugin's start() once core's registered + * transport is available. No-op when undefined (e.g. backendCompatibility disabled). + * + * MUST be called exactly once during start(), before any data-source client is + * requested. The Transport is not part of the client-pool cache key, so root clients + * pooled before this is set would not pick up a later change. + */ + public setCustomTransport(transport?: typeof Transport) { + this.customTransport = transport; + } + async setup(config: DataSourcePluginConfigType): Promise { const opensearchClientPoolSetup = this.openSearchClientPool.setup(config); const legacyClientPoolSetup = this.legacyClientPool.setup(config); @@ -40,7 +55,12 @@ export class DataSourceService { const getDataSourceClient = async ( params: DataSourceClientParams ): Promise => { - return configureClient(params, opensearchClientPoolSetup, config, this.logger); + return configureClient( + { ...params, customTransport: this.customTransport }, + opensearchClientPoolSetup, + config, + this.logger + ); }; const getDataSourceLegacyClient = (params: DataSourceClientParams) => { diff --git a/src/plugins/data_source/server/plugin.ts b/src/plugins/data_source/server/plugin.ts index 48b501c098eb..ae8936a0100e 100644 --- a/src/plugins/data_source/server/plugin.ts +++ b/src/plugins/data_source/server/plugin.ts @@ -190,6 +190,12 @@ export class DataSourcePlugin implements Plugin this.authMethodsRegistry, getCustomApiSchemaRegistry: () => this.customApiSchemaRegistry, diff --git a/src/plugins/data_source/server/types.ts b/src/plugins/data_source/server/types.ts index 4a3ada37b4b7..f05dd2c2599c 100644 --- a/src/plugins/data_source/server/types.ts +++ b/src/plugins/data_source/server/types.ts @@ -3,6 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +import { Transport } from '@opensearch-project/opensearch'; import { ISavedObjectsRepository, LegacyCallAPIOptions, @@ -45,6 +46,9 @@ export interface DataSourceClientParams { request?: OpenSearchDashboardsRequest; // To retrieve the credentials provider for the authentication method from the registry in order to return the client. authRegistry?: IAuthenticationMethodRegistry; + // Optional custom Transport class (e.g. legacy backend compatibility) to apply to the + // modern client so data-source connections get the same interception as core's client. + customTransport?: typeof Transport; } export interface DataSourceCredentialsProviderOptions { diff --git a/src/plugins/index_pattern_management/server/routes/resolve_index.test.ts b/src/plugins/index_pattern_management/server/routes/resolve_index.test.ts new file mode 100644 index 000000000000..016983f53fe7 --- /dev/null +++ b/src/plugins/index_pattern_management/server/routes/resolve_index.test.ts @@ -0,0 +1,126 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { registerResolveIndexRoute } from './resolve_index'; + +type Handler = (context: any, req: any, res: any) => Promise; + +const setup = () => { + let handler: Handler = async () => undefined; + const router = { + get: jest.fn((_config: any, h: Handler) => { + handler = h; + }), + }; + registerResolveIndexRoute(router as any); + return { router, getHandler: () => handler }; +}; + +const resFactory = () => ({ + ok: jest.fn((v: any) => ({ ok: v })), + customError: jest.fn((v: any) => ({ error: v })), +}); + +describe('registerResolveIndexRoute', () => { + it('uses the modern data source client transport when data_source is provided', async () => { + const { getHandler } = setup(); + const transportRequest = jest.fn().mockResolvedValue({ body: { indices: [] } }); + const getClient = jest.fn().mockResolvedValue({ transport: { request: transportRequest } }); + + const context = { + core: { opensearch: { client: { asCurrentUser: { transport: { request: jest.fn() } } } } }, + dataSource: { opensearch: { getClient } }, + }; + const req = { params: { query: '*' }, query: { data_source: 'ds-1' } }; + const res = resFactory(); + + await getHandler()(context, req, res); + + expect(getClient).toHaveBeenCalledWith('ds-1'); + expect(transportRequest).toHaveBeenCalledWith( + expect.objectContaining({ method: 'GET', path: expect.stringContaining('/_resolve/index/') }) + ); + expect(res.ok).toHaveBeenCalled(); + }); + + it('uses the core client when no data_source is provided', async () => { + const { getHandler } = setup(); + const transportRequest = jest.fn().mockResolvedValue({ body: { indices: [] } }); + + const context = { + core: { + opensearch: { client: { asCurrentUser: { transport: { request: transportRequest } } } }, + }, + dataSource: { opensearch: { getClient: jest.fn() } }, + }; + const req = { params: { query: '*' }, query: {} }; + const res = resFactory(); + + await getHandler()(context, req, res); + + expect(context.dataSource.opensearch.getClient).not.toHaveBeenCalled(); + expect(transportRequest).toHaveBeenCalledWith( + expect.objectContaining({ method: 'GET', path: expect.stringContaining('/_resolve/index/') }) + ); + expect(res.ok).toHaveBeenCalled(); + }); + + it('maps an opensearch-js ResponseError to res.customError preserving statusCode and body.error', async () => { + const { getHandler } = setup(); + const transportRequest = jest.fn().mockRejectedValue({ + statusCode: 404, + message: 'index_not_found', + body: { error: { type: 'index_not_found_exception' } }, + }); + const getClient = jest.fn().mockResolvedValue({ transport: { request: transportRequest } }); + + const context = { + core: { opensearch: { client: { asCurrentUser: { transport: { request: jest.fn() } } } } }, + dataSource: { opensearch: { getClient } }, + }; + const req = { params: { query: '*' }, query: { data_source: 'ds-1' } }; + const res = resFactory(); + + await getHandler()(context, req, res); + + expect(res.ok).not.toHaveBeenCalled(); + expect(res.customError).toHaveBeenCalledWith( + expect.objectContaining({ + statusCode: 404, + body: expect.objectContaining({ + message: 'index_not_found', + attributes: { error: { type: 'index_not_found_exception' } }, + }), + }) + ); + }); + + it('maps a transport-level error (no statusCode, no body) to a 500 with message fallbacks', async () => { + const { getHandler } = setup(); + const transportRequest = jest.fn().mockRejectedValue(new Error('connection refused')); + + const context = { + core: { + opensearch: { client: { asCurrentUser: { transport: { request: transportRequest } } } }, + }, + dataSource: { opensearch: { getClient: jest.fn() } }, + }; + const req = { params: { query: '*' }, query: {} }; + const res = resFactory(); + + await getHandler()(context, req, res); + + expect(res.ok).not.toHaveBeenCalled(); + expect(res.customError).toHaveBeenCalledWith( + expect.objectContaining({ + statusCode: 500, + body: expect.objectContaining({ + message: 'connection refused', + attributes: { error: 'connection refused' }, + }), + }) + ); + }); +}); diff --git a/src/plugins/index_pattern_management/server/routes/resolve_index.ts b/src/plugins/index_pattern_management/server/routes/resolve_index.ts index 2bc54349e6ee..f19b5331723d 100644 --- a/src/plugins/index_pattern_management/server/routes/resolve_index.ts +++ b/src/plugins/index_pattern_management/server/routes/resolve_index.ts @@ -29,8 +29,7 @@ */ import { schema } from '@osd/config-schema'; -// @ts-expect-error TS6133 TODO(ts-error): fixme -import { IRouter, LegacyAPICaller } from 'src/core/server'; +import { IRouter } from 'src/core/server'; export function registerResolveIndexRoute(router: IRouter): void { router.get( @@ -60,19 +59,23 @@ export function registerResolveIndexRoute(router: IRouter): void { : null; const dataSourceId = req.query.data_source; - const caller = dataSourceId - ? context.dataSource.opensearch.legacy.getClient(dataSourceId).callAPI - : context.core.opensearch.legacy.client.callAsCurrentUser; + // Use the MODERN client. For data sources this gives a per-connection client whose + // Transport (when backendCompatibility is enabled) can synthesize /_resolve/index for + // legacy Elasticsearch (6.x) clusters that lack the API. The legacy client cannot carry + // a Transport, so it must not be used here. + const client = dataSourceId + ? await context.dataSource.opensearch.getClient(dataSourceId) + : context.core.opensearch.client.asCurrentUser; try { - const result = await caller('transport.request', { + const result = await client.transport.request({ method: 'GET', path: `/_resolve/index/${encodeURIComponent(req.params.query)}${ queryString ? '?' + new URLSearchParams(queryString).toString() : '' }`, }); - return res.ok({ body: result }); - } catch (err) { + return res.ok({ body: result.body }); + } catch (err: any) { return res.customError({ statusCode: err.statusCode || 500, body: { From 2dd9ceb53ae132dc8975a437b9c2864853bb68c9 Mon Sep 17 00:00:00 2001 From: Sumukh Swamy Date: Tue, 30 Jun 2026 15:46:19 -0700 Subject: [PATCH 41/88] fix(saved-objects): gate config import on advancedSettings.save capability (#12220) The config type block introduced in #12014 (security fix for P432840841) rejected all config-type objects unconditionally and failed the entire import when any were present. This change: - Gates config import on the advancedSettings.save capability: admin users with this capability can import config objects; non-admin users still receive unsupported_type errors for config objects. - Changes from fail-all to filter-and-continue: when config objects are rejected, remaining valid objects in the same import are still processed. Config objects are reported as errors in the response alongside any successful imports. Resolves #12201 Signed-off-by: sumukhswamy --- .../import/import_saved_objects.test.ts | 82 +++++++------- .../import/import_saved_objects.ts | 48 ++++---- .../import/resolve_import_errors.test.ts | 44 +++++--- .../import/resolve_import_errors.ts | 45 ++++---- src/core/server/saved_objects/import/types.ts | 4 + .../server/saved_objects/routes/import.ts | 31 +++++- src/core/server/saved_objects/routes/index.ts | 8 +- .../routes/integration_tests/import.test.ts | 103 +++++++++++++++++ .../resolve_import_errors.test.ts | 105 ++++++++++++++++++ .../routes/resolve_import_errors.ts | 10 +- .../saved_objects_service.mock.ts | 1 + .../saved_objects/saved_objects_service.ts | 9 ++ src/core/server/server.ts | 3 + 13 files changed, 386 insertions(+), 107 deletions(-) diff --git a/src/core/server/saved_objects/import/import_saved_objects.test.ts b/src/core/server/saved_objects/import/import_saved_objects.test.ts index 9b2b9b6a6ea5..a8effe6c5ece 100644 --- a/src/core/server/saved_objects/import/import_saved_objects.test.ts +++ b/src/core/server/saved_objects/import/import_saved_objects.test.ts @@ -762,80 +762,84 @@ describe('#importSavedObjectsFromStream', () => { expect(result).toEqual({ success: false, successCount: 0, errors: expectedErrors }); }); - test('early return if import contains config type object', async () => { + test('filters out config type objects when canImportConfig is false', async () => { const options = setupOptions(); const configObj = createConfigObject(); const collectedObjects = [configObj]; - const errors = [ - { - type: configObj.type, - id: configObj.id, - title: configObj.id, - meta: { title: configObj.id }, - error: { type: 'unsupported_type' }, - }, - ]; getMockFn(collectSavedObjects).mockResolvedValue({ errors: [], collectedObjects, importIdMap: new Map(), }); + getMockFn(createSavedObjects).mockResolvedValue({ errors: [], createdObjects: [] }); const result = await importSavedObjectsFromStream(options); - const expectedErrors = errors.map(({ type, id }) => expect.objectContaining({ type, id })); - expect(result).toEqual({ success: false, successCount: 0, errors: expectedErrors }); - expect(createSavedObjects).not.toHaveBeenCalled(); + expect(result.success).toEqual(false); + expect(result.successCount).toEqual(0); + expect(result.errors).toEqual( + expect.arrayContaining([expect.objectContaining({ type: 'config', id: configObj.id })]) + ); }); - test('early return if import contains config type mixed with valid objects', async () => { + test('filters config objects but processes remaining valid objects', async () => { const options = setupOptions(); const configObj = createConfigObject(); const validObj = createObject(); const collectedObjects = [validObj, configObj]; - const errors = [ - { - type: configObj.type, - id: configObj.id, - title: configObj.id, - meta: { title: configObj.id }, - error: { type: 'unsupported_type' }, - }, - ]; getMockFn(collectSavedObjects).mockResolvedValue({ errors: [], collectedObjects, importIdMap: new Map(), }); + getMockFn(createSavedObjects).mockResolvedValue({ + errors: [], + createdObjects: [validObj], + }); const result = await importSavedObjectsFromStream(options); - const expectedErrors = errors.map(({ type, id }) => expect.objectContaining({ type, id })); - expect(result).toEqual({ success: false, successCount: 0, errors: expectedErrors }); - expect(createSavedObjects).not.toHaveBeenCalled(); + expect(result.successCount).toEqual(1); + expect(result.errors).toEqual( + expect.arrayContaining([expect.objectContaining({ type: 'config', id: configObj.id })]) + ); + expect(createSavedObjects).toHaveBeenCalled(); }); - test('early return if import contains config type in workspace-scoped import', async () => { + test('allows config type objects when canImportConfig is true', async () => { + const options = { ...setupOptions(), canImportConfig: true }; + const configObj = createConfigObject(); + const collectedObjects = [configObj]; + + getMockFn(collectSavedObjects).mockResolvedValue({ + errors: [], + collectedObjects, + importIdMap: new Map(), + }); + getMockFn(createSavedObjects).mockResolvedValue({ + errors: [], + createdObjects: [configObj], + }); + const result = await importSavedObjectsFromStream(options); + expect(result.successCount).toEqual(1); + expect(result.success).toEqual(true); + expect(createSavedObjects).toHaveBeenCalled(); + }); + + test('filters out config type in workspace-scoped import when canImportConfig is false', async () => { const options = setupOptions(false, undefined, true, ['workspace-1']); const configObj = createConfigObject(); const collectedObjects = [configObj]; - const errors = [ - { - type: configObj.type, - id: configObj.id, - title: configObj.id, - meta: { title: configObj.id }, - error: { type: 'unsupported_type' }, - }, - ]; getMockFn(collectSavedObjects).mockResolvedValue({ errors: [], collectedObjects, importIdMap: new Map(), }); + getMockFn(createSavedObjects).mockResolvedValue({ errors: [], createdObjects: [] }); const result = await importSavedObjectsFromStream(options); - const expectedErrors = errors.map(({ type, id }) => expect.objectContaining({ type, id })); - expect(result).toEqual({ success: false, successCount: 0, errors: expectedErrors }); - expect(createSavedObjects).not.toHaveBeenCalled(); + expect(result.success).toEqual(false); + expect(result.errors).toEqual( + expect.arrayContaining([expect.objectContaining({ type: 'config', id: configObj.id })]) + ); }); }); }); diff --git a/src/core/server/saved_objects/import/import_saved_objects.ts b/src/core/server/saved_objects/import/import_saved_objects.ts index 1109d6310973..7c0332c004a8 100644 --- a/src/core/server/saved_objects/import/import_saved_objects.ts +++ b/src/core/server/saved_objects/import/import_saved_objects.ts @@ -63,6 +63,7 @@ export async function importSavedObjectsFromStream({ workspaces, dataSourceEnabled, isCopy, + canImportConfig, }: SavedObjectsImportOptions): Promise { let errorAccumulator: SavedObjectsImportError[] = []; const supportedTypes = typeRegistry.getImportableAndExportableTypes().map((type) => type.name); @@ -74,27 +75,26 @@ export async function importSavedObjectsFromStream({ supportedTypes, dataSourceId, }); - const configErrors: SavedObjectsImportError[] = collectSavedObjectsResult.collectedObjects - .filter((obj) => obj.type === 'config') - .map((obj) => ({ - error: { type: 'unsupported_type' } as SavedObjectsImportUnsupportedTypeError, - type: obj.type, - id: obj.id, - title: obj.id, - meta: { title: obj.id }, - })); - if (configErrors.length > 0) { - return { - successCount: 0, - success: false, - errors: configErrors, - }; + let collectedObjects = collectSavedObjectsResult.collectedObjects; + + if (!canImportConfig) { + const configErrors: SavedObjectsImportError[] = collectedObjects + .filter((obj) => obj.type === 'config') + .map((obj) => ({ + error: { type: 'unsupported_type' } as SavedObjectsImportUnsupportedTypeError, + type: obj.type, + id: obj.id, + title: obj.id, + meta: { title: obj.id }, + })); + errorAccumulator = [...errorAccumulator, ...configErrors]; + collectedObjects = collectedObjects.filter((obj) => obj.type !== 'config'); } // if dataSource is not enabled, but object type is data-source, or saved object id contains datasource id // return unsupported type error if (!dataSourceEnabled) { - const notSupportedErrors: SavedObjectsImportError[] = collectSavedObjectsResult.collectedObjects.reduce( + const notSupportedErrors: SavedObjectsImportError[] = collectedObjects.reduce( (errors: SavedObjectsImportError[], obj) => { if (obj.type === 'data-source' || isSavedObjectWithDataSource(obj.id)) { const error: SavedObjectsImportUnsupportedTypeError = { type: 'unsupported_type' }; @@ -121,7 +121,7 @@ export async function importSavedObjectsFromStream({ // Validate references const validateReferencesResult = await validateReferences( - collectSavedObjectsResult.collectedObjects, + collectedObjects, savedObjectsClient, namespace ); @@ -129,11 +129,9 @@ export async function importSavedObjectsFromStream({ if (isCopy) { // Data sources can only be assigned to workspaces and can not be copied between workspaces. - collectSavedObjectsResult.collectedObjects = collectSavedObjectsResult.collectedObjects.filter( - (obj) => obj.type !== 'data-source' - ); + collectedObjects = collectedObjects.filter((obj) => obj.type !== 'data-source'); const validateDataSourcesResult = await validateDataSources( - collectSavedObjectsResult.collectedObjects, + collectedObjects, savedObjectsClient, errorAccumulator, workspaces @@ -143,12 +141,12 @@ export async function importSavedObjectsFromStream({ if (createNewCopies) { // randomly generated id - importIdMap = regenerateIds(collectSavedObjectsResult.collectedObjects, dataSourceId); + importIdMap = regenerateIds(collectedObjects, dataSourceId); } else { // in check conclict and override mode // Check single-namespace objects for conflicts in this namespace, and check multi-namespace objects for conflicts across all namespaces const checkConflictsParams = { - objects: collectSavedObjectsResult.collectedObjects, + objects: collectedObjects, savedObjectsClient, namespace, ignoreRegularConflicts: overwrite, @@ -195,8 +193,8 @@ export async function importSavedObjectsFromStream({ // Create objects in bulk const createSavedObjectsParams = { objects: dataSourceId - ? collectSavedObjectsResult.collectedObjects.filter((object) => object.type !== 'data-source') - : collectSavedObjectsResult.collectedObjects, + ? collectedObjects.filter((object) => object.type !== 'data-source') + : collectedObjects, accumulatedErrors: errorAccumulator, savedObjectsClient, importIdMap, diff --git a/src/core/server/saved_objects/import/resolve_import_errors.test.ts b/src/core/server/saved_objects/import/resolve_import_errors.test.ts index c01d0df85e16..dea253e4f662 100644 --- a/src/core/server/saved_objects/import/resolve_import_errors.test.ts +++ b/src/core/server/saved_objects/import/resolve_import_errors.test.ts @@ -538,31 +538,49 @@ describe('#importSavedObjectsFromStream', () => { expect(result).toEqual({ success: false, successCount: 0, errors: expectedErrors }); }); - test('early return if resolve contains config type object', async () => { + test('filters out config type objects when canImportConfig is false', async () => { const configObj = createConfigObject(); const options = setupOptions([ { type: 'config', id: configObj.id, overwrite: true, replaceReferences: [] }, ]); const collectedObjects = [configObj]; - const errors = [ - { - type: configObj.type, - id: configObj.id, - title: configObj.id, - meta: { title: configObj.id }, - error: { type: 'unsupported_type' }, - }, - ]; getMockFn(collectSavedObjects).mockResolvedValue({ errors: [], collectedObjects, importIdMap: new Map(), }); + getMockFn(createSavedObjects).mockResolvedValue({ errors: [], createdObjects: [] }); const result = await resolveSavedObjectsImportErrors(options); - const expectedErrors = errors.map(({ type, id }) => expect.objectContaining({ type, id })); - expect(result).toEqual({ success: false, successCount: 0, errors: expectedErrors }); - expect(createSavedObjects).not.toHaveBeenCalled(); + expect(result.success).toEqual(false); + expect(result.successCount).toEqual(0); + expect(result.errors).toEqual( + expect.arrayContaining([expect.objectContaining({ type: 'config', id: configObj.id })]) + ); + }); + + test('allows config type objects when canImportConfig is true', async () => { + const configObj = createConfigObject(); + const options = { + ...setupOptions([ + { type: 'config', id: configObj.id, overwrite: true, replaceReferences: [] }, + ]), + canImportConfig: true, + }; + const collectedObjects = [configObj]; + + getMockFn(collectSavedObjects).mockResolvedValue({ + errors: [], + collectedObjects, + importIdMap: new Map(), + }); + getMockFn(createSavedObjects) + .mockResolvedValueOnce({ errors: [], createdObjects: [configObj] }) + .mockResolvedValueOnce({ errors: [], createdObjects: [] }); + const result = await resolveSavedObjectsImportErrors(options); + expect(result.successCount).toEqual(1); + expect(result.success).toEqual(true); + expect(createSavedObjects).toHaveBeenCalled(); }); }); }); diff --git a/src/core/server/saved_objects/import/resolve_import_errors.ts b/src/core/server/saved_objects/import/resolve_import_errors.ts index fd8f51333d42..ebc006286849 100644 --- a/src/core/server/saved_objects/import/resolve_import_errors.ts +++ b/src/core/server/saved_objects/import/resolve_import_errors.ts @@ -63,6 +63,7 @@ export async function resolveSavedObjectsImportErrors({ dataSourceId, dataSourceTitle, workspaces, + canImportConfig, }: SavedObjectsResolveImportErrorsOptions): Promise { // throw a BadRequest error if we see invalid retries validateRetries(retries); @@ -74,32 +75,28 @@ export async function resolveSavedObjectsImportErrors({ const filter = createObjectsFilter(retries); // Get the objects to resolve errors - const { errors: collectorErrors, collectedObjects: objectsToResolve } = await collectSavedObjects( - { - readStream, - objectLimit, - filter, - supportedTypes, - dataSourceId, - } - ); + const { errors: collectorErrors, collectedObjects } = await collectSavedObjects({ + readStream, + objectLimit, + filter, + supportedTypes, + dataSourceId, + }); errorAccumulator = [...errorAccumulator, ...collectorErrors]; + let objectsToResolve = collectedObjects; - const configErrors: SavedObjectsImportError[] = objectsToResolve - .filter((obj) => obj.type === 'config') - .map((obj) => ({ - error: { type: 'unsupported_type' } as SavedObjectsImportUnsupportedTypeError, - type: obj.type, - id: obj.id, - title: obj.id, - meta: { title: obj.id }, - })); - if (configErrors.length > 0) { - return { - successCount: 0, - success: false, - errors: configErrors, - }; + if (!canImportConfig) { + const configErrors: SavedObjectsImportError[] = objectsToResolve + .filter((obj) => obj.type === 'config') + .map((obj) => ({ + error: { type: 'unsupported_type' } as SavedObjectsImportUnsupportedTypeError, + type: obj.type, + id: obj.id, + title: obj.id, + meta: { title: obj.id }, + })); + errorAccumulator = [...errorAccumulator, ...configErrors]; + objectsToResolve = objectsToResolve.filter((obj) => obj.type !== 'config'); } // Create a map of references to replace for each object to avoid iterating through diff --git a/src/core/server/saved_objects/import/types.ts b/src/core/server/saved_objects/import/types.ts index ad05c7bb5959..5f067791a2f1 100644 --- a/src/core/server/saved_objects/import/types.ts +++ b/src/core/server/saved_objects/import/types.ts @@ -202,6 +202,8 @@ export interface SavedObjectsImportOptions { dataSourceEnabled?: boolean; workspaces?: SavedObjectsBaseOptions['workspaces']; isCopy?: boolean; + /** If true, allows importing config-type saved objects. Requires advancedSettings.save capability. */ + canImportConfig?: boolean; } /** @@ -227,6 +229,8 @@ export interface SavedObjectsResolveImportErrorsOptions { dataSourceTitle?: string; /** if specified, will import in given workspaces */ workspaces?: SavedObjectsBaseOptions['workspaces']; + /** If true, allows importing config-type saved objects. Requires advancedSettings.save capability. */ + canImportConfig?: boolean; } export type CreatedObject = SavedObject & { destinationId?: string }; diff --git a/src/core/server/saved_objects/routes/import.ts b/src/core/server/saved_objects/routes/import.ts index a2a5bdcacd7a..ef99d49187b6 100644 --- a/src/core/server/saved_objects/routes/import.ts +++ b/src/core/server/saved_objects/routes/import.ts @@ -31,7 +31,8 @@ import { Readable } from 'stream'; import { extname } from 'path'; import { schema } from '@osd/config-schema'; -import { IRouter } from '../../http'; +import { IRouter, OpenSearchDashboardsRequest } from '../../http'; +import { Capabilities } from '../../capabilities'; import { importSavedObjectsFromStream } from '../import'; import { SavedObjectConfig } from '../saved_objects_config'; import { createSavedObjectsStreamFromNdJson } from './utils'; @@ -42,7 +43,30 @@ interface FileStream extends Readable { }; } -export const registerImportRoute = (router: IRouter, config: SavedObjectConfig) => { +export type CapabilitiesResolver = (request: OpenSearchDashboardsRequest) => Promise; + +export async function resolveCanImportConfig( + getCapabilities: (() => CapabilitiesResolver | undefined) | undefined, + request: OpenSearchDashboardsRequest +): Promise { + const resolver = getCapabilities?.(); + if (resolver) { + const capabilities = await resolver(request); + return capabilities.advancedSettings?.save === true; + } + // Resolver is absent (capabilities service not yet started). This cannot + // happen during normal request handling because the HTTP server only begins + // accepting connections after server.start() completes, which is after + // capabilitiesStart is set. Failing closed (blocking config import) is the + // safe default. + return false; +} + +export const registerImportRoute = ( + router: IRouter, + config: SavedObjectConfig, + getCapabilities?: () => CapabilitiesResolver | undefined +) => { const { maxImportExportSize, maxImportPayloadBytes } = config; router.post( @@ -119,6 +143,8 @@ export const registerImportRoute = (router: IRouter, config: SavedObjectConfig) const dataSourceEnabled = req.query.dataSourceEnabled; + const canImportConfig = await resolveCanImportConfig(getCapabilities, req); + const result = await importSavedObjectsFromStream({ savedObjectsClient: context.core.savedObjects.client, typeRegistry: context.core.savedObjects.typeRegistry, @@ -130,6 +156,7 @@ export const registerImportRoute = (router: IRouter, config: SavedObjectConfig) dataSourceTitle, workspaces, dataSourceEnabled, + canImportConfig, }); return res.ok({ body: result }); diff --git a/src/core/server/saved_objects/routes/index.ts b/src/core/server/saved_objects/routes/index.ts index fb3e3fce19ca..25c8361e6f3c 100644 --- a/src/core/server/saved_objects/routes/index.ts +++ b/src/core/server/saved_objects/routes/index.ts @@ -42,7 +42,7 @@ import { registerBulkCreateRoute } from './bulk_create'; import { registerBulkUpdateRoute } from './bulk_update'; import { registerLogLegacyImportRoute } from './log_legacy_import'; import { registerExportRoute } from './export'; -import { registerImportRoute } from './import'; +import { registerImportRoute, CapabilitiesResolver } from './import'; import { registerResolveImportErrorsRoute } from './resolve_import_errors'; import { registerMigrateRoute } from './migrate'; @@ -51,11 +51,13 @@ export function registerRoutes({ logger, config, migratorPromise, + getCapabilities, }: { http: InternalHttpServiceSetup; logger: Logger; config: SavedObjectConfig; migratorPromise: Promise; + getCapabilities?: () => CapabilitiesResolver | undefined; }) { const router = http.createRouter('/api/saved_objects/'); @@ -82,8 +84,8 @@ export function registerRoutes({ registerBulkUpdateRoute(router); registerLogLegacyImportRoute(router, logger); registerExportRoute(router, config); - registerImportRoute(router, config); - registerResolveImportErrorsRoute(router, config); + registerImportRoute(router, config, getCapabilities); + registerResolveImportErrorsRoute(router, config, getCapabilities); const internalRouter = http.createRouter('/internal/saved_objects/'); diff --git a/src/core/server/saved_objects/routes/integration_tests/import.test.ts b/src/core/server/saved_objects/routes/integration_tests/import.test.ts index fde41390b505..a65e45a0f4f1 100644 --- a/src/core/server/saved_objects/routes/integration_tests/import.test.ts +++ b/src/core/server/saved_objects/routes/integration_tests/import.test.ts @@ -558,4 +558,107 @@ describe(`POST ${URL}`, () => { ); }); }); + + describe('config type capability gating', () => { + const configObject = + '{"type":"config","id":"test-config","attributes":{"dismissedAt":"2026-01-01T00:00:00Z"}}'; + const dashboardObject = + '{"type":"dashboard","id":"my-dashboard","attributes":{"title":"Look at my dashboard"}}'; + + const makeRequest = (...lines: string[]) => + supertest(httpSetup.server.listener) + .post(URL) + .set('content-Type', 'multipart/form-data; boundary=BOUNDARY') + .send( + [ + '--BOUNDARY', + 'Content-Disposition: form-data; name="file"; filename="export.ndjson"', + 'Content-Type: application/ndjson', + '', + ...lines, + '--BOUNDARY--', + ].join('\r\n') + ); + + describe('when getCapabilities resolver is absent (fail-safe)', () => { + it('blocks config objects', async () => { + const result = await makeRequest(configObject).expect(200); + expect(result.body.success).toBe(false); + expect(result.body.errors[0]).toEqual( + expect.objectContaining({ type: 'config', error: { type: 'unsupported_type' } }) + ); + }); + }); + + describe('when resolver returns advancedSettings.save=false', () => { + beforeEach(async () => { + await server.stop(); + ({ server, httpSetup, handlerContext } = await setupServer()); + handlerContext.savedObjects.typeRegistry.getImportableAndExportableTypes.mockReturnValue( + [...allowedTypes, 'config'].map(createExportableType) + ); + handlerContext.savedObjects.typeRegistry.getType.mockImplementation( + (type: string) => ({ management: { icon: `${type}-icon` } } as any) + ); + savedObjectsClient = handlerContext.savedObjects.client; + savedObjectsClient.find.mockResolvedValue(emptyResponse); + savedObjectsClient.checkConflicts.mockResolvedValue({ errors: [] }); + + const router = httpSetup.createRouter('/internal/saved_objects/'); + const mockResolver = jest.fn().mockResolvedValue({ advancedSettings: { save: false } }); + registerImportRoute(router, config, () => mockResolver); + + const dynamicConfigService = dynamicConfigServiceMock.createInternalStartContract(); + await server.start({ dynamicConfigService }); + }); + + it('blocks config objects and processes other objects', async () => { + savedObjectsClient.bulkCreate.mockResolvedValueOnce({ + saved_objects: [mockDashboard], + }); + + const result = await makeRequest(configObject, dashboardObject).expect(200); + expect(result.body.successCount).toBe(1); + expect(result.body.errors).toEqual( + expect.arrayContaining([ + expect.objectContaining({ type: 'config', error: { type: 'unsupported_type' } }), + ]) + ); + }); + }); + + describe('when resolver returns advancedSettings.save=true', () => { + beforeEach(async () => { + await server.stop(); + ({ server, httpSetup, handlerContext } = await setupServer()); + handlerContext.savedObjects.typeRegistry.getImportableAndExportableTypes.mockReturnValue( + [...allowedTypes, 'config'].map(createExportableType) + ); + handlerContext.savedObjects.typeRegistry.getType.mockImplementation( + (type: string) => ({ management: { icon: `${type}-icon` } } as any) + ); + savedObjectsClient = handlerContext.savedObjects.client; + savedObjectsClient.find.mockResolvedValue(emptyResponse); + savedObjectsClient.checkConflicts.mockResolvedValue({ errors: [] }); + + const router = httpSetup.createRouter('/internal/saved_objects/'); + const mockResolver = jest.fn().mockResolvedValue({ advancedSettings: { save: true } }); + registerImportRoute(router, config, () => mockResolver); + + const dynamicConfigService = dynamicConfigServiceMock.createInternalStartContract(); + await server.start({ dynamicConfigService }); + }); + + it('allows config objects through', async () => { + savedObjectsClient.bulkCreate.mockResolvedValueOnce({ + saved_objects: [{ type: 'config', id: 'test-config', attributes: {}, references: [] }], + }); + + const result = await makeRequest(configObject).expect(200); + expect(result.body.success).toBe(true); + expect(result.body.successCount).toBe(1); + expect(result.body.errors).toBeUndefined(); + }); + }); + }); }); diff --git a/src/core/server/saved_objects/routes/integration_tests/resolve_import_errors.test.ts b/src/core/server/saved_objects/routes/integration_tests/resolve_import_errors.test.ts index 4fa22c85f794..e525f5521005 100644 --- a/src/core/server/saved_objects/routes/integration_tests/resolve_import_errors.test.ts +++ b/src/core/server/saved_objects/routes/integration_tests/resolve_import_errors.test.ts @@ -36,6 +36,7 @@ import { savedObjectsClientMock } from '../../../../../core/server/mocks'; import { setupServer, createExportableType } from '../test_utils'; import { SavedObjectConfig } from '../../saved_objects_config'; import { dynamicConfigServiceMock } from '../../../config/dynamic_config_service.mock'; +import { SavedObjectsImportRetry } from '../../import'; type SetupServerReturn = UnwrapPromise>; @@ -405,4 +406,108 @@ describe(`POST ${URL}`, () => { ); }); }); + + describe('config type capability gating', () => { + const configObject = + '{"type":"config","id":"test-config","attributes":{"dismissedAt":"2026-01-01T00:00:00Z"},"references":[]}'; + + const makeRequest = (ndjson: string, retries: SavedObjectsImportRetry[]) => + supertest(httpSetup.server.listener) + .post(URL) + .set('content-Type', 'multipart/form-data; boundary=BOUNDARY') + .send( + [ + '--BOUNDARY', + 'Content-Disposition: form-data; name="file"; filename="export.ndjson"', + 'Content-Type: application/ndjson', + '', + ndjson, + '--BOUNDARY', + 'Content-Disposition: form-data; name="retries"', + '', + JSON.stringify(retries), + '--BOUNDARY--', + ].join('\r\n') + ); + + describe('when getCapabilities resolver is absent (fail-safe)', () => { + it('blocks config objects', async () => { + const result = await makeRequest(configObject, [ + { type: 'config', id: 'test-config', overwrite: false, replaceReferences: [] }, + ]).expect(200); + expect(result.body.success).toBe(false); + expect(result.body.errors[0]).toEqual( + expect.objectContaining({ type: 'config', error: { type: 'unsupported_type' } }) + ); + }); + }); + + describe('when resolver returns advancedSettings.save=false', () => { + beforeEach(async () => { + await server.stop(); + ({ server, httpSetup, handlerContext } = await setupServer()); + handlerContext.savedObjects.typeRegistry.getImportableAndExportableTypes.mockReturnValue( + [...allowedTypes, 'config'].map(createExportableType) + ); + handlerContext.savedObjects.typeRegistry.getType.mockImplementation( + (type: string) => ({ management: { icon: `${type}-icon` } } as any) + ); + savedObjectsClient = handlerContext.savedObjects.client; + savedObjectsClient.checkConflicts.mockResolvedValue({ errors: [] }); + + const router = httpSetup.createRouter('/api/saved_objects/'); + const mockResolver = jest.fn().mockResolvedValue({ advancedSettings: { save: false } }); + registerResolveImportErrorsRoute(router, config, () => mockResolver); + + const dynamicConfigService = dynamicConfigServiceMock.createInternalStartContract(); + await server.start({ dynamicConfigService }); + }); + + it('blocks config objects', async () => { + const result = await makeRequest(configObject, [ + { type: 'config', id: 'test-config', overwrite: false, replaceReferences: [] }, + ]).expect(200); + expect(result.body.success).toBe(false); + expect(result.body.errors).toEqual( + expect.arrayContaining([ + expect.objectContaining({ type: 'config', error: { type: 'unsupported_type' } }), + ]) + ); + }); + }); + + describe('when resolver returns advancedSettings.save=true', () => { + beforeEach(async () => { + await server.stop(); + ({ server, httpSetup, handlerContext } = await setupServer()); + handlerContext.savedObjects.typeRegistry.getImportableAndExportableTypes.mockReturnValue( + [...allowedTypes, 'config'].map(createExportableType) + ); + handlerContext.savedObjects.typeRegistry.getType.mockImplementation( + (type: string) => ({ management: { icon: `${type}-icon` } } as any) + ); + savedObjectsClient = handlerContext.savedObjects.client; + savedObjectsClient.checkConflicts.mockResolvedValue({ errors: [] }); + savedObjectsClient.bulkCreate.mockResolvedValueOnce({ + saved_objects: [{ type: 'config', id: 'test-config', attributes: {}, references: [] }], + }); + + const router = httpSetup.createRouter('/api/saved_objects/'); + const mockResolver = jest.fn().mockResolvedValue({ advancedSettings: { save: true } }); + registerResolveImportErrorsRoute(router, config, () => mockResolver); + + const dynamicConfigService = dynamicConfigServiceMock.createInternalStartContract(); + await server.start({ dynamicConfigService }); + }); + + it('allows config objects through', async () => { + const result = await makeRequest(configObject, [ + { type: 'config', id: 'test-config', overwrite: true, replaceReferences: [] }, + ]).expect(200); + expect(result.body.success).toBe(true); + expect(result.body.successCount).toBe(1); + expect(result.body.errors).toBeUndefined(); + }); + }); + }); }); diff --git a/src/core/server/saved_objects/routes/resolve_import_errors.ts b/src/core/server/saved_objects/routes/resolve_import_errors.ts index 6bc667eba0df..68b93e748322 100644 --- a/src/core/server/saved_objects/routes/resolve_import_errors.ts +++ b/src/core/server/saved_objects/routes/resolve_import_errors.ts @@ -35,6 +35,7 @@ import { IRouter } from '../../http'; import { resolveSavedObjectsImportErrors } from '../import'; import { SavedObjectConfig } from '../saved_objects_config'; import { createSavedObjectsStreamFromNdJson } from './utils'; +import { CapabilitiesResolver, resolveCanImportConfig } from './import'; interface FileStream extends Readable { hapi: { @@ -42,7 +43,11 @@ interface FileStream extends Readable { }; } -export const registerResolveImportErrorsRoute = (router: IRouter, config: SavedObjectConfig) => { +export const registerResolveImportErrorsRoute = ( + router: IRouter, + config: SavedObjectConfig, + getCapabilities?: () => CapabilitiesResolver | undefined +) => { const { maxImportExportSize, maxImportPayloadBytes } = config; router.post( @@ -125,6 +130,8 @@ export const registerResolveImportErrorsRoute = (router: IRouter, config: SavedO workspaces = [workspaces]; } + const canImportConfig = await resolveCanImportConfig(getCapabilities, req); + const result = await resolveSavedObjectsImportErrors({ typeRegistry: context.core.savedObjects.typeRegistry, savedObjectsClient: context.core.savedObjects.client, @@ -135,6 +142,7 @@ export const registerResolveImportErrorsRoute = (router: IRouter, config: SavedO workspaces, dataSourceId, dataSourceTitle, + canImportConfig, }); return res.ok({ body: result }); diff --git a/src/core/server/saved_objects/saved_objects_service.mock.ts b/src/core/server/saved_objects/saved_objects_service.mock.ts index 257b5048fc4a..b63d6ce23d69 100644 --- a/src/core/server/saved_objects/saved_objects_service.mock.ts +++ b/src/core/server/saved_objects/saved_objects_service.mock.ts @@ -104,6 +104,7 @@ const createSavedObjectsServiceMock = () => { setup: jest.fn(), start: jest.fn(), stop: jest.fn(), + setCapabilitiesResolver: jest.fn(), }; mocked.setup.mockResolvedValue(createInternalSetupContractMock()); diff --git a/src/core/server/saved_objects/saved_objects_service.ts b/src/core/server/saved_objects/saved_objects_service.ts index f1a031fdf531..1c387c7e4bbc 100644 --- a/src/core/server/saved_objects/saved_objects_service.ts +++ b/src/core/server/saved_objects/saved_objects_service.ts @@ -53,6 +53,7 @@ import { SavedObjectConfig, } from './saved_objects_config'; import { OpenSearchDashboardsRequest, InternalHttpServiceSetup } from '../http'; +import { Capabilities } from '../capabilities'; import { SavedObjectsClientContract, SavedObjectsType, SavedObjectStatusMeta } from './types'; import { ISavedObjectsRepository, SavedObjectsRepository } from './service/lib/repository'; import { @@ -308,6 +309,7 @@ export class SavedObjectsService private migrator$ = new Subject(); private typeRegistry = new SavedObjectTypeRegistry(); + private capabilitiesResolver?: (request: OpenSearchDashboardsRequest) => Promise; private started = false; private respositoryFactoryProvider?: SavedObjectRepositoryFactoryProvider; @@ -324,6 +326,12 @@ export class SavedObjectsService this.logger = coreContext.logger.get('savedobjects-service'); } + public setCapabilitiesResolver( + resolver: (request: OpenSearchDashboardsRequest) => Promise + ) { + this.capabilitiesResolver = resolver; + } + public async setup(setupDeps: SavedObjectsSetupDeps): Promise { this.logger.debug('Setting up SavedObjects service'); @@ -371,6 +379,7 @@ export class SavedObjectsService logger: this.logger, config: this.config, migratorPromise: this.migrator$.pipe(first()).toPromise(), + getCapabilities: () => this.capabilitiesResolver, }); return { diff --git a/src/core/server/server.ts b/src/core/server/server.ts index 9da24350daba..772095dc74cd 100644 --- a/src/core/server/server.ts +++ b/src/core/server/server.ts @@ -294,6 +294,9 @@ export class Server { }); soStartSpan?.end(); const capabilitiesStart = this.capabilities.start(); + this.savedObjects.setCapabilitiesResolver((request) => + capabilitiesStart.resolveCapabilities(request) + ); const uiSettingsStart = await this.uiSettings.start(); const workspaceStart = await this.workspace.start(); const metricsStart = await this.metrics.start(); From 6aa3af0f1644ddc2d5b570ca81efaec03ab2e2b9 Mon Sep 17 00:00:00 2001 From: Tomasz Kania Date: Wed, 1 Jul 2026 05:23:02 +0200 Subject: [PATCH 42/88] chore(deps): remove extract-zip, yauzl 3.4.0, fast-uri 3.1.3 - to address CVEs (#12306) * chore(deps): remove extract-zip, yauzl 3.4.0 Signed-off-by: Tomasz Kania * chore(deps): fast-uri 3.1.3 Signed-off-by: Tomasz Kania --------- Signed-off-by: Tomasz Kania --- package.json | 4 +- packages/osd-opensearch/package.json | 2 +- .../src/utils/__fixtures__/root_dir_entry.zip | Bin 0 -> 464 bytes .../src/utils/__fixtures__/zip_slip.zip | Bin 0 -> 145 bytes .../osd-opensearch/src/utils/decompress.js | 64 +++--- .../src/utils/decompress.test.js | 21 ++ packages/osd-plugin-helpers/package.json | 4 +- .../src/integration_tests/build.test.ts | 32 ++- .../__fixtures__/replies/prefix_confusion.zip | Bin 0 -> 369 bytes .../install/__fixtures__/replies/zip_slip.zip | Bin 0 -> 373 bytes src/cli_plugin/install/zip.js | 187 +++++++----------- src/cli_plugin/install/zip.test.js | 23 ++- yarn.lock | 25 ++- 13 files changed, 188 insertions(+), 174 deletions(-) create mode 100644 packages/osd-opensearch/src/utils/__fixtures__/root_dir_entry.zip create mode 100644 packages/osd-opensearch/src/utils/__fixtures__/zip_slip.zip create mode 100644 src/cli_plugin/install/__fixtures__/replies/prefix_confusion.zip create mode 100644 src/cli_plugin/install/__fixtures__/replies/zip_slip.zip diff --git a/package.json b/package.json index 3d9a9e6e98e9..563d846813fc 100644 --- a/package.json +++ b/package.json @@ -224,7 +224,7 @@ "@smithy/protocol-http": "^5.3.8", "@smithy/signature-v4": "^5.3.8", "@types/ndjson": "^2.0.4", - "@types/yauzl": "^2.9.1", + "@types/yauzl": "^3.4.0", "@xyflow/react": "^12.8.2", "antlr4-c3": "^3.4.3", "antlr4ng": "^3.0.16", @@ -296,7 +296,7 @@ "use-sync-external-store": "^1.5.0", "uuid": "3.3.2", "whatwg-fetch": "^3.0.0", - "yauzl": "^2.10.0" + "yauzl": "^3.4.0" }, "optionalDependencies": { "better-sqlite3": "^12.9.0" diff --git a/packages/osd-opensearch/package.json b/packages/osd-opensearch/package.json index 80ced029d872..efb23062195c 100644 --- a/packages/osd-opensearch/package.json +++ b/packages/osd-opensearch/package.json @@ -25,7 +25,7 @@ "simple-git": "^3.36.0", "tar-fs": "^2.1.4", "tree-kill": "^1.2.2", - "yauzl": "^2.10.0" + "yauzl": "^3.4.0" }, "devDependencies": { "@osd/babel-preset": "1.0.0", diff --git a/packages/osd-opensearch/src/utils/__fixtures__/root_dir_entry.zip b/packages/osd-opensearch/src/utils/__fixtures__/root_dir_entry.zip new file mode 100644 index 0000000000000000000000000000000000000000..20e51e4824bedb6e6a73f2e88c8637a458726bf9 GIT binary patch literal 464 zcmWIWW@Zs#fB;1(4WT%IR8f9@NlIpsegIBY{79;bOOsF)udTWl)3!{&j1{N|gawck zr)B1(>XlTKWTfWgk@Tw}NSrMA8B^KQFboBsB%3w>-ZnCndm}kx7IZw;zB8 z0D%C*e@76F@DXlZAU{C>NS7Lr3DX7lAwn}YKf<&(Fa{%OhWQxT!PvZu(A|cl8^iMf S-mGjOr7S@B14thNaTowdA5+c% literal 0 HcmV?d00001 diff --git a/packages/osd-opensearch/src/utils/__fixtures__/zip_slip.zip b/packages/osd-opensearch/src/utils/__fixtures__/zip_slip.zip new file mode 100644 index 0000000000000000000000000000000000000000..cb08be1a7260727ab3bb12e748d55cb3c440e372 GIT binary patch literal 145 zcmWIWW@Zs#fB;1Xce`IDoInl;3j=XcettGj6>QGZ`2f7(py7CIxu2vVo)+fzT01TY)$X0IK~NQUCw| literal 0 HcmV?d00001 diff --git a/packages/osd-opensearch/src/utils/decompress.js b/packages/osd-opensearch/src/utils/decompress.js index 88b3753d8e42..282aabd763b8 100644 --- a/packages/osd-opensearch/src/utils/decompress.js +++ b/packages/osd-opensearch/src/utils/decompress.js @@ -30,6 +30,7 @@ const fs = require('fs'); const path = require('path'); +const { pipeline } = require('stream/promises'); const yauzl = require('yauzl'); const zlib = require('zlib'); @@ -47,54 +48,35 @@ function decompressTarball(archive, dirPath) { }); } -function decompressZip(input, output) { - fs.mkdirSync(output, { recursive: true }); - return new Promise((resolve, reject) => { - yauzl.open(input, { lazyEntries: true }, (err, zipfile) => { - if (err) { - reject(err); - } - - zipfile.readEntry(); - - zipfile.on('close', () => { - resolve(); - }); - - zipfile.on('error', (err) => { - reject(err); - }); +async function decompressZip(input, output) { + const resolvedOutput = path.resolve(output); + fs.mkdirSync(resolvedOutput, { recursive: true }); + const zipfile = await yauzl.openPromise(input); + for await (const entry of zipfile.eachEntry()) { + // Strip the leading root-directory segment (all supported archives have one) + const zipPath = entry.fileName.split(/\/|\\/).slice(1).join(path.sep); + const resolvedPath = path.resolve(resolvedOutput, zipPath); - zipfile.on('entry', (entry) => { - const zipPath = entry.fileName.split(/\/|\\/).slice(1).join(path.sep); - const fileName = path.resolve(output, zipPath); + // Guard against zip-slip for both files and directories + if (resolvedPath !== resolvedOutput && !resolvedPath.startsWith(resolvedOutput + path.sep)) { + throw new Error(`Zip slip detected: ${entry.fileName}`); + } - if (/\/$/.test(entry.fileName)) { - fs.mkdirSync(fileName, { recursive: true }); - zipfile.readEntry(); - } else { - // file entry - zipfile.openReadStream(entry, (err, readStream) => { - if (err) { - reject(err); - } - - readStream.on('end', () => { - zipfile.readEntry(); - }); - - readStream.pipe(fs.createWriteStream(fileName)); - }); - } - }); - }); - }); + if (entry.fileName.endsWith('/')) { + fs.mkdirSync(resolvedPath, { recursive: true }); + } else { + // ensure parent directory exists + fs.mkdirSync(path.dirname(resolvedPath), { recursive: true }); + const readStream = await zipfile.openReadStreamPromise(entry); + await pipeline(readStream, fs.createWriteStream(resolvedPath)); + } + } } exports.decompress = async function (input, output) { const ext = path.extname(input); - switch (path.extname(input)) { + switch (ext) { case '.zip': await decompressZip(input, output); break; diff --git a/packages/osd-opensearch/src/utils/decompress.test.js b/packages/osd-opensearch/src/utils/decompress.test.js index bf30b49eebaa..e245648e938b 100644 --- a/packages/osd-opensearch/src/utils/decompress.test.js +++ b/packages/osd-opensearch/src/utils/decompress.test.js @@ -65,3 +65,24 @@ test('tar strips root directory', async () => { await decompress(tarGzSnapshot, path.resolve(opensearchFolder, 'foo')); expect(fs.readdirSync(path.resolve(opensearchFolder, 'foo/bin'))).toContain('opensearch'); }); + +test('zip with explicit root directory entry decompresses without false zip-slip error', async () => { + // root_dir_entry.zip has entries: rootdir/, rootdir/subdir/, rootdir/file.txt, rootdir/subdir/nested.txt + // The leading path segment is stripped, so the root dir entry resolves to the output dir itself. + // This must not throw "Zip slip detected". + const archive = path.resolve(fixturesFolder, 'root_dir_entry.zip'); + const outDir = path.resolve(opensearchFolder, 'root_dir_out'); + await expect(decompress(archive, outDir)).resolves.toBeUndefined(); + expect(fs.readFileSync(path.resolve(outDir, 'file.txt'), 'utf8')).toBe('hello'); + expect(fs.readFileSync(path.resolve(outDir, 'subdir/nested.txt'), 'utf8')).toBe('world'); +}); + +test('zip rejects zip-slip path traversal attempts', async () => { + const archive = path.resolve(fixturesFolder, 'zip_slip.zip'); + const outDir = path.resolve(opensearchFolder, 'slip_out'); + // yauzl v3 may itself reject traversal paths before our guard fires; + // either rejection is acceptable — both protect against zip-slip. + await expect(decompress(archive, outDir)).rejects.toThrow( + /Zip slip detected|invalid relative path/i + ); +}); diff --git a/packages/osd-plugin-helpers/package.json b/packages/osd-plugin-helpers/package.json index 2a776228a11c..350709ff1b58 100644 --- a/packages/osd-plugin-helpers/package.json +++ b/packages/osd-plugin-helpers/package.json @@ -27,9 +27,9 @@ "vinyl-fs": "^3.0.3" }, "devDependencies": { - "@types/extract-zip": "^1.6.2", "@types/gulp-zip": "^4.0.1", "@types/inquirer": "^7.3.1", - "extract-zip": "^2.0.1" + "@types/yauzl": "^3.4.0", + "yauzl": "^3.4.0" } } diff --git a/packages/osd-plugin-helpers/src/integration_tests/build.test.ts b/packages/osd-plugin-helpers/src/integration_tests/build.test.ts index bd967c1c2053..a29b22630a0f 100644 --- a/packages/osd-plugin-helpers/src/integration_tests/build.test.ts +++ b/packages/osd-plugin-helpers/src/integration_tests/build.test.ts @@ -30,14 +30,15 @@ import Path from 'path'; import Fs from 'fs'; +import { pipeline } from 'stream/promises'; import execa from 'execa'; import { REPO_ROOT, standardize } from '@osd/cross-platform'; import { createStripAnsiSerializer, createReplaceSerializer } from '@osd/dev-utils'; -import extract from 'extract-zip'; import del from 'del'; import globby from 'globby'; import loadJsonFile from 'load-json-file'; +import { openPromise } from 'yauzl'; const OPENSEARCH_DASHBOARDS_VERSION = '1.0.0'; const OPENSEARCH_DASHBOARDS_VERSION_X = '1.0.0.x'; @@ -58,6 +59,31 @@ expect.addSnapshotSerializer(createReplaceSerializer(/\d+(\.\d+)?[sm]/g, '