obsidian-dev-utils 48.1.2 → 48.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/dist/lib/cjs/AbortController.cjs +1 -1
- package/dist/lib/cjs/Array.cjs +1 -1
- package/dist/lib/cjs/Async.cjs +5 -3
- package/dist/lib/cjs/Async.d.cts +28 -19
- package/dist/lib/cjs/AsyncEvents.cjs +1 -1
- package/dist/lib/cjs/Blob.cjs +4 -5
- package/dist/lib/cjs/CssClass.cjs +1 -1
- package/dist/lib/cjs/Debug.cjs +2 -2
- package/dist/lib/cjs/DebugController.cjs +2 -2
- package/dist/lib/cjs/Enum.cjs +5 -12
- package/dist/lib/cjs/Error.cjs +6 -5
- package/dist/lib/cjs/Function.cjs +1 -1
- package/dist/lib/cjs/HTMLElement.cjs +1 -1
- package/dist/lib/cjs/Library.cjs +2 -2
- package/dist/lib/cjs/ObjectUtils.cjs +16 -8
- package/dist/lib/cjs/ObjectUtils.d.cts +17 -13
- package/dist/lib/cjs/Path.cjs +1 -1
- package/dist/lib/cjs/RegExp.cjs +4 -2
- package/dist/lib/cjs/ScriptUtils/CliUtils.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/CodeGenerator.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/ESLint/ESLint.cjs +4 -5
- package/dist/lib/cjs/ScriptUtils/ESLint/eslint.config.cjs +5 -3
- package/dist/lib/cjs/ScriptUtils/ESLint/index.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/Exec.cjs +2 -2
- package/dist/lib/cjs/ScriptUtils/Exec.d.cts +6 -6
- package/dist/lib/cjs/ScriptUtils/Fs.cjs +2 -2
- package/dist/lib/cjs/ScriptUtils/Fs.d.cts +7 -7
- package/dist/lib/cjs/ScriptUtils/JSON.cjs +2 -2
- package/dist/lib/cjs/ScriptUtils/JSON.d.cts +1 -1
- package/dist/lib/cjs/ScriptUtils/NodeModules.cjs +2 -2
- package/dist/lib/cjs/ScriptUtils/Npm.cjs +6 -6
- package/dist/lib/cjs/ScriptUtils/Npm.d.cts +2 -2
- package/dist/lib/cjs/ScriptUtils/NpmPublish.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/NpmRun.cjs +13 -4
- package/dist/lib/cjs/ScriptUtils/NpmRun.d.cts +7 -0
- package/dist/lib/cjs/ScriptUtils/ObsidianDevUtilsRepoPaths.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/Root.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/build.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/cli.cjs +2 -2
- package/dist/lib/cjs/ScriptUtils/esbuild/Dependency.cjs +4 -4
- package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.cjs +12 -12
- package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.d.cts +4 -4
- package/dist/lib/cjs/ScriptUtils/esbuild/changeExtensionPlugin.cjs +2 -2
- package/dist/lib/cjs/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.cjs +2 -2
- package/dist/lib/cjs/ScriptUtils/esbuild/customEsbuildOptionsPlugin.cjs +2 -2
- package/dist/lib/cjs/ScriptUtils/esbuild/fixEsmPlugin.cjs +2 -2
- package/dist/lib/cjs/ScriptUtils/esbuild/fixSourceMapsPlugin.cjs +2 -2
- package/dist/lib/cjs/ScriptUtils/esbuild/index.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/esbuild/preprocessPlugin.cjs +16 -3
- package/dist/lib/cjs/ScriptUtils/esbuild/renameCssPlugin.cjs +2 -2
- package/dist/lib/cjs/ScriptUtils/esbuild/svelteWrapperPlugin.cjs +2 -2
- package/dist/lib/cjs/ScriptUtils/format.cjs +5 -8
- package/dist/lib/cjs/ScriptUtils/index.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/markdownlint/index.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint-cli2-config.cjs +2 -2
- package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint.cjs +4 -5
- package/dist/lib/cjs/ScriptUtils/spellcheck.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/version.cjs +13 -11
- package/dist/lib/cjs/String.cjs +2 -2
- package/dist/lib/cjs/Transformers/DateTransformer.cjs +1 -1
- package/dist/lib/cjs/Transformers/DurationTransformer.cjs +1 -1
- package/dist/lib/cjs/Transformers/GroupTransformer.cjs +5 -7
- package/dist/lib/cjs/Transformers/MapTransformer.cjs +1 -1
- package/dist/lib/cjs/Transformers/SetTransformer.cjs +1 -1
- package/dist/lib/cjs/Transformers/SkipPrivatePropertyTransformer.cjs +1 -1
- package/dist/lib/cjs/Transformers/Transformer.cjs +2 -2
- package/dist/lib/cjs/Transformers/Transformer.d.cts +1 -1
- package/dist/lib/cjs/Transformers/TwoWayMapTransformer.cjs +1 -1
- package/dist/lib/cjs/Transformers/TypedTransformer.cjs +1 -1
- package/dist/lib/cjs/Transformers/index.cjs +1 -1
- package/dist/lib/cjs/TwoWayMap.cjs +1 -1
- package/dist/lib/cjs/Type.cjs +14 -34
- package/dist/lib/cjs/Type.d.cts +52 -73
- package/dist/lib/cjs/TypeGuards.cjs +156 -0
- package/dist/lib/cjs/TypeGuards.d.cts +47 -0
- package/dist/lib/cjs/ValueProvider.cjs +1 -1
- package/dist/lib/cjs/codemirror/StateFieldSpec.cjs +2 -2
- package/dist/lib/cjs/codemirror/index.cjs +1 -1
- package/dist/lib/cjs/index.cjs +5 -2
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/App.cjs +2 -2
- package/dist/lib/cjs/obsidian/AsyncWithNotice.cjs +2 -2
- package/dist/lib/cjs/obsidian/AsyncWithNotice.d.cts +11 -11
- package/dist/lib/cjs/obsidian/AttachmentPath.cjs +2 -2
- package/dist/lib/cjs/obsidian/AttachmentPath.d.cts +23 -23
- package/dist/lib/cjs/obsidian/Backlink.cjs +4 -4
- package/dist/lib/cjs/obsidian/Backlink.d.cts +6 -6
- package/dist/lib/cjs/obsidian/Callout.cjs +4 -4
- package/dist/lib/cjs/obsidian/Callout.d.cts +6 -6
- package/dist/lib/cjs/obsidian/CodeBlockMarkdownInformation.cjs +2 -2
- package/dist/lib/cjs/obsidian/Commands/AbstractFileCommandBase.cjs +2 -2
- package/dist/lib/cjs/obsidian/Commands/AbstractFileCommandBase.d.cts +7 -7
- package/dist/lib/cjs/obsidian/Commands/CommandBase.cjs +4 -5
- package/dist/lib/cjs/obsidian/Commands/CommandBase.d.cts +4 -4
- package/dist/lib/cjs/obsidian/Commands/EditorCommandBase.cjs +2 -2
- package/dist/lib/cjs/obsidian/Commands/EditorCommandBase.d.cts +4 -4
- package/dist/lib/cjs/obsidian/Commands/FileCommandBase.cjs +2 -2
- package/dist/lib/cjs/obsidian/Commands/FolderCommandBase.cjs +2 -2
- package/dist/lib/cjs/obsidian/Commands/NonEditorCommandBase.cjs +2 -2
- package/dist/lib/cjs/obsidian/Commands/index.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/AsyncEventsComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/CheckboxComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/CodeHighlighterComponent.cjs +14 -3
- package/dist/lib/cjs/obsidian/Components/SettingComponents/CodeHighlighterComponent.d.cts +5 -0
- package/dist/lib/cjs/obsidian/Components/SettingComponents/DateComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/DateTimeComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/EmailComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/FileComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MonthComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleDropdownComponent.cjs +14 -3
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleDropdownComponent.d.cts +5 -0
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleEmailComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleFileComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleTextComponent.cjs +14 -3
- package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleTextComponent.d.cts +5 -0
- package/dist/lib/cjs/obsidian/Components/SettingComponents/NumberComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/PasswordComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/SettingComponentWrapper.cjs +4 -5
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TelephoneComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TextBasedComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TimeComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TriStateCheckboxComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedDropdownComponent.cjs +14 -3
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedDropdownComponent.d.cts +5 -0
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.cjs +14 -3
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.d.cts +5 -0
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedRangeTextComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedTextComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/UrlComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/ValidatorComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/ValueComponentWithChangeTracking.cjs +2 -2
- package/dist/lib/cjs/obsidian/Components/SettingComponents/WeekComponent.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/SettingComponents/index.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/index.cjs +1 -1
- package/dist/lib/cjs/obsidian/Dataview.cjs +4 -3
- package/dist/lib/cjs/obsidian/Dataview.d.cts +15 -15
- package/dist/lib/cjs/obsidian/DataviewLink.cjs +1 -1
- package/dist/lib/cjs/obsidian/Editor.cjs +1 -1
- package/dist/lib/cjs/obsidian/FileChange.cjs +2 -2
- package/dist/lib/cjs/obsidian/FileManager.cjs +1 -1
- package/dist/lib/cjs/obsidian/FileSystem.cjs +13 -11
- package/dist/lib/cjs/obsidian/Frontmatter.cjs +2 -2
- package/dist/lib/cjs/obsidian/Frontmatter.d.cts +1 -1
- package/dist/lib/cjs/obsidian/FrontmatterLinkCacheWithOffsets.cjs +1 -1
- package/dist/lib/cjs/obsidian/Link.cjs +24 -15
- package/dist/lib/cjs/obsidian/Link.d.cts +58 -58
- package/dist/lib/cjs/obsidian/Logger.cjs +1 -1
- package/dist/lib/cjs/obsidian/Loop.cjs +4 -2
- package/dist/lib/cjs/obsidian/Loop.d.cts +11 -11
- package/dist/lib/cjs/obsidian/Markdown.cjs +4 -5
- package/dist/lib/cjs/obsidian/Markdown.d.cts +6 -6
- package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.cjs +5 -8
- package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.d.cts +12 -12
- package/dist/lib/cjs/obsidian/MarkdownView.cjs +1 -1
- package/dist/lib/cjs/obsidian/MetadataCache.cjs +4 -6
- package/dist/lib/cjs/obsidian/MetadataCache.d.cts +1 -1
- package/dist/lib/cjs/obsidian/Modals/Alert.cjs +2 -2
- package/dist/lib/cjs/obsidian/Modals/Alert.d.cts +5 -5
- package/dist/lib/cjs/obsidian/Modals/Confirm.cjs +2 -2
- package/dist/lib/cjs/obsidian/Modals/Confirm.d.cts +6 -6
- package/dist/lib/cjs/obsidian/Modals/ModalBase.cjs +1 -1
- package/dist/lib/cjs/obsidian/Modals/Prompt.cjs +2 -2
- package/dist/lib/cjs/obsidian/Modals/Prompt.d.cts +7 -7
- package/dist/lib/cjs/obsidian/Modals/SelectItem.cjs +2 -2
- package/dist/lib/cjs/obsidian/Modals/SelectItem.d.cts +5 -5
- package/dist/lib/cjs/obsidian/Modals/index.cjs +1 -1
- package/dist/lib/cjs/obsidian/MonkeyAround.cjs +2 -2
- package/dist/lib/cjs/obsidian/ObsidianSettings.cjs +1 -1
- package/dist/lib/cjs/obsidian/Pdf.cjs +2 -2
- package/dist/lib/cjs/obsidian/Pdf.d.cts +8 -8
- package/dist/lib/cjs/obsidian/Plugin/ObsidianPluginRepoPaths.cjs +4 -2
- package/dist/lib/cjs/obsidian/Plugin/ObsidianPluginRepoPaths.d.cts +4 -0
- package/dist/lib/cjs/obsidian/Plugin/PathSettings.cjs +6 -2
- package/dist/lib/cjs/obsidian/Plugin/Plugin.cjs +1 -1
- package/dist/lib/cjs/obsidian/Plugin/PluginBase.cjs +2 -2
- package/dist/lib/cjs/obsidian/Plugin/PluginContext.cjs +1 -1
- package/dist/lib/cjs/obsidian/Plugin/PluginId.cjs +1 -1
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.cjs +2 -2
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.d.cts +1 -1
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.cjs +2 -2
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.d.cts +6 -6
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsWrapper.cjs +2 -2
- package/dist/lib/cjs/obsidian/Plugin/PluginTypesBase.cjs +2 -2
- package/dist/lib/cjs/obsidian/Plugin/index.cjs +1 -1
- package/dist/lib/cjs/obsidian/Queue.cjs +2 -2
- package/dist/lib/cjs/obsidian/Queue.d.cts +14 -14
- package/dist/lib/cjs/obsidian/React/AppContext.cjs +4 -7
- package/dist/lib/cjs/obsidian/React/index.cjs +1 -1
- package/dist/lib/cjs/obsidian/Reference.cjs +2 -2
- package/dist/lib/cjs/obsidian/RenameDeleteHandler.cjs +2 -2
- package/dist/lib/cjs/obsidian/ResourceUrl.cjs +1 -1
- package/dist/lib/cjs/obsidian/SettingEx.cjs +1 -1
- package/dist/lib/cjs/obsidian/SettingGroupEx.cjs +1 -1
- package/dist/lib/cjs/obsidian/Validation.cjs +1 -1
- package/dist/lib/cjs/obsidian/Vault.cjs +2 -2
- package/dist/lib/cjs/obsidian/Vault.d.cts +3 -3
- package/dist/lib/cjs/obsidian/VaultEx.cjs +2 -2
- package/dist/lib/cjs/obsidian/Workspace.cjs +1 -1
- package/dist/lib/cjs/obsidian/i18n/CustomTypeOptionsBase.cjs +2 -2
- package/dist/lib/cjs/obsidian/i18n/DefaultTranslationsBase.cjs +2 -2
- package/dist/lib/cjs/obsidian/i18n/i18n.cjs +14 -4
- package/dist/lib/cjs/obsidian/i18n/index.cjs +1 -1
- package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +1 -1
- package/dist/lib/cjs/obsidian/i18n/locales/index.cjs +1 -1
- package/dist/lib/cjs/obsidian/i18n/locales/translationsMap.cjs +1 -1
- package/dist/lib/cjs/obsidian/index.cjs +1 -1
- package/dist/lib/cjs/url.cjs +1 -1
- package/dist/lib/esm/Async.d.mts +28 -19
- package/dist/lib/esm/Async.mjs +4 -2
- package/dist/lib/esm/Blob.mjs +3 -4
- package/dist/lib/esm/Debug.mjs +1 -1
- package/dist/lib/esm/Enum.mjs +4 -11
- package/dist/lib/esm/Error.mjs +5 -4
- package/dist/lib/esm/Library.mjs +1 -1
- package/dist/lib/esm/ObjectUtils.d.mts +17 -13
- package/dist/lib/esm/ObjectUtils.mjs +18 -11
- package/dist/lib/esm/RegExp.mjs +3 -1
- package/dist/lib/esm/ScriptUtils/ESLint/ESLint.mjs +3 -4
- package/dist/lib/esm/ScriptUtils/ESLint/eslint.config.mjs +4 -2
- package/dist/lib/esm/ScriptUtils/Exec.d.mts +6 -6
- package/dist/lib/esm/ScriptUtils/Exec.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/Fs.d.mts +7 -7
- package/dist/lib/esm/ScriptUtils/Fs.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/JSON.d.mts +1 -1
- package/dist/lib/esm/ScriptUtils/JSON.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/NodeModules.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/Npm.d.mts +2 -2
- package/dist/lib/esm/ScriptUtils/Npm.mjs +5 -5
- package/dist/lib/esm/ScriptUtils/NpmRun.d.mts +7 -0
- package/dist/lib/esm/ScriptUtils/NpmRun.mjs +10 -2
- package/dist/lib/esm/ScriptUtils/cli.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/esbuild/Dependency.mjs +3 -3
- package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.d.mts +4 -4
- package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.mjs +11 -11
- package/dist/lib/esm/ScriptUtils/esbuild/changeExtensionPlugin.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/esbuild/customEsbuildOptionsPlugin.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/esbuild/fixEsmPlugin.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/esbuild/fixSourceMapsPlugin.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/esbuild/preprocessPlugin.mjs +3 -2
- package/dist/lib/esm/ScriptUtils/esbuild/renameCssPlugin.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/esbuild/svelteWrapperPlugin.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/format.mjs +4 -7
- package/dist/lib/esm/ScriptUtils/markdownlint/markdownlint-cli2-config.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/markdownlint/markdownlint.mjs +3 -4
- package/dist/lib/esm/ScriptUtils/version.mjs +19 -11
- package/dist/lib/esm/String.mjs +1 -1
- package/dist/lib/esm/Transformers/GroupTransformer.mjs +7 -6
- package/dist/lib/esm/Transformers/Transformer.d.mts +1 -1
- package/dist/lib/esm/Transformers/Transformer.mjs +1 -1
- package/dist/lib/esm/Type.d.mts +52 -73
- package/dist/lib/esm/Type.mjs +12 -30
- package/dist/lib/esm/TypeGuards.d.mts +47 -0
- package/dist/lib/esm/TypeGuards.mjs +47 -0
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/obsidian/App.mjs +1 -1
- package/dist/lib/esm/obsidian/AsyncWithNotice.d.mts +11 -11
- package/dist/lib/esm/obsidian/AsyncWithNotice.mjs +1 -1
- package/dist/lib/esm/obsidian/AttachmentPath.d.mts +23 -23
- package/dist/lib/esm/obsidian/AttachmentPath.mjs +1 -1
- package/dist/lib/esm/obsidian/Backlink.d.mts +6 -6
- package/dist/lib/esm/obsidian/Backlink.mjs +3 -3
- package/dist/lib/esm/obsidian/Callout.d.mts +6 -6
- package/dist/lib/esm/obsidian/Callout.mjs +3 -3
- package/dist/lib/esm/obsidian/Commands/AbstractFileCommandBase.d.mts +7 -7
- package/dist/lib/esm/obsidian/Commands/AbstractFileCommandBase.mjs +1 -1
- package/dist/lib/esm/obsidian/Commands/CommandBase.d.mts +4 -4
- package/dist/lib/esm/obsidian/Commands/CommandBase.mjs +3 -4
- package/dist/lib/esm/obsidian/Commands/EditorCommandBase.d.mts +4 -4
- package/dist/lib/esm/obsidian/Commands/EditorCommandBase.mjs +1 -1
- package/dist/lib/esm/obsidian/Commands/FileCommandBase.mjs +1 -1
- package/dist/lib/esm/obsidian/Commands/FolderCommandBase.mjs +1 -1
- package/dist/lib/esm/obsidian/Commands/NonEditorCommandBase.mjs +1 -1
- package/dist/lib/esm/obsidian/Components/SettingComponents/CodeHighlighterComponent.d.mts +5 -0
- package/dist/lib/esm/obsidian/Components/SettingComponents/CodeHighlighterComponent.mjs +13 -2
- package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleDropdownComponent.d.mts +5 -0
- package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleDropdownComponent.mjs +13 -2
- package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleTextComponent.d.mts +5 -0
- package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleTextComponent.mjs +13 -2
- package/dist/lib/esm/obsidian/Components/SettingComponents/SettingComponentWrapper.mjs +3 -4
- package/dist/lib/esm/obsidian/Components/SettingComponents/TypedDropdownComponent.d.mts +5 -0
- package/dist/lib/esm/obsidian/Components/SettingComponents/TypedDropdownComponent.mjs +13 -2
- package/dist/lib/esm/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.d.mts +5 -0
- package/dist/lib/esm/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.mjs +13 -2
- package/dist/lib/esm/obsidian/Dataview.d.mts +15 -15
- package/dist/lib/esm/obsidian/Dataview.mjs +4 -6
- package/dist/lib/esm/obsidian/FileChange.mjs +1 -1
- package/dist/lib/esm/obsidian/FileSystem.mjs +12 -10
- package/dist/lib/esm/obsidian/Frontmatter.d.mts +1 -1
- package/dist/lib/esm/obsidian/Frontmatter.mjs +1 -1
- package/dist/lib/esm/obsidian/Link.d.mts +58 -58
- package/dist/lib/esm/obsidian/Link.mjs +26 -14
- package/dist/lib/esm/obsidian/Loop.d.mts +11 -11
- package/dist/lib/esm/obsidian/Loop.mjs +3 -1
- package/dist/lib/esm/obsidian/Markdown.d.mts +6 -6
- package/dist/lib/esm/obsidian/Markdown.mjs +3 -4
- package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.d.mts +12 -12
- package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.mjs +4 -7
- package/dist/lib/esm/obsidian/MetadataCache.d.mts +1 -1
- package/dist/lib/esm/obsidian/MetadataCache.mjs +3 -5
- package/dist/lib/esm/obsidian/Modals/Alert.d.mts +5 -5
- package/dist/lib/esm/obsidian/Modals/Alert.mjs +1 -1
- package/dist/lib/esm/obsidian/Modals/Confirm.d.mts +6 -6
- package/dist/lib/esm/obsidian/Modals/Confirm.mjs +1 -1
- package/dist/lib/esm/obsidian/Modals/Prompt.d.mts +7 -7
- package/dist/lib/esm/obsidian/Modals/Prompt.mjs +1 -1
- package/dist/lib/esm/obsidian/Modals/SelectItem.d.mts +5 -5
- package/dist/lib/esm/obsidian/Modals/SelectItem.mjs +1 -1
- package/dist/lib/esm/obsidian/MonkeyAround.mjs +1 -1
- package/dist/lib/esm/obsidian/Pdf.d.mts +8 -8
- package/dist/lib/esm/obsidian/Pdf.mjs +1 -1
- package/dist/lib/esm/obsidian/Plugin/ObsidianPluginRepoPaths.d.mts +4 -0
- package/dist/lib/esm/obsidian/Plugin/ObsidianPluginRepoPaths.mjs +3 -1
- package/dist/lib/esm/obsidian/Plugin/PathSettings.mjs +5 -1
- package/dist/lib/esm/obsidian/Plugin/PluginBase.mjs +1 -1
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.d.mts +1 -1
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.mjs +1 -1
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.d.mts +6 -6
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.mjs +1 -1
- package/dist/lib/esm/obsidian/Queue.d.mts +14 -14
- package/dist/lib/esm/obsidian/Queue.mjs +1 -1
- package/dist/lib/esm/obsidian/React/AppContext.mjs +3 -6
- package/dist/lib/esm/obsidian/Reference.mjs +1 -1
- package/dist/lib/esm/obsidian/RenameDeleteHandler.mjs +1 -1
- package/dist/lib/esm/obsidian/Vault.d.mts +3 -3
- package/dist/lib/esm/obsidian/Vault.mjs +1 -1
- package/dist/lib/esm/obsidian/VaultEx.mjs +1 -1
- package/dist/lib/esm/obsidian/i18n/CustomTypeOptionsBase.mjs +1 -1
- package/dist/lib/esm/obsidian/i18n/DefaultTranslationsBase.mjs +1 -1
- package/dist/lib/esm/obsidian/i18n/i18n.mjs +2 -3
- package/dist/scripts/examples/format.prettier.ts +2 -3
- package/package.json +10 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
const globalThisRecord = globalThis;
|
|
7
|
+
const globalThisRecord = (0, _ObjectUtils.castTo)(globalThis);
|
|
8
8
|
globalThisRecord['__name'] ??= name;
|
|
9
9
|
const originalRequire = require;
|
|
10
10
|
if (originalRequire && !originalRequire.__isPatched) {
|
package/dist/lib/cjs/Array.cjs
CHANGED
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
const globalThisRecord = globalThis;
|
|
7
|
+
const globalThisRecord = (0, _ObjectUtils.castTo)(globalThis);
|
|
8
8
|
globalThisRecord['__name'] ??= name;
|
|
9
9
|
const originalRequire = require;
|
|
10
10
|
if (originalRequire && !originalRequire.__isPatched) {
|
package/dist/lib/cjs/Async.cjs
CHANGED
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
const globalThisRecord = globalThis;
|
|
7
|
+
const globalThisRecord = (0, _ObjectUtils.castTo)(globalThis);
|
|
8
8
|
globalThisRecord['__name'] ??= name;
|
|
9
9
|
const originalRequire = require;
|
|
10
10
|
if (originalRequire && !originalRequire.__isPatched) {
|
|
@@ -153,6 +153,7 @@ var import_Debug = require('./Debug.cjs');
|
|
|
153
153
|
var import_Error = require('./Error.cjs');
|
|
154
154
|
var import_Function = require('./Function.cjs');
|
|
155
155
|
var import_ObjectUtils = require('./ObjectUtils.cjs');
|
|
156
|
+
var import_TypeGuards = require('./TypeGuards.cjs');
|
|
156
157
|
async function addErrorHandler(asyncFn, stackTrace) {
|
|
157
158
|
stackTrace ??= (0, import_Error.getStackTrace)(1);
|
|
158
159
|
try {
|
|
@@ -202,8 +203,9 @@ async function asyncMap(arr, callback) {
|
|
|
202
203
|
function convertAsyncToSync(asyncFunc, stackTrace) {
|
|
203
204
|
stackTrace ??= (0, import_Error.getStackTrace)(1);
|
|
204
205
|
return (...args) => {
|
|
206
|
+
(0, import_TypeGuards.assertNonNullable)(stackTrace);
|
|
205
207
|
const innerStackTrace = (0, import_Error.getStackTrace)(1);
|
|
206
|
-
stackTrace = `${stackTrace
|
|
208
|
+
stackTrace = `${stackTrace}
|
|
207
209
|
at --- convertAsyncToSync --- (0)
|
|
208
210
|
${innerStackTrace}`;
|
|
209
211
|
invokeAsyncSafely(() => asyncFunc(...args), stackTrace);
|
|
@@ -464,4 +466,4 @@ async function toArray(iter) {
|
|
|
464
466
|
timeout,
|
|
465
467
|
toArray
|
|
466
468
|
});
|
|
467
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL0FzeW5jLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBhc3luY2hyb25vdXMgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBhYm9ydFNpZ25hbEFueSxcbiAgYWJvcnRTaWduYWxOZXZlcixcbiAgYWJvcnRTaWduYWxUaW1lb3V0LFxuICB3YWl0Rm9yQWJvcnRcbn0gZnJvbSAnLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHtcbiAgZ2V0TGliRGVidWdnZXIsXG4gIHByaW50V2l0aFN0YWNrVHJhY2Vcbn0gZnJvbSAnLi9EZWJ1Zy50cyc7XG5pbXBvcnQge1xuICBBU1lOQ19XUkFQUEVSX0VSUk9SX01FU1NBR0UsXG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZW1pdEFzeW5jRXJyb3JFdmVudCxcbiAgZ2V0U3RhY2tUcmFjZSxcbiAgcHJpbnRFcnJvcixcbiAgU2lsZW50RXJyb3Jcbn0gZnJvbSAnLi9FcnJvci50cyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi9GdW5jdGlvbi50cyc7XG5pbXBvcnQgeyBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMgfSBmcm9tICcuL09iamVjdFV0aWxzLnRzJztcblxuLyoqXG4gKiBBIHR5cGUgcmVwcmVzZW50aW5nIGEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyBhIHtAbGluayBQcm9taXNlfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUuXG4gKi9cbmV4cG9ydCB0eXBlIFByb21pc2VSZXNvbHZlPFQ+ID0gdW5kZWZpbmVkIGV4dGVuZHMgVCA/ICh2YWx1ZT86IFByb21pc2VMaWtlPFQ+IHwgVCkgPT4gdm9pZFxuICA6ICh2YWx1ZTogUHJvbWlzZUxpa2U8VD4gfCBUKSA9PiB2b2lkO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZXRyeVdpdGhUaW1lb3V0fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXRyeU9wdGlvbnMge1xuICAvKipcbiAgICogQSBhYm9ydCBzaWduYWwgdG8gY2FuY2VsIHRoZSByZXRyeSBvcGVyYXRpb24uXG4gICAqL1xuICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBBIGRlbGF5IGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHJldHJ5IGF0dGVtcHRzLlxuICAgKi9cbiAgcmV0cnlEZWxheUluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJldHJ5IHRoZSBmdW5jdGlvbiBvbiBlcnJvci5cbiAgICovXG4gIHNob3VsZFJldHJ5T25FcnJvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgbWF4aW11bSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBnaXZpbmcgdXAgb24gcmV0cnlpbmcuXG4gICAqL1xuICB0aW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQWRkcyBhbiBlcnJvciBoYW5kbGVyIHRvIGEge0BsaW5rIFByb21pc2V9IHRoYXQgY2F0Y2hlcyBhbnkgZXJyb3JzIGFuZCBlbWl0cyBhbiBhc3luYyBlcnJvciBldmVudC5cbiAqXG4gKiBAcGFyYW0gYXN5bmNGbiAtIFRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gYWRkIGFuIGVycm9yIGhhbmRsZXIgdG8uXG4gKiBAcGFyYW0gc3RhY2tUcmFjZSAtIFRoZSBzdGFjayB0cmFjZSBvZiB0aGUgc291cmNlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gY29tcGxldGVzIG9yIGVtaXRzIGFzeW5jIGVycm9yIGV2ZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkRXJyb3JIYW5kbGVyKGFzeW5jRm46ICgpID0+IFByb21pc2U8dW5rbm93bj4sIHN0YWNrVHJhY2U/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgc3RhY2tUcmFjZSA/Pz0gZ2V0U3RhY2tUcmFjZSgxKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBhc3luY0ZuKCk7XG4gIH0gY2F0Y2ggKGFzeW5jRXJyb3IpIHtcbiAgICBjb25zdCB3cmFwcGVkRXJyb3IgPSBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKEFTWU5DX1dSQVBQRVJfRVJST1JfTUVTU0FHRSwgc3RhY2tUcmFjZSwgYXN5bmNFcnJvcik7XG4gICAgaWYgKGhhbmRsZVNpbGVudEVycm9yKHdyYXBwZWRFcnJvcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZW1pdEFzeW5jRXJyb3JFdmVudCh3cmFwcGVkRXJyb3IpO1xuICB9XG59XG5cbi8qKlxuICogRmlsdGVycyBhbiBhcnJheSBhc3luY2hyb25vdXNseSwga2VlcGluZyBvbmx5IHRoZSBlbGVtZW50cyB0aGF0IHNhdGlzZnkgdGhlIHByb3ZpZGVkIHByZWRpY2F0ZSBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBpbiB0aGUgaW5wdXQgYXJyYXkuXG4gKiBAcGFyYW0gYXJyIC0gVGhlIGFycmF5IHRvIGZpbHRlci5cbiAqIEBwYXJhbSBwcmVkaWNhdGUgLSBUaGUgcHJlZGljYXRlIGZ1bmN0aW9uIHRvIHRlc3QgZWFjaCBlbGVtZW50LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGFuIGFycmF5IG9mIGVsZW1lbnRzIHRoYXQgc2F0aXNmeSB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXN5bmNGaWx0ZXI8VD4oYXJyOiBUW10sIHByZWRpY2F0ZTogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiBQcm9taXNhYmxlPGJvb2xlYW4+KTogUHJvbWlzZTxUW10+IHtcbiAgY29uc3QgYW5zOiBUW10gPSBbXTtcblxuICBjb25zdCBsZW5ndGggPSBhcnIubGVuZ3RoO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCFPYmplY3QuaGFzT3duKGFyciwgaSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW0gPSBhcnJbaV0gYXMgVDtcbiAgICBpZiAoYXdhaXQgcHJlZGljYXRlKGl0ZW0sIGksIGFycikpIHtcbiAgICAgIGFucy5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbnM7XG59XG5cbi8qKlxuICogRmlsdGVycyBhbiBhcnJheSBhc3luY2hyb25vdXNseSBpbiBwbGFjZSwga2VlcGluZyBvbmx5IHRoZSBlbGVtZW50cyB0aGF0IHNhdGlzZnkgdGhlIHByb3ZpZGVkIHByZWRpY2F0ZSBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBpbiB0aGUgaW5wdXQgYXJyYXkuXG4gKiBAcGFyYW0gYXJyIC0gVGhlIGFycmF5IHRvIGZpbHRlci5cbiAqIEBwYXJhbSBwcmVkaWNhdGUgLSBUaGUgcHJlZGljYXRlIGZ1bmN0aW9uIHRvIHRlc3QgZWFjaCBlbGVtZW50LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBhcnJheSBpcyBmaWx0ZXJlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jRmlsdGVySW5QbGFjZTxUPihhcnI6IFRbXSwgcHJlZGljYXRlOiAodmFsdWU6IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiBUW10pID0+IFByb21pc2FibGU8Ym9vbGVhbj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgbGVuZ3RoID0gYXJyLmxlbmd0aDtcbiAgbGV0IHdyaXRlSW5kZXggPSAwO1xuICBmb3IgKGxldCByZWFkSW5kZXggPSAwOyByZWFkSW5kZXggPCBsZW5ndGg7IHJlYWRJbmRleCsrKSB7XG4gICAgaWYgKCFPYmplY3QuaGFzT3duKGFyciwgcmVhZEluZGV4KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudCA9IGFycltyZWFkSW5kZXhdIGFzIFQ7XG4gICAgaWYgKGF3YWl0IHByZWRpY2F0ZShjdXJyZW50LCByZWFkSW5kZXgsIGFycikpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF0b21pYy11cGRhdGVzIC0tIFllcywgaXQgaXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24sIGJ1dCBJIGRvbid0IGFuIGVsZWdhbnQgd2F5IHRvIGZpeCBpdC5cbiAgICAgIGFyclt3cml0ZUluZGV4KytdID0gY3VycmVudDtcbiAgICB9XG4gIH1cbiAgYXJyLmxlbmd0aCA9IHdyaXRlSW5kZXg7XG59XG5cbi8qKlxuICogTWFwcyBvdmVyIGFuIGFycmF5IGFzeW5jaHJvbm91c2x5LCBhcHBseWluZyB0aGUgcHJvdmlkZWQgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZWFjaCBlbGVtZW50LCBhbmQgdGhlbiBmbGF0dGVucyB0aGUgcmVzdWx0cyBpbnRvIGEgc2luZ2xlIGFycmF5LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGVsZW1lbnRzIGluIHRoZSBpbnB1dCBhcnJheS5cbiAqIEB0eXBlUGFyYW0gVSAtIFRoZSB0eXBlIG9mIGVsZW1lbnRzIGluIHRoZSBvdXRwdXQgYXJyYXkuXG4gKiBAcGFyYW0gYXJyIC0gVGhlIGFycmF5IHRvIG1hcCBvdmVyIGFuZCBmbGF0dGVuLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggZWxlbWVudC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBhIGZsYXR0ZW5lZCBhcnJheSBvZiB0aGUgcmVzdWx0cyBvZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3luY0ZsYXRNYXA8VCwgVT4oYXJyOiBUW10sIGNhbGxiYWNrOiAodmFsdWU6IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiBUW10pID0+IFByb21pc2FibGU8VVtdPik6IFByb21pc2U8VVtdPiB7XG4gIHJldHVybiAoYXdhaXQgYXN5bmNNYXAoYXJyLCBjYWxsYmFjaykpLmZsYXQoKTtcbn1cblxuLyoqXG4gKiBNYXBzIG92ZXIgYW4gYXJyYXkgYXN5bmNocm9ub3VzbHksIGFwcGx5aW5nIHRoZSBwcm92aWRlZCBjYWxsYmFjayBmdW5jdGlvbiB0byBlYWNoIGVsZW1lbnQuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgZWxlbWVudHMgaW4gdGhlIGlucHV0IGFycmF5LlxuICogQHR5cGVQYXJhbSBVIC0gVGhlIHR5cGUgb2YgZWxlbWVudHMgaW4gdGhlIG91dHB1dCBhcnJheS5cbiAqIEBwYXJhbSBhcnIgLSBUaGUgYXJyYXkgdG8gbWFwIG92ZXIuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCBlbGVtZW50LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jTWFwPFQsIFU+KGFycjogVFtdLCBjYWxsYmFjazogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiBQcm9taXNhYmxlPFU+KTogUHJvbWlzZTxVW10+IHtcbiAgcmV0dXJuIGF3YWl0IHByb21pc2VBbGxTZXF1ZW50aWFsbHkoYXJyLm1hcChjYWxsYmFjaykpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0byBhIHN5bmNocm9ub3VzIG9uZSBieSBhdXRvbWF0aWNhbGx5IGhhbmRsaW5nIHRoZSBQcm9taXNlIHJlamVjdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIEFyZ3MgLSBUaGUgdHlwZXMgb2YgdGhlIGFyZ3VtZW50cyB0aGUgZnVuY3Rpb24gYWNjZXB0cy5cbiAqIEBwYXJhbSBhc3luY0Z1bmMgLSBUaGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0gc3RhY2tUcmFjZSAtIFRoZSBzdGFjayB0cmFjZSBvZiB0aGUgc291cmNlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHdyYXBzIHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gaW4gYSBzeW5jaHJvbm91cyBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0QXN5bmNUb1N5bmM8QXJncyBleHRlbmRzIHVua25vd25bXT4oYXN5bmNGdW5jOiAoLi4uYXJnczogQXJncykgPT4gUHJvbWlzZTx1bmtub3duPiwgc3RhY2tUcmFjZT86IHN0cmluZyk6ICguLi5hcmdzOiBBcmdzKSA9PiB2b2lkIHtcbiAgc3RhY2tUcmFjZSA/Pz0gZ2V0U3RhY2tUcmFjZSgxKTtcbiAgcmV0dXJuICguLi5hcmdzOiBBcmdzKTogdm9pZCA9PiB7XG4gICAgY29uc3QgaW5uZXJTdGFja1RyYWNlID0gZ2V0U3RhY2tUcmFjZSgxKTtcbiAgICBzdGFja1RyYWNlID0gYCR7c3RhY2tUcmFjZSA/PyAnJ31cXG4gICAgYXQgLS0tIGNvbnZlcnRBc3luY1RvU3luYyAtLS0gKDApXFxuJHtpbm5lclN0YWNrVHJhY2V9YDtcbiAgICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiBhc3luY0Z1bmMoLi4uYXJncyksIHN0YWNrVHJhY2UpO1xuICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gYW4gYXN5bmNocm9ub3VzIG9uZSBieSB3cmFwcGluZyBpdCBpbiBhIHtAbGluayBQcm9taXNlfS5cbiAqXG4gKiBAdHlwZVBhcmFtIEFyZ3MgLSBUaGUgdHlwZXMgb2YgdGhlIGFyZ3VtZW50cyB0aGUgZnVuY3Rpb24gYWNjZXB0cy5cbiAqIEB0eXBlUGFyYW0gUmVzdWx0IC0gVGhlIHR5cGUgb2YgdGhlIGZ1bmN0aW9uJ3MgcmV0dXJuIHZhbHVlLlxuICogQHBhcmFtIHN5bmNGbiAtIFRoZSBzeW5jaHJvbm91cyBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHdyYXBzIHRoZSBzeW5jaHJvbm91cyBmdW5jdGlvbiBpbiBhbiBhc3luY2hyb25vdXMgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFN5bmNUb0FzeW5jPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10sIFJlc3VsdD4oc3luY0ZuOiAoLi4uYXJnczogQXJncykgPT4gUmVzdWx0KTogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2U8UmVzdWx0PiB7XG4gIHJldHVybiBhc3luYyAoLi4uYXJnczogQXJncyk6IFByb21pc2U8UmVzdWx0PiA9PiB7XG4gICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgcmV0dXJuIHN5bmNGbiguLi5hcmdzKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBIYW5kbGVzIGEgc2lsZW50IGVycm9yLlxuICpcbiAqIEBwYXJhbSBlcnJvciAtIFRoZSBlcnJvciB0byBoYW5kbGUuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBlcnJvciBpcyBhIHNpbGVudCBlcnJvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZVNpbGVudEVycm9yKGVycm9yOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGxldCBjYXVzZSA9IGVycm9yO1xuICB3aGlsZSAoIShjYXVzZSBpbnN0YW5jZW9mIFNpbGVudEVycm9yKSkge1xuICAgIGlmICghKGNhdXNlIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY2F1c2UgPSBjYXVzZS5jYXVzZTtcbiAgfVxuXG4gIGdldExpYkRlYnVnZ2VyKCdBc3luYzpoYW5kbGVTaWxlbnRFcnJvcicpKGVycm9yKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogSWdub3JlcyBhbiBlcnJvciB0aGF0IGlzIHRocm93biBieSBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHByb21pc2UgLSBUaGUgcHJvbWlzZSB0byBpZ25vcmUgdGhlIGVycm9yIG9mLlxuICogQHBhcmFtIGZhbGxiYWNrVmFsdWUgLSBBbHdheXMgYHVuZGVmaW5lZGAuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBjb21wbGV0ZXMgb3IgZmFpbHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpZ25vcmVFcnJvcihwcm9taXNlOiBQcm9taXNlPHVua25vd24+LCBmYWxsYmFja1ZhbHVlPzogdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPjtcbi8qKlxuICogSW52b2tlcyBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24gYW5kIHJldHVybnMgYSBmYWxsYmFjayB2YWx1ZSBpZiBhbiBlcnJvciBpcyB0aHJvd24uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24uXG4gKiBAcGFyYW0gcHJvbWlzZSAtIFRoZSBwcm9taXNlIHRvIGlnbm9yZSB0aGUgZXJyb3Igb2YuXG4gKiBAcGFyYW0gZmFsbGJhY2tWYWx1ZSAtIFRoZSB2YWx1ZSB0byByZXR1cm4gaWYgYW4gZXJyb3IgaXMgdGhyb3duLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIG9yIHRoZSBmYWxsYmFjayB2YWx1ZSBpZiBhbiBlcnJvciBpcyB0aHJvd24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpZ25vcmVFcnJvcjxUPihwcm9taXNlOiBQcm9taXNlPFQ+LCBmYWxsYmFja1ZhbHVlOiBUKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IGlnbm9yZUVycm9yRGVidWdnZXIgPSBnZXRMaWJEZWJ1Z2dlcignQXN5bmM6aWdub3JlRXJyb3InKTtcbiAgY29uc3Qgc3RhY2tUcmFjZSA9IGdldFN0YWNrVHJhY2UoMSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHByb21pc2U7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZ25vcmVFcnJvckRlYnVnZ2VyKCdJZ25vcmVkIGVycm9yJywgbmV3IEN1c3RvbVN0YWNrVHJhY2VFcnJvcignSWdub3JlZCBlcnJvcicsIHN0YWNrVHJhY2UsIGUpKTtcbiAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEludm9rZXMgYSB7QGxpbmsgUHJvbWlzZX0gYW5kIHNhZmVseSBoYW5kbGVzIGFueSBlcnJvcnMgYnkgY2F0Y2hpbmcgdGhlbSBhbmQgZW1pdHRpbmcgYW4gYXN5bmMgZXJyb3IgZXZlbnQuXG4gKlxuICogQHBhcmFtIGFzeW5jRm4gLSBUaGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGludm9rZSBzYWZlbHkuXG4gKiBAcGFyYW0gc3RhY2tUcmFjZSAtIFRoZSBzdGFjayB0cmFjZSBvZiB0aGUgc291cmNlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlQXN5bmNTYWZlbHkoYXN5bmNGbjogKCkgPT4gUHJvbWlzZTx1bmtub3duPiwgc3RhY2tUcmFjZT86IHN0cmluZyk6IHZvaWQge1xuICBzdGFja1RyYWNlID8/PSBnZXRTdGFja1RyYWNlKDEpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdm9pZCAtLSBXZSBuZWVkIHRvIGZpcmUtYW5kLWZvcmdldC5cbiAgdm9pZCBhZGRFcnJvckhhbmRsZXIoYXN5bmNGbiwgc3RhY2tUcmFjZSk7XG59XG5cbi8qKlxuICogSW52b2tlcyBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24gYWZ0ZXIgYSBkZWxheS5cbiAqXG4gKiBAcGFyYW0gYXN5bmNGbiAtIFRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHBhcmFtIGRlbGF5SW5NaWxsaXNlY29uZHMgLSBUaGUgZGVsYXkgaW4gbWlsbGlzZWNvbmRzLlxuICogQHBhcmFtIHN0YWNrVHJhY2UgLSBUaGUgc3RhY2sgdHJhY2Ugb2YgdGhlIHNvdXJjZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gbGlzdGVuIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlQXN5bmNTYWZlbHlBZnRlckRlbGF5KFxuICBhc3luY0ZuOiAoYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKSA9PiBQcm9taXNhYmxlPHZvaWQ+LFxuICBkZWxheUluTWlsbGlzZWNvbmRzID0gMCxcbiAgc3RhY2tUcmFjZT86IHN0cmluZyxcbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuKTogdm9pZCB7XG4gIGFib3J0U2lnbmFsID8/PSBhYm9ydFNpZ25hbE5ldmVyKCk7XG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gIHN0YWNrVHJhY2UgPz89IGdldFN0YWNrVHJhY2UoMSk7XG4gIGludm9rZUFzeW5jU2FmZWx5KGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBzbGVlcChkZWxheUluTWlsbGlzZWNvbmRzLCBhYm9ydFNpZ25hbCwgdHJ1ZSk7XG4gICAgYXdhaXQgYXN5bmNGbihhYm9ydFNpZ25hbCk7XG4gIH0sIHN0YWNrVHJhY2UpO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGFzeW5jIGZ1bmN0aW9ucyBzZXF1ZW50aWFsbHkuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIGFzeW5jRm5zIC0gVGhlIGFzeW5jIGZ1bmN0aW9ucyB0byBleGVjdXRlIHNlcXVlbnRpYWxseS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBhcnJheSBvZiB0aGUgcmVzdWx0cyBvZiB0aGUgYXN5bmMgZnVuY3Rpb25zLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvbWlzZUFsbEFzeW5jRm5zU2VxdWVudGlhbGx5PFQ+KGFzeW5jRm5zOiAoKCkgPT4gUHJvbWlzYWJsZTxUPilbXSk6IFByb21pc2U8VFtdPiB7XG4gIGNvbnN0IHJlc3VsdHM6IFRbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGFzeW5jRm4gb2YgYXN5bmNGbnMpIHtcbiAgICByZXN1bHRzLnB1c2goYXdhaXQgYXN5bmNGbigpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBwcm9taXNlcyBzZXF1ZW50aWFsbHkuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIHByb21pc2VzIC0gVGhlIHByb21pc2VzIHRvIGV4ZWN1dGUgc2VxdWVudGlhbGx5LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIHRoZSBwcm9taXNlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb21pc2VBbGxTZXF1ZW50aWFsbHk8VD4ocHJvbWlzZXM6IFByb21pc2FibGU8VD5bXSk6IFByb21pc2U8VFtdPiB7XG4gIHJldHVybiBhd2FpdCBwcm9taXNlQWxsQXN5bmNGbnNTZXF1ZW50aWFsbHkocHJvbWlzZXMubWFwKChwcm9taXNlKSA9PiAoKSA9PiBwcm9taXNlKSk7XG59XG5cbmNvbnN0IHRlcm1pbmF0ZVJldHJ5RXJyb3JzID0gbmV3IFdlYWtTZXQ8RXJyb3I+KCk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJldHJ5V2l0aFRpbWVvdXR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5V2l0aFRpbWVvdXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIHRpbWVvdXQuXG4gICAqXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIHRpbWVvdXQgY29udGV4dC5cbiAgICovXG4gIG9uVGltZW91dD8odGhpczogdm9pZCwgY29udGV4dDogVGltZW91dENvbnRleHQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgb3BlcmF0aW9uRm4odGhpczogdm9pZCwgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKTogUHJvbWlzYWJsZTxib29sZWFuPjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbi5cbiAgICovXG4gIG9wZXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXRyeSBvcHRpb25zLlxuICAgKi9cbiAgcmV0cnlPcHRpb25zPzogUmV0cnlPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdHJhY2Ugb2YgdGhlIHNvdXJjZSBmdW5jdGlvbi5cbiAgICovXG4gIHN0YWNrVHJhY2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJ1bldpdGhUaW1lb3V0fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5XaXRoVGltZW91dE9wdGlvbnM8UmVzdWx0PiB7XG4gIC8qKlxuICAgKiBUaGUgY29udGV4dCBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICBjb250ZXh0PzogdW5rbm93bjtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgdGltZW91dC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgdGltZW91dCBjb250ZXh0LlxuICAgKi9cbiAgb25UaW1lb3V0Pyh0aGlzOiB2b2lkLCBjb250ZXh0OiBUaW1lb3V0Q29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpb24gZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgb3BlcmF0aW9uRm4odGhpczogdm9pZCwgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKTogUHJvbWlzYWJsZTxSZXN1bHQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgb3BlcmF0aW9uLlxuICAgKi9cbiAgb3BlcmF0aW9uTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gICAqL1xuICBzdGFja1RyYWNlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIHRvIHdhaXQgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgdGltZW91dEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29udGV4dCBwcm92aWRlZCB0byB0aGUgdGltZW91dCBoYW5kbGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVvdXRDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIG9wZXJhdGlvbiBzdGFydGVkLlxuICAgKi9cbiAgZHVyYXRpb246IG51bWJlcjtcbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGNvbXBsZXRlcy5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgb3BlcmF0aW9uIGNvbXBsZXRlcy5cbiAgICovXG4gIG9uT3BlcmF0aW9uQ29tcGxldGVkKGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZDtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24uXG4gICAqL1xuICBvcGVyYXRpb25OYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUZXJtaW5hdGVzIHRoZSBvcGVyYXRpb24gdGhhdCB0aW1lZCBvdXQuXG4gICAqL1xuICB0ZXJtaW5hdGVPcGVyYXRpb24oKTogdm9pZDtcbn1cblxuLyoqXG4gKiBNYXJrcyBhbiBlcnJvciB0byB0ZXJtaW5hdGUgcmV0cnkgbG9naWMuXG4gKlxuICogQHBhcmFtIGVycm9yIC0gVGhlIGVycm9yIHRvIG1hcmsgdG8gdGVybWluYXRlIHJldHJ5IGxvZ2ljLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFya3NBc1Rlcm1pbmF0ZVJldHJ5KGVycm9yOiBFcnJvcik6IHZvaWQge1xuICB0ZXJtaW5hdGVSZXRyeUVycm9ycy5hZGQoZXJyb3IpO1xufVxuXG4vKipcbiAqIEFuIGFzeW5jIGZ1bmN0aW9uIHRoYXQgbmV2ZXIgZW5kcy5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IG5ldmVyIHJlc29sdmVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbmV2ZXJFbmRzKCk6IFByb21pc2U8bmV2ZXI+IHtcbiAgYXdhaXQgbmV3IFByb21pc2UoKCkgPT4ge1xuICAgIG5vb3AoKTtcbiAgfSk7XG4gIHRocm93IG5ldyBFcnJvcignU2hvdWxkIG5ldmVyIGhhcHBlbicpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG5leHQgdGljay5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBuZXh0IHRpY2sgaXMgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbmV4dFRpY2tBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG5leHQgcXVldWUgbWljcm90YXNrLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG5leHQgcXVldWUgbWljcm90YXNrIGlzIGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHF1ZXVlTWljcm90YXNrQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbmV4dCByZXF1ZXN0IGFuaW1hdGlvbiBmcmFtZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBuZXh0IHJlcXVlc3QgYW5pbWF0aW9uIGZyYW1lIGlzIGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZXRyaWVzIHRoZSBwcm92aWRlZCBmdW5jdGlvbiB1bnRpbCBpdCByZXR1cm5zIHRydWUgb3IgdGhlIHRpbWVvdXQgaXMgcmVhY2hlZC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBvciByZWplY3RzIHdoZW4gdGhlIHRpbWVvdXQgaXMgcmVhY2hlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldHJ5V2l0aFRpbWVvdXQob3B0aW9uczogUmV0cnlXaXRoVGltZW91dE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmV0cnlXaXRoVGltZW91dERlYnVnZ2VyID0gZ2V0TGliRGVidWdnZXIoJ0FzeW5jOnJldHJ5V2l0aFRpbWVvdXQnKTtcbiAgY29uc3Qgc3RhY2tUcmFjZSA9IG9wdGlvbnMuc3RhY2tUcmFjZSA/PyBnZXRTdGFja1RyYWNlKDEpO1xuICBjb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlMgPSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICByZXRyeURlbGF5SW5NaWxsaXNlY29uZHM6IDEwMCxcbiAgICBzaG91bGRSZXRyeU9uRXJyb3I6IGZhbHNlLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgdGltZW91dEluTWlsbGlzZWNvbmRzOiA1MDAwXG4gIH07XG4gIGNvbnN0IGZ1bGxPcHRpb25zID0geyAuLi5ERUZBVUxUX1JFVFJZX09QVElPTlMsIC4uLm9wdGlvbnMucmV0cnlPcHRpb25zIH07XG4gIGZ1bGxPcHRpb25zLmFib3J0U2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIGF3YWl0IHJ1bldpdGhUaW1lb3V0KG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxSdW5XaXRoVGltZW91dE9wdGlvbnM8dm9pZD4+KHtcbiAgICBjb250ZXh0OiB7IG9wZXJhdGlvbk5hbWU6IG9wdGlvbnMub3BlcmF0aW9uTmFtZSA/PyAnJywgcmV0cnlGbjogb3B0aW9ucy5vcGVyYXRpb25GbiB9LFxuICAgIG9uVGltZW91dDogb3B0aW9ucy5vblRpbWVvdXQsXG4gICAgYXN5bmMgb3BlcmF0aW9uRm4oYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBjb25zdCBjb21iaW5lZEFib3J0U2lnbmFsID0gYWJvcnRTaWduYWxBbnkoZnVsbE9wdGlvbnMuYWJvcnRTaWduYWwsIGFib3J0U2lnbmFsKTtcbiAgICAgIGNvbWJpbmVkQWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgIGxldCBhdHRlbXB0ID0gMDtcbiAgICAgIHdoaWxlICghY29tYmluZWRBYm9ydFNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIGF0dGVtcHQrKztcbiAgICAgICAgbGV0IGlzU3VjY2VzczogYm9vbGVhbjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpc1N1Y2Nlc3MgPSBhd2FpdCBvcHRpb25zLm9wZXJhdGlvbkZuKGNvbWJpbmVkQWJvcnRTaWduYWwpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uIC0tIEl0IG1pZ2h0IGNoYW5nZWQgaW5zaWRlIGBmbigpYC4gRVNMaW50IG1pc3Rha2VubHkgZG9lcyBub3QgcmVjb2duaXplIGl0LlxuICAgICAgICAgIGlmIChjb21iaW5lZEFib3J0U2lnbmFsLmFib3J0ZWQgfHwgIWZ1bGxPcHRpb25zLnNob3VsZFJldHJ5T25FcnJvciB8fCB0ZXJtaW5hdGVSZXRyeUVycm9ycy5oYXMoZXJyb3IgYXMgRXJyb3IpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKCdyZXRyeVdpdGhUaW1lb3V0IGZhaWxlZCcsIHN0YWNrVHJhY2UsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJpbnRFcnJvcihlcnJvcik7XG4gICAgICAgICAgaXNTdWNjZXNzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU3VjY2Vzcykge1xuICAgICAgICAgIHByaW50V2l0aFN0YWNrVHJhY2UocmV0cnlXaXRoVGltZW91dERlYnVnZ2VyLCBzdGFja1RyYWNlLCBgUmV0cnkgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBhZnRlciAke1N0cmluZyhhdHRlbXB0KX0gYXR0ZW1wdHNgLCB7XG4gICAgICAgICAgICBvcGVyYXRpb25Gbjogb3B0aW9ucy5vcGVyYXRpb25GbixcbiAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IG9wdGlvbnMub3BlcmF0aW9uTmFtZSA/PyAnJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaW50V2l0aFN0YWNrVHJhY2UoXG4gICAgICAgICAgcmV0cnlXaXRoVGltZW91dERlYnVnZ2VyLFxuICAgICAgICAgIHN0YWNrVHJhY2UsXG4gICAgICAgICAgYFJldHJ5IGF0dGVtcHQgJHtTdHJpbmcoYXR0ZW1wdCl9IGNvbXBsZXRlZCB1bnN1Y2Nlc3NmdWxseS4gVHJ5aW5nIGFnYWluIGluICR7U3RyaW5nKGZ1bGxPcHRpb25zLnJldHJ5RGVsYXlJbk1pbGxpc2Vjb25kcyl9IG1pbGxpc2Vjb25kc2AsXG4gICAgICAgICAge1xuICAgICAgICAgICAgb3BlcmF0aW9uRm46IG9wdGlvbnMub3BlcmF0aW9uRm4sXG4gICAgICAgICAgICBvcGVyYXRpb25OYW1lOiBvcHRpb25zLm9wZXJhdGlvbk5hbWUgPz8gJydcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgYXdhaXQgc2xlZXAoZnVsbE9wdGlvbnMucmV0cnlEZWxheUluTWlsbGlzZWNvbmRzLCBhYm9ydFNpZ25hbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvcGVyYXRpb25OYW1lOiBvcHRpb25zLm9wZXJhdGlvbk5hbWUgPz8gJycsXG4gICAgc3RhY2tUcmFjZSxcbiAgICB0aW1lb3V0SW5NaWxsaXNlY29uZHM6IGZ1bGxPcHRpb25zLnRpbWVvdXRJbk1pbGxpc2Vjb25kc1xuICB9KSk7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBmdW5jdGlvbiB3aXRoIGEgdGltZW91dC4gSWYgdGhlIGZ1bmN0aW9uIGRvZXMgbm90IGNvbXBsZXRlIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUsIGl0IGlzIGNvbnNpZGVyZWQgdG8gaGF2ZSB0aW1lZCBvdXQuXG4gKlxuICogSWYgYERFQlVHPW9ic2lkaWFuLWRldi11dGlsczpBc3luYzpydW5XaXRoVGltZW91dGAgaXMgc2V0LCB0aGUgZXhlY3V0aW9uIGlzIG5vdCB0ZXJtaW5hdGVkIGFmdGVyIHRoZSB0aW1lb3V0IGFuZCB0aGUgZnVuY3Rpb24gaXMgYWxsb3dlZCB0byBydW4gaW5kZWZpbml0ZWx5LlxuICpcbiAqIEB0eXBlUGFyYW0gUmVzdWx0IC0gVGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBmcm9tIHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIG9yIHJlamVjdHMgaWYgaXQgdGltZXMgb3V0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV2l0aFRpbWVvdXQ8UmVzdWx0PihvcHRpb25zOiBSdW5XaXRoVGltZW91dE9wdGlvbnM8UmVzdWx0Pik6IFByb21pc2U8UmVzdWx0PiB7XG4gIGNvbnN0IHN0YWNrVHJhY2UgPSBvcHRpb25zLnN0YWNrVHJhY2UgPz8gZ2V0U3RhY2tUcmFjZSgxKTtcbiAgY29uc3Qgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG5cbiAgY29uc3QgcnVuQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBjb25zdCB0aW1lb3V0QWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gIGxldCByZXN1bHQ6IG51bGwgfCBSZXN1bHQgPSBudWxsO1xuICBsZXQgaGFzUmVzdWx0ID0gZmFsc2U7XG4gIGxldCBpc0NvbXBsZXRlZCA9IGZhbHNlO1xuICBjb25zdCBydW5XaXRoVGltZW91dERlYnVnZ2VyID0gZ2V0TGliRGVidWdnZXIoJ0FzeW5jOnJ1bldpdGhUaW1lb3V0Jyk7XG4gIGNvbnN0IG9uVGltZW91dCA9IG9wdGlvbnMub25UaW1lb3V0ID8/IGRlZmF1bHRPblRpbWVvdXQ7XG5cbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtydW4oKSwgaW5uZXJUaW1lb3V0KCldKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gSXQgbWlnaHQgY2hhbmdlZCBpbnNpZGUgYHJ1bigpYC4gRVNMaW50IG1pc3Rha2VubHkgZG9lcyBub3QgcmVjb2duaXplIGl0LlxuICBpZiAoaGFzUmVzdWx0KSB7XG4gICAgcmV0dXJuIHJlc3VsdCBhcyBSZXN1bHQ7XG4gIH1cblxuICB0aHJvdyBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKCdSdW4gd2l0aCB0aW1lb3V0IGZhaWxlZCcsIHN0YWNrVHJhY2UsIHJ1bkFib3J0Q29udHJvbGxlci5zaWduYWwucmVhc29uKTtcblxuICBhc3luYyBmdW5jdGlvbiBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IG9wdGlvbnMub3BlcmF0aW9uRm4ocnVuQWJvcnRDb250cm9sbGVyLnNpZ25hbCk7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IE1hdGgudHJ1bmMocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWUpO1xuICAgICAgcHJpbnRXaXRoU3RhY2tUcmFjZShydW5XaXRoVGltZW91dERlYnVnZ2VyLCBzdGFja1RyYWNlLCBgRXhlY3V0aW9uIHRpbWU6ICR7U3RyaW5nKGR1cmF0aW9uKX0gbWlsbGlzZWNvbmRzYCwge1xuICAgICAgICBjb250ZXh0OiBvcHRpb25zLmNvbnRleHQsXG4gICAgICAgIG9wZXJhdGlvbkZuOiBvcHRpb25zLm9wZXJhdGlvbkZuLFxuICAgICAgICBvcGVyYXRpb25OYW1lOiBvcHRpb25zLm9wZXJhdGlvbk5hbWUgPz8gJydcbiAgICAgIH0pO1xuICAgICAgaGFzUmVzdWx0ID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBydW5BYm9ydENvbnRyb2xsZXIuYWJvcnQoZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlzQ29tcGxldGVkID0gdHJ1ZTtcbiAgICAgIHRpbWVvdXRBYm9ydENvbnRyb2xsZXIuYWJvcnQobmV3IEVycm9yKCdDb21wbGV0ZWQnKSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gaW5uZXJUaW1lb3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHNsZWVwKG9wdGlvbnMudGltZW91dEluTWlsbGlzZWNvbmRzLCB0aW1lb3V0QWJvcnRDb250cm9sbGVyLnNpZ25hbCk7XG5cbiAgICBpZiAoaXNDb21wbGV0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZHVyYXRpb24gPSBNYXRoLnRydW5jKHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lKTtcbiAgICBwcmludFdpdGhTdGFja1RyYWNlKHJ1bldpdGhUaW1lb3V0RGVidWdnZXIsIHN0YWNrVHJhY2UsIGBUaW1lZCBvdXQgYWZ0ZXIgJHtTdHJpbmcoZHVyYXRpb24pfSBtaWxsaXNlY29uZHNgLCB7XG4gICAgICBjb250ZXh0OiBvcHRpb25zLmNvbnRleHQsXG4gICAgICBvcGVyYXRpb25Gbjogb3B0aW9ucy5vcGVyYXRpb25GbixcbiAgICAgIG9wZXJhdGlvbk5hbWU6IG9wdGlvbnMub3BlcmF0aW9uTmFtZSA/PyAnJ1xuICAgIH0pO1xuXG4gICAgY29uc3QgdGltZW91dENvbnRleHQ6IFRpbWVvdXRDb250ZXh0ID0gbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFRpbWVvdXRDb250ZXh0Pih7XG4gICAgICBkdXJhdGlvbixcbiAgICAgIG9uT3BlcmF0aW9uQ29tcGxldGVkKGNhbGxiYWNrKSB7XG4gICAgICAgIHRpbWVvdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgY2FsbGJhY2spO1xuICAgICAgfSxcbiAgICAgIG9wZXJhdGlvbk5hbWU6IG9wdGlvbnMub3BlcmF0aW9uTmFtZSA/PyAnJyxcbiAgICAgIHRlcm1pbmF0ZU9wZXJhdGlvbigpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYFRpbWVkIG91dCBhZnRlciAke1N0cmluZyhkdXJhdGlvbil9IG1pbGxpc2Vjb25kc2ApO1xuICAgICAgICBydW5BYm9ydENvbnRyb2xsZXIuYWJvcnQoZXJyb3IpO1xuICAgICAgICB0aW1lb3V0QWJvcnRDb250cm9sbGVyLmFib3J0KGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG9uVGltZW91dCh0aW1lb3V0Q29udGV4dCk7XG4gICAgYXdhaXQgd2FpdEZvckFib3J0KHRpbWVvdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlZmF1bHRPblRpbWVvdXQoY3R4OiBUaW1lb3V0Q29udGV4dCk6IHZvaWQge1xuICAgIGN0eC50ZXJtaW5hdGVPcGVyYXRpb24oKTtcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgdGhlIG5leHQgc2V0IGltbWVkaWF0ZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBuZXh0IHNldCBpbW1lZGlhdGUgaXMgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0SW1tZWRpYXRlQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHNldEltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGF5cyBleGVjdXRpb24gZm9yIGEgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHBhcmFtIGRlbGF5IC0gVGhlIHRpbWUgdG8gd2FpdCBpbiBtaWxsaXNlY29uZHMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIGFmdGVyIHRoZSBzcGVjaWZpZWQgZGVsYXkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRUaW1lb3V0QXN5bmMoZGVsYXk/OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBzZXRUaW1lb3V0KHJlc29sdmUsIGRlbGF5KTtcbiAgfSk7XG59XG5cbi8qKlxuICogRGVsYXlzIGV4ZWN1dGlvbiBmb3IgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0gbWlsbGlzZWNvbmRzIC0gVGhlIHRpbWUgdG8gd2FpdCBpbiBtaWxsaXNlY29uZHMuXG4gKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGxpc3RlbiB0by5cbiAqIEBwYXJhbSBzaG91bGRUaHJvd09uQWJvcnQgLSBXaGV0aGVyIHRvIHRocm93IGFuIGVycm9yIGlmIHRoZSBhYm9ydCBzaWduYWwgaXMgYWJvcnRlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgYWZ0ZXIgdGhlIHNwZWNpZmllZCBkZWxheS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNsZWVwKG1pbGxpc2Vjb25kczogbnVtYmVyLCBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsLCBzaG91bGRUaHJvd09uQWJvcnQ/OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHdhaXRGb3JBYm9ydChhYm9ydFNpZ25hbEFueShhYm9ydFNpZ25hbCwgYWJvcnRTaWduYWxUaW1lb3V0KG1pbGxpc2Vjb25kcykpKTtcbiAgaWYgKHNob3VsZFRocm93T25BYm9ydCkge1xuICAgIGFib3J0U2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHtAbGluayBQcm9taXNlfSB0aGF0IHJlamVjdHMgYWZ0ZXIgdGhlIHNwZWNpZmllZCB0aW1lb3V0IHBlcmlvZC5cbiAqXG4gKiBAcGFyYW0gdGltZW91dEluTWlsbGlzZWNvbmRzIC0gVGhlIHRpbWVvdXQgcGVyaW9kIGluIG1pbGxpc2Vjb25kcy5cbiAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gbGlzdGVuIHRvLlxuICogQHBhcmFtIHNob3VsZFRocm93T25BYm9ydCAtIFdoZXRoZXIgdG8gdGhyb3cgYW4gZXJyb3IgaWYgdGhlIGFib3J0IHNpZ25hbCBpcyBhYm9ydGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCBhbHdheXMgcmVqZWN0cyB3aXRoIGEgdGltZW91dCBlcnJvci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRpbWVvdXQodGltZW91dEluTWlsbGlzZWNvbmRzOiBudW1iZXIsIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwsIHNob3VsZFRocm93T25BYm9ydD86IGJvb2xlYW4pOiBQcm9taXNlPG5ldmVyPiB7XG4gIGF3YWl0IHNsZWVwKHRpbWVvdXRJbk1pbGxpc2Vjb25kcywgYWJvcnRTaWduYWwsIHNob3VsZFRocm93T25BYm9ydCk7XG4gIHRocm93IG5ldyBFcnJvcihgVGltZWQgb3V0IGluICR7U3RyaW5nKHRpbWVvdXRJbk1pbGxpc2Vjb25kcyl9IG1pbGxpc2Vjb25kc2ApO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIEFzeW5jSXRlcmFibGVJdGVyYXRvciB0byBhbiBhcnJheSBieSBjb25zdW1pbmcgYWxsIGl0cyBlbGVtZW50cy5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBwcm9kdWNlZCBieSB0aGUgQXN5bmNJdGVyYWJsZUl0ZXJhdG9yLlxuICogQHBhcmFtIGl0ZXIgLSBUaGUgQXN5bmNJdGVyYWJsZUl0ZXJhdG9yIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYW4gYXJyYXkgb2YgYWxsIHRoZSBlbGVtZW50cyBpbiB0aGUgQXN5bmNJdGVyYWJsZUl0ZXJhdG9yLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdG9BcnJheTxUPihpdGVyOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8VD4pOiBQcm9taXNlPFRbXT4ge1xuICBjb25zdCBhcnI6IFRbXSA9IFtdO1xuICBmb3IgYXdhaXQgKGNvbnN0IGl0ZW0gb2YgaXRlcikge1xuICAgIGFyci5wdXNoKGl0ZW0pO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG4iXSwKICAibWFwcGluZ3Mi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
|
|
469
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL0FzeW5jLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBhc3luY2hyb25vdXMgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBhYm9ydFNpZ25hbEFueSxcbiAgYWJvcnRTaWduYWxOZXZlcixcbiAgYWJvcnRTaWduYWxUaW1lb3V0LFxuICB3YWl0Rm9yQWJvcnRcbn0gZnJvbSAnLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHtcbiAgZ2V0TGliRGVidWdnZXIsXG4gIHByaW50V2l0aFN0YWNrVHJhY2Vcbn0gZnJvbSAnLi9EZWJ1Zy50cyc7XG5pbXBvcnQge1xuICBBU1lOQ19XUkFQUEVSX0VSUk9SX01FU1NBR0UsXG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZW1pdEFzeW5jRXJyb3JFdmVudCxcbiAgZ2V0U3RhY2tUcmFjZSxcbiAgcHJpbnRFcnJvcixcbiAgU2lsZW50RXJyb3Jcbn0gZnJvbSAnLi9FcnJvci50cyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi9GdW5jdGlvbi50cyc7XG5pbXBvcnQgeyBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMgfSBmcm9tICcuL09iamVjdFV0aWxzLnRzJztcbmltcG9ydCB7IGFzc2VydE5vbk51bGxhYmxlIH0gZnJvbSAnLi9UeXBlR3VhcmRzLnRzJztcblxuLyoqXG4gKiBBIHR5cGUgcmVwcmVzZW50aW5nIGEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyBhIHtAbGluayBQcm9taXNlfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUuXG4gKi9cbmV4cG9ydCB0eXBlIFByb21pc2VSZXNvbHZlPFQ+ID0gdW5kZWZpbmVkIGV4dGVuZHMgVCA/ICh2YWx1ZT86IFByb21pc2VMaWtlPFQ+IHwgVCkgPT4gdm9pZFxuICA6ICh2YWx1ZTogUHJvbWlzZUxpa2U8VD4gfCBUKSA9PiB2b2lkO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZXRyeVdpdGhUaW1lb3V0fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXRyeU9wdGlvbnMge1xuICAvKipcbiAgICogQSBhYm9ydCBzaWduYWwgdG8gY2FuY2VsIHRoZSByZXRyeSBvcGVyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBBIGRlbGF5IGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHJldHJ5IGF0dGVtcHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmV0cnlEZWxheUluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJldHJ5IHRoZSBmdW5jdGlvbiBvbiBlcnJvci5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFJldHJ5T25FcnJvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgbWF4aW11bSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBnaXZpbmcgdXAgb24gcmV0cnlpbmcuXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQWRkcyBhbiBlcnJvciBoYW5kbGVyIHRvIGEge0BsaW5rIFByb21pc2V9IHRoYXQgY2F0Y2hlcyBhbnkgZXJyb3JzIGFuZCBlbWl0cyBhbiBhc3luYyBlcnJvciBldmVudC5cbiAqXG4gKiBAcGFyYW0gYXN5bmNGbiAtIFRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gYWRkIGFuIGVycm9yIGhhbmRsZXIgdG8uXG4gKiBAcGFyYW0gc3RhY2tUcmFjZSAtIFRoZSBzdGFjayB0cmFjZSBvZiB0aGUgc291cmNlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gY29tcGxldGVzIG9yIGVtaXRzIGFzeW5jIGVycm9yIGV2ZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkRXJyb3JIYW5kbGVyKGFzeW5jRm46ICgpID0+IFByb21pc2U8dW5rbm93bj4sIHN0YWNrVHJhY2U/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgc3RhY2tUcmFjZSA/Pz0gZ2V0U3RhY2tUcmFjZSgxKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBhc3luY0ZuKCk7XG4gIH0gY2F0Y2ggKGFzeW5jRXJyb3IpIHtcbiAgICBjb25zdCB3cmFwcGVkRXJyb3IgPSBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKEFTWU5DX1dSQVBQRVJfRVJST1JfTUVTU0FHRSwgc3RhY2tUcmFjZSwgYXN5bmNFcnJvcik7XG4gICAgaWYgKGhhbmRsZVNpbGVudEVycm9yKHdyYXBwZWRFcnJvcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZW1pdEFzeW5jRXJyb3JFdmVudCh3cmFwcGVkRXJyb3IpO1xuICB9XG59XG5cbi8qKlxuICogRmlsdGVycyBhbiBhcnJheSBhc3luY2hyb25vdXNseSwga2VlcGluZyBvbmx5IHRoZSBlbGVtZW50cyB0aGF0IHNhdGlzZnkgdGhlIHByb3ZpZGVkIHByZWRpY2F0ZSBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBpbiB0aGUgaW5wdXQgYXJyYXkuXG4gKiBAcGFyYW0gYXJyIC0gVGhlIGFycmF5IHRvIGZpbHRlci5cbiAqIEBwYXJhbSBwcmVkaWNhdGUgLSBUaGUgcHJlZGljYXRlIGZ1bmN0aW9uIHRvIHRlc3QgZWFjaCBlbGVtZW50LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGFuIGFycmF5IG9mIGVsZW1lbnRzIHRoYXQgc2F0aXNmeSB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXN5bmNGaWx0ZXI8VD4oYXJyOiBUW10sIHByZWRpY2F0ZTogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiBQcm9taXNhYmxlPGJvb2xlYW4+KTogUHJvbWlzZTxUW10+IHtcbiAgY29uc3QgYW5zOiBUW10gPSBbXTtcblxuICBjb25zdCBsZW5ndGggPSBhcnIubGVuZ3RoO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCFPYmplY3QuaGFzT3duKGFyciwgaSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW0gPSBhcnJbaV0gYXMgVDtcbiAgICBpZiAoYXdhaXQgcHJlZGljYXRlKGl0ZW0sIGksIGFycikpIHtcbiAgICAgIGFucy5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbnM7XG59XG5cbi8qKlxuICogRmlsdGVycyBhbiBhcnJheSBhc3luY2hyb25vdXNseSBpbiBwbGFjZSwga2VlcGluZyBvbmx5IHRoZSBlbGVtZW50cyB0aGF0IHNhdGlzZnkgdGhlIHByb3ZpZGVkIHByZWRpY2F0ZSBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBlbGVtZW50cyBpbiB0aGUgaW5wdXQgYXJyYXkuXG4gKiBAcGFyYW0gYXJyIC0gVGhlIGFycmF5IHRvIGZpbHRlci5cbiAqIEBwYXJhbSBwcmVkaWNhdGUgLSBUaGUgcHJlZGljYXRlIGZ1bmN0aW9uIHRvIHRlc3QgZWFjaCBlbGVtZW50LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBhcnJheSBpcyBmaWx0ZXJlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jRmlsdGVySW5QbGFjZTxUPihhcnI6IFRbXSwgcHJlZGljYXRlOiAodmFsdWU6IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiBUW10pID0+IFByb21pc2FibGU8Ym9vbGVhbj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgbGVuZ3RoID0gYXJyLmxlbmd0aDtcbiAgbGV0IHdyaXRlSW5kZXggPSAwO1xuICBmb3IgKGxldCByZWFkSW5kZXggPSAwOyByZWFkSW5kZXggPCBsZW5ndGg7IHJlYWRJbmRleCsrKSB7XG4gICAgaWYgKCFPYmplY3QuaGFzT3duKGFyciwgcmVhZEluZGV4KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudCA9IGFycltyZWFkSW5kZXhdIGFzIFQ7XG4gICAgaWYgKGF3YWl0IHByZWRpY2F0ZShjdXJyZW50LCByZWFkSW5kZXgsIGFycikpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF0b21pYy11cGRhdGVzIC0tIFllcywgaXQgaXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24sIGJ1dCBJIGRvbid0IGFuIGVsZWdhbnQgd2F5IHRvIGZpeCBpdC5cbiAgICAgIGFyclt3cml0ZUluZGV4KytdID0gY3VycmVudDtcbiAgICB9XG4gIH1cbiAgYXJyLmxlbmd0aCA9IHdyaXRlSW5kZXg7XG59XG5cbi8qKlxuICogTWFwcyBvdmVyIGFuIGFycmF5IGFzeW5jaHJvbm91c2x5LCBhcHBseWluZyB0aGUgcHJvdmlkZWQgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZWFjaCBlbGVtZW50LCBhbmQgdGhlbiBmbGF0dGVucyB0aGUgcmVzdWx0cyBpbnRvIGEgc2luZ2xlIGFycmF5LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGVsZW1lbnRzIGluIHRoZSBpbnB1dCBhcnJheS5cbiAqIEB0eXBlUGFyYW0gVSAtIFRoZSB0eXBlIG9mIGVsZW1lbnRzIGluIHRoZSBvdXRwdXQgYXJyYXkuXG4gKiBAcGFyYW0gYXJyIC0gVGhlIGFycmF5IHRvIG1hcCBvdmVyIGFuZCBmbGF0dGVuLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggZWxlbWVudC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBhIGZsYXR0ZW5lZCBhcnJheSBvZiB0aGUgcmVzdWx0cyBvZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3luY0ZsYXRNYXA8VCwgVT4oYXJyOiBUW10sIGNhbGxiYWNrOiAodmFsdWU6IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiBUW10pID0+IFByb21pc2FibGU8VVtdPik6IFByb21pc2U8VVtdPiB7XG4gIHJldHVybiAoYXdhaXQgYXN5bmNNYXAoYXJyLCBjYWxsYmFjaykpLmZsYXQoKTtcbn1cblxuLyoqXG4gKiBNYXBzIG92ZXIgYW4gYXJyYXkgYXN5bmNocm9ub3VzbHksIGFwcGx5aW5nIHRoZSBwcm92aWRlZCBjYWxsYmFjayBmdW5jdGlvbiB0byBlYWNoIGVsZW1lbnQuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgZWxlbWVudHMgaW4gdGhlIGlucHV0IGFycmF5LlxuICogQHR5cGVQYXJhbSBVIC0gVGhlIHR5cGUgb2YgZWxlbWVudHMgaW4gdGhlIG91dHB1dCBhcnJheS5cbiAqIEBwYXJhbSBhcnIgLSBUaGUgYXJyYXkgdG8gbWFwIG92ZXIuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCBlbGVtZW50LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jTWFwPFQsIFU+KGFycjogVFtdLCBjYWxsYmFjazogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiBQcm9taXNhYmxlPFU+KTogUHJvbWlzZTxVW10+IHtcbiAgcmV0dXJuIGF3YWl0IHByb21pc2VBbGxTZXF1ZW50aWFsbHkoYXJyLm1hcChjYWxsYmFjaykpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0byBhIHN5bmNocm9ub3VzIG9uZSBieSBhdXRvbWF0aWNhbGx5IGhhbmRsaW5nIHRoZSBQcm9taXNlIHJlamVjdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIEFyZ3MgLSBUaGUgdHlwZXMgb2YgdGhlIGFyZ3VtZW50cyB0aGUgZnVuY3Rpb24gYWNjZXB0cy5cbiAqIEBwYXJhbSBhc3luY0Z1bmMgLSBUaGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0gc3RhY2tUcmFjZSAtIFRoZSBzdGFjayB0cmFjZSBvZiB0aGUgc291cmNlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHdyYXBzIHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gaW4gYSBzeW5jaHJvbm91cyBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0QXN5bmNUb1N5bmM8QXJncyBleHRlbmRzIHVua25vd25bXT4oYXN5bmNGdW5jOiAoLi4uYXJnczogQXJncykgPT4gUHJvbWlzZTx1bmtub3duPiwgc3RhY2tUcmFjZT86IHN0cmluZyk6ICguLi5hcmdzOiBBcmdzKSA9PiB2b2lkIHtcbiAgc3RhY2tUcmFjZSA/Pz0gZ2V0U3RhY2tUcmFjZSgxKTtcbiAgcmV0dXJuICguLi5hcmdzOiBBcmdzKTogdm9pZCA9PiB7XG4gICAgYXNzZXJ0Tm9uTnVsbGFibGUoc3RhY2tUcmFjZSk7XG4gICAgY29uc3QgaW5uZXJTdGFja1RyYWNlID0gZ2V0U3RhY2tUcmFjZSgxKTtcbiAgICBzdGFja1RyYWNlID0gYCR7c3RhY2tUcmFjZX1cXG4gICAgYXQgLS0tIGNvbnZlcnRBc3luY1RvU3luYyAtLS0gKDApXFxuJHtpbm5lclN0YWNrVHJhY2V9YDtcbiAgICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiBhc3luY0Z1bmMoLi4uYXJncyksIHN0YWNrVHJhY2UpO1xuICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gYW4gYXN5bmNocm9ub3VzIG9uZSBieSB3cmFwcGluZyBpdCBpbiBhIHtAbGluayBQcm9taXNlfS5cbiAqXG4gKiBAdHlwZVBhcmFtIEFyZ3MgLSBUaGUgdHlwZXMgb2YgdGhlIGFyZ3VtZW50cyB0aGUgZnVuY3Rpb24gYWNjZXB0cy5cbiAqIEB0eXBlUGFyYW0gUmVzdWx0IC0gVGhlIHR5cGUgb2YgdGhlIGZ1bmN0aW9uJ3MgcmV0dXJuIHZhbHVlLlxuICogQHBhcmFtIHN5bmNGbiAtIFRoZSBzeW5jaHJvbm91cyBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHdyYXBzIHRoZSBzeW5jaHJvbm91cyBmdW5jdGlvbiBpbiBhbiBhc3luY2hyb25vdXMgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFN5bmNUb0FzeW5jPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10sIFJlc3VsdD4oc3luY0ZuOiAoLi4uYXJnczogQXJncykgPT4gUmVzdWx0KTogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2U8UmVzdWx0PiB7XG4gIHJldHVybiBhc3luYyAoLi4uYXJnczogQXJncyk6IFByb21pc2U8UmVzdWx0PiA9PiB7XG4gICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgcmV0dXJuIHN5bmNGbiguLi5hcmdzKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBIYW5kbGVzIGEgc2lsZW50IGVycm9yLlxuICpcbiAqIEBwYXJhbSBlcnJvciAtIFRoZSBlcnJvciB0byBoYW5kbGUuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBlcnJvciBpcyBhIHNpbGVudCBlcnJvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZVNpbGVudEVycm9yKGVycm9yOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGxldCBjYXVzZSA9IGVycm9yO1xuICB3aGlsZSAoIShjYXVzZSBpbnN0YW5jZW9mIFNpbGVudEVycm9yKSkge1xuICAgIGlmICghKGNhdXNlIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY2F1c2UgPSBjYXVzZS5jYXVzZTtcbiAgfVxuXG4gIGdldExpYkRlYnVnZ2VyKCdBc3luYzpoYW5kbGVTaWxlbnRFcnJvcicpKGVycm9yKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogSWdub3JlcyBhbiBlcnJvciB0aGF0IGlzIHRocm93biBieSBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHByb21pc2UgLSBUaGUgcHJvbWlzZSB0byBpZ25vcmUgdGhlIGVycm9yIG9mLlxuICogQHBhcmFtIGZhbGxiYWNrVmFsdWUgLSBBbHdheXMgYHVuZGVmaW5lZGAuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBjb21wbGV0ZXMgb3IgZmFpbHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpZ25vcmVFcnJvcihwcm9taXNlOiBQcm9taXNlPHVua25vd24+LCBmYWxsYmFja1ZhbHVlPzogdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPjtcbi8qKlxuICogSW52b2tlcyBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24gYW5kIHJldHVybnMgYSBmYWxsYmFjayB2YWx1ZSBpZiBhbiBlcnJvciBpcyB0aHJvd24uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24uXG4gKiBAcGFyYW0gcHJvbWlzZSAtIFRoZSBwcm9taXNlIHRvIGlnbm9yZSB0aGUgZXJyb3Igb2YuXG4gKiBAcGFyYW0gZmFsbGJhY2tWYWx1ZSAtIFRoZSB2YWx1ZSB0byByZXR1cm4gaWYgYW4gZXJyb3IgaXMgdGhyb3duLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIG9yIHRoZSBmYWxsYmFjayB2YWx1ZSBpZiBhbiBlcnJvciBpcyB0aHJvd24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpZ25vcmVFcnJvcjxUPihwcm9taXNlOiBQcm9taXNlPFQ+LCBmYWxsYmFja1ZhbHVlOiBUKTogUHJvbWlzZTxUPjtcbi8qKlxuICogSWdub3JlcyBhbiBlcnJvciB0aGF0IGlzIHRocm93biBieSBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24uXG4gKiBAcGFyYW0gcHJvbWlzZSAtIFRoZSBwcm9taXNlIHRvIGlnbm9yZSB0aGUgZXJyb3Igb2YuXG4gKiBAcGFyYW0gZmFsbGJhY2tWYWx1ZSAtIFRoZSB2YWx1ZSB0byByZXR1cm4gaWYgYW4gZXJyb3IgaXMgdGhyb3duLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIG9yIHRoZSBmYWxsYmFjayB2YWx1ZSBpZiBhbiBlcnJvciBpcyB0aHJvd24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpZ25vcmVFcnJvcjxUPihwcm9taXNlOiBQcm9taXNlPFQ+LCBmYWxsYmFja1ZhbHVlPzogVCk6IFByb21pc2U8VCB8IHZvaWQ+IHtcbiAgY29uc3QgaWdub3JlRXJyb3JEZWJ1Z2dlciA9IGdldExpYkRlYnVnZ2VyKCdBc3luYzppZ25vcmVFcnJvcicpO1xuICBjb25zdCBzdGFja1RyYWNlID0gZ2V0U3RhY2tUcmFjZSgxKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgcHJvbWlzZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlnbm9yZUVycm9yRGVidWdnZXIoJ0lnbm9yZWQgZXJyb3InLCBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKCdJZ25vcmVkIGVycm9yJywgc3RhY2tUcmFjZSwgZSkpO1xuICAgIHJldHVybiBmYWxsYmFja1ZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogSW52b2tlcyBhIHtAbGluayBQcm9taXNlfSBhbmQgc2FmZWx5IGhhbmRsZXMgYW55IGVycm9ycyBieSBjYXRjaGluZyB0aGVtIGFuZCBlbWl0dGluZyBhbiBhc3luYyBlcnJvciBldmVudC5cbiAqXG4gKiBAcGFyYW0gYXN5bmNGbiAtIFRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gaW52b2tlIHNhZmVseS5cbiAqIEBwYXJhbSBzdGFja1RyYWNlIC0gVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VBc3luY1NhZmVseShhc3luY0ZuOiAoKSA9PiBQcm9taXNlPHVua25vd24+LCBzdGFja1RyYWNlPzogc3RyaW5nKTogdm9pZCB7XG4gIHN0YWNrVHJhY2UgPz89IGdldFN0YWNrVHJhY2UoMSk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby12b2lkIC0tIFdlIG5lZWQgdG8gZmlyZS1hbmQtZm9yZ2V0LlxuICB2b2lkIGFkZEVycm9ySGFuZGxlcihhc3luY0ZuLCBzdGFja1RyYWNlKTtcbn1cblxuLyoqXG4gKiBJbnZva2VzIGFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBhZnRlciBhIGRlbGF5LlxuICpcbiAqIEBwYXJhbSBhc3luY0ZuIC0gVGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0byBpbnZva2UuXG4gKiBAcGFyYW0gZGVsYXlJbk1pbGxpc2Vjb25kcyAtIFRoZSBkZWxheSBpbiBtaWxsaXNlY29uZHMuXG4gKiBAcGFyYW0gc3RhY2tUcmFjZSAtIFRoZSBzdGFjayB0cmFjZSBvZiB0aGUgc291cmNlIGZ1bmN0aW9uLlxuICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VBc3luY1NhZmVseUFmdGVyRGVsYXkoXG4gIGFzeW5jRm46IChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8dm9pZD4sXG4gIGRlbGF5SW5NaWxsaXNlY29uZHMgPSAwLFxuICBzdGFja1RyYWNlPzogc3RyaW5nLFxuICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4pOiB2b2lkIHtcbiAgYWJvcnRTaWduYWwgPz89IGFib3J0U2lnbmFsTmV2ZXIoKTtcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgc3RhY2tUcmFjZSA/Pz0gZ2V0U3RhY2tUcmFjZSgxKTtcbiAgaW52b2tlQXN5bmNTYWZlbHkoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHNsZWVwKGRlbGF5SW5NaWxsaXNlY29uZHMsIGFib3J0U2lnbmFsLCB0cnVlKTtcbiAgICBhd2FpdCBhc3luY0ZuKGFib3J0U2lnbmFsKTtcbiAgfSwgc3RhY2tUcmFjZSk7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYXN5bmMgZnVuY3Rpb25zIHNlcXVlbnRpYWxseS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUuXG4gKiBAcGFyYW0gYXN5bmNGbnMgLSBUaGUgYXN5bmMgZnVuY3Rpb25zIHRvIGV4ZWN1dGUgc2VxdWVudGlhbGx5LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIHRoZSBhc3luYyBmdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9taXNlQWxsQXN5bmNGbnNTZXF1ZW50aWFsbHk8VD4oYXN5bmNGbnM6ICgoKSA9PiBQcm9taXNhYmxlPFQ+KVtdKTogUHJvbWlzZTxUW10+IHtcbiAgY29uc3QgcmVzdWx0czogVFtdID0gW107XG4gIGZvciAoY29uc3QgYXN5bmNGbiBvZiBhc3luY0Zucykge1xuICAgIHJlc3VsdHMucHVzaChhd2FpdCBhc3luY0ZuKCkpO1xuICB9XG4gIHJldHVybiByZXN1bHRzO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIHByb21pc2VzIHNlcXVlbnRpYWxseS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUuXG4gKiBAcGFyYW0gcHJvbWlzZXMgLSBUaGUgcHJvbWlzZXMgdG8gZXhlY3V0ZSBzZXF1ZW50aWFsbHkuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2YgdGhlIHByb21pc2VzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvbWlzZUFsbFNlcXVlbnRpYWxseTxUPihwcm9taXNlczogUHJvbWlzYWJsZTxUPltdKTogUHJvbWlzZTxUW10+IHtcbiAgcmV0dXJuIGF3YWl0IHByb21pc2VBbGxBc3luY0Zuc1NlcXVlbnRpYWxseShwcm9taXNlcy5tYXAoKHByb21pc2UpID0+ICgpID0+IHByb21pc2UpKTtcbn1cblxuY29uc3QgdGVybWluYXRlUmV0cnlFcnJvcnMgPSBuZXcgV2Vha1NldDxFcnJvcj4oKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmV0cnlXaXRoVGltZW91dH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlXaXRoVGltZW91dE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgdGltZW91dC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgdGltZW91dCBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgb25UaW1lb3V0PzogKHRoaXM6IHZvaWQsIGNvbnRleHQ6IFRpbWVvdXRDb250ZXh0KSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uRm46ICh0aGlzOiB2b2lkLCBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmV0cnkgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHJldHJ5T3B0aW9ucz86IFJldHJ5T3B0aW9ucztcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBydW5XaXRoVGltZW91dH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuV2l0aFRpbWVvdXRPcHRpb25zPFJlc3VsdD4ge1xuICAvKipcbiAgICogVGhlIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIHRpbWVvdXQuXG4gICAqXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIHRpbWVvdXQgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IG9uVGltZW91dD86ICh0aGlzOiB2b2lkLCBjb250ZXh0OiBUaW1lb3V0Q29udGV4dCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogVGhlIG9wZXJhdGlvbiBmdW5jdGlvbiB0byBleGVjdXRlLlxuICAgKlxuICAgKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGxpc3RlbiB0by5cbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25GbjogKHRoaXM6IHZvaWQsIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCkgPT4gUHJvbWlzYWJsZTxSZXN1bHQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgb3BlcmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIHRvIHdhaXQgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29udGV4dCBwcm92aWRlZCB0byB0aGUgdGltZW91dCBoYW5kbGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVvdXRDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIG9wZXJhdGlvbiBzdGFydGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZHVyYXRpb246IG51bWJlcjtcbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGNvbXBsZXRlcy5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgb3BlcmF0aW9uIGNvbXBsZXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IG9uT3BlcmF0aW9uQ29tcGxldGVkOiAoY2FsbGJhY2s6ICgpID0+IHZvaWQpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgb3BlcmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGVybWluYXRlcyB0aGUgb3BlcmF0aW9uIHRoYXQgdGltZWQgb3V0LlxuICAgKi9cbiAgcmVhZG9ubHkgdGVybWluYXRlT3BlcmF0aW9uOiAoKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIE1hcmtzIGFuIGVycm9yIHRvIHRlcm1pbmF0ZSByZXRyeSBsb2dpYy5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgdG8gbWFyayB0byB0ZXJtaW5hdGUgcmV0cnkgbG9naWMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXJrc0FzVGVybWluYXRlUmV0cnkoZXJyb3I6IEVycm9yKTogdm9pZCB7XG4gIHRlcm1pbmF0ZVJldHJ5RXJyb3JzLmFkZChlcnJvcik7XG59XG5cbi8qKlxuICogQW4gYXN5bmMgZnVuY3Rpb24gdGhhdCBuZXZlciBlbmRzLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgbmV2ZXIgcmVzb2x2ZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBuZXZlckVuZHMoKTogUHJvbWlzZTxuZXZlcj4ge1xuICBhd2FpdCBuZXcgUHJvbWlzZSgoKSA9PiB7XG4gICAgbm9vcCgpO1xuICB9KTtcbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEJ5IGRlc2lnbiwgdGhpcyBmdW5jdGlvbiBuZXZlciByZXNvbHZlcy4gKi9cbiAgdGhyb3cgbmV3IEVycm9yKCdTaG91bGQgbmV2ZXIgaGFwcGVuJyk7XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG59XG5cbi8qKlxuICogR2V0cyB0aGUgbmV4dCB0aWNrLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG5leHQgdGljayBpcyBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBuZXh0VGlja0FzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbmV4dCBxdWV1ZSBtaWNyb3Rhc2suXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbmV4dCBxdWV1ZSBtaWNyb3Rhc2sgaXMgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcXVldWVNaWNyb3Rhc2tBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBuZXh0IHJlcXVlc3QgYW5pbWF0aW9uIGZyYW1lLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG5leHQgcmVxdWVzdCBhbmltYXRpb24gZnJhbWUgaXMgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHJpZXMgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIHVudGlsIGl0IHJldHVybnMgdHJ1ZSBvciB0aGUgdGltZW91dCBpcyByZWFjaGVkLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIG9yIHJlamVjdHMgd2hlbiB0aGUgdGltZW91dCBpcyByZWFjaGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmV0cnlXaXRoVGltZW91dChvcHRpb25zOiBSZXRyeVdpdGhUaW1lb3V0T3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZXRyeVdpdGhUaW1lb3V0RGVidWdnZXIgPSBnZXRMaWJEZWJ1Z2dlcignQXN5bmM6cmV0cnlXaXRoVGltZW91dCcpO1xuICBjb25zdCBzdGFja1RyYWNlID0gb3B0aW9ucy5zdGFja1RyYWNlID8/IGdldFN0YWNrVHJhY2UoMSk7XG4gIGNvbnN0IERFRkFVTFRfUkVUUllfT1BUSU9OUyA9IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIHJldHJ5RGVsYXlJbk1pbGxpc2Vjb25kczogMTAwLFxuICAgIHNob3VsZFJldHJ5T25FcnJvcjogZmFsc2UsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICB0aW1lb3V0SW5NaWxsaXNlY29uZHM6IDUwMDBcbiAgfTtcbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7IC4uLkRFRkFVTFRfUkVUUllfT1BUSU9OUywgLi4ub3B0aW9ucy5yZXRyeU9wdGlvbnMgfTtcbiAgZnVsbE9wdGlvbnMuYWJvcnRTaWduYWw/LnRocm93SWZBYm9ydGVkKCk7XG5cbiAgYXdhaXQgcnVuV2l0aFRpbWVvdXQobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFJ1bldpdGhUaW1lb3V0T3B0aW9uczx2b2lkPj4oe1xuICAgIGNvbnRleHQ6IHsgb3BlcmF0aW9uTmFtZTogb3B0aW9ucy5vcGVyYXRpb25OYW1lID8/ICcnLCByZXRyeUZuOiBvcHRpb25zLm9wZXJhdGlvbkZuIH0sXG4gICAgb25UaW1lb3V0OiBvcHRpb25zLm9uVGltZW91dCxcbiAgICBhc3luYyBvcGVyYXRpb25GbihhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGNvbnN0IGNvbWJpbmVkQWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbEFueShmdWxsT3B0aW9ucy5hYm9ydFNpZ25hbCwgYWJvcnRTaWduYWwpO1xuICAgICAgY29tYmluZWRBYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgbGV0IGF0dGVtcHQgPSAwO1xuICAgICAgd2hpbGUgKCFjb21iaW5lZEFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgYXR0ZW1wdCsrO1xuICAgICAgICBsZXQgaXNTdWNjZXNzOiBib29sZWFuO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlzU3VjY2VzcyA9IGF3YWl0IG9wdGlvbnMub3BlcmF0aW9uRm4oY29tYmluZWRBYm9ydFNpZ25hbCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gSXQgbWlnaHQgY2hhbmdlZCBpbnNpZGUgYGZuKClgLiBFU0xpbnQgbWlzdGFrZW5seSBkb2VzIG5vdCByZWNvZ25pemUgaXQuXG4gICAgICAgICAgaWYgKGNvbWJpbmVkQWJvcnRTaWduYWwuYWJvcnRlZCB8fCAhZnVsbE9wdGlvbnMuc2hvdWxkUmV0cnlPbkVycm9yIHx8IHRlcm1pbmF0ZVJldHJ5RXJyb3JzLmhhcyhlcnJvciBhcyBFcnJvcikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3IoJ3JldHJ5V2l0aFRpbWVvdXQgZmFpbGVkJywgc3RhY2tUcmFjZSwgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwcmludEVycm9yKGVycm9yKTtcbiAgICAgICAgICBpc1N1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNTdWNjZXNzKSB7XG4gICAgICAgICAgcHJpbnRXaXRoU3RhY2tUcmFjZShyZXRyeVdpdGhUaW1lb3V0RGVidWdnZXIsIHN0YWNrVHJhY2UsIGBSZXRyeSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGFmdGVyICR7U3RyaW5nKGF0dGVtcHQpfSBhdHRlbXB0c2AsIHtcbiAgICAgICAgICAgIG9wZXJhdGlvbkZuOiBvcHRpb25zLm9wZXJhdGlvbkZuLFxuICAgICAgICAgICAgb3BlcmF0aW9uTmFtZTogb3B0aW9ucy5vcGVyYXRpb25OYW1lID8/ICcnXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJpbnRXaXRoU3RhY2tUcmFjZShcbiAgICAgICAgICByZXRyeVdpdGhUaW1lb3V0RGVidWdnZXIsXG4gICAgICAgICAgc3RhY2tUcmFjZSxcbiAgICAgICAgICBgUmV0cnkgYXR0ZW1wdCAke1N0cmluZyhhdHRlbXB0KX0gY29tcGxldGVkIHVuc3VjY2Vzc2Z1bGx5LiBUcnlpbmcgYWdhaW4gaW4gJHtTdHJpbmcoZnVsbE9wdGlvbnMucmV0cnlEZWxheUluTWlsbGlzZWNvbmRzKX0gbWlsbGlzZWNvbmRzYCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvcGVyYXRpb25Gbjogb3B0aW9ucy5vcGVyYXRpb25GbixcbiAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IG9wdGlvbnMub3BlcmF0aW9uTmFtZSA/PyAnJ1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBhd2FpdCBzbGVlcChmdWxsT3B0aW9ucy5yZXRyeURlbGF5SW5NaWxsaXNlY29uZHMsIGFib3J0U2lnbmFsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9wZXJhdGlvbk5hbWU6IG9wdGlvbnMub3BlcmF0aW9uTmFtZSA/PyAnJyxcbiAgICBzdGFja1RyYWNlLFxuICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogZnVsbE9wdGlvbnMudGltZW91dEluTWlsbGlzZWNvbmRzXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBhIGZ1bmN0aW9uIHdpdGggYSB0aW1lb3V0LiBJZiB0aGUgZnVuY3Rpb24gZG9lcyBub3QgY29tcGxldGUgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSwgaXQgaXMgY29uc2lkZXJlZCB0byBoYXZlIHRpbWVkIG91dC5cbiAqXG4gKiBJZiBgREVCVUc9b2JzaWRpYW4tZGV2LXV0aWxzOkFzeW5jOnJ1bldpdGhUaW1lb3V0YCBpcyBzZXQsIHRoZSBleGVjdXRpb24gaXMgbm90IHRlcm1pbmF0ZWQgYWZ0ZXIgdGhlIHRpbWVvdXQgYW5kIHRoZSBmdW5jdGlvbiBpcyBhbGxvd2VkIHRvIHJ1biBpbmRlZmluaXRlbHkuXG4gKlxuICogQHR5cGVQYXJhbSBSZXN1bHQgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IGZyb20gdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gb3IgcmVqZWN0cyBpZiBpdCB0aW1lcyBvdXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5XaXRoVGltZW91dDxSZXN1bHQ+KG9wdGlvbnM6IFJ1bldpdGhUaW1lb3V0T3B0aW9uczxSZXN1bHQ+KTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgY29uc3Qgc3RhY2tUcmFjZSA9IG9wdGlvbnMuc3RhY2tUcmFjZSA/PyBnZXRTdGFja1RyYWNlKDEpO1xuICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICBjb25zdCBydW5BYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIGNvbnN0IHRpbWVvdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgbGV0IHJlc3VsdDogbnVsbCB8IFJlc3VsdCA9IG51bGw7XG4gIGxldCBoYXNSZXN1bHQgPSBmYWxzZTtcbiAgbGV0IGlzQ29tcGxldGVkID0gZmFsc2U7XG4gIGNvbnN0IHJ1bldpdGhUaW1lb3V0RGVidWdnZXIgPSBnZXRMaWJEZWJ1Z2dlcignQXN5bmM6cnVuV2l0aFRpbWVvdXQnKTtcbiAgY29uc3Qgb25UaW1lb3V0ID0gb3B0aW9ucy5vblRpbWVvdXQgPz8gZGVmYXVsdE9uVGltZW91dDtcblxuICBhd2FpdCBQcm9taXNlLnJhY2UoW3J1bigpLCBpbm5lclRpbWVvdXQoKV0pO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvbiAtLSBJdCBtaWdodCBjaGFuZ2VkIGluc2lkZSBgcnVuKClgLiBFU0xpbnQgbWlzdGFrZW5seSBkb2VzIG5vdCByZWNvZ25pemUgaXQuXG4gIGlmIChoYXNSZXN1bHQpIHtcbiAgICByZXR1cm4gcmVzdWx0IGFzIFJlc3VsdDtcbiAgfVxuXG4gIHRocm93IG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3IoJ1J1biB3aXRoIHRpbWVvdXQgZmFpbGVkJywgc3RhY2tUcmFjZSwgcnVuQWJvcnRDb250cm9sbGVyLnNpZ25hbC5yZWFzb24pO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgb3B0aW9ucy5vcGVyYXRpb25GbihydW5BYm9ydENvbnRyb2xsZXIuc2lnbmFsKTtcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gTWF0aC50cnVuYyhwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSk7XG4gICAgICBwcmludFdpdGhTdGFja1RyYWNlKHJ1bldpdGhUaW1lb3V0RGVidWdnZXIsIHN0YWNrVHJhY2UsIGBFeGVjdXRpb24gdGltZTogJHtTdHJpbmcoZHVyYXRpb24pfSBtaWxsaXNlY29uZHNgLCB7XG4gICAgICAgIGNvbnRleHQ6IG9wdGlvbnMuY29udGV4dCxcbiAgICAgICAgb3BlcmF0aW9uRm46IG9wdGlvbnMub3BlcmF0aW9uRm4sXG4gICAgICAgIG9wZXJhdGlvbk5hbWU6IG9wdGlvbnMub3BlcmF0aW9uTmFtZSA/PyAnJ1xuICAgICAgfSk7XG4gICAgICBoYXNSZXN1bHQgPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJ1bkFib3J0Q29udHJvbGxlci5hYm9ydChlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaXNDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgdGltZW91dEFib3J0Q29udHJvbGxlci5hYm9ydChuZXcgRXJyb3IoJ0NvbXBsZXRlZCcpKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBpbm5lclRpbWVvdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc2xlZXAob3B0aW9ucy50aW1lb3V0SW5NaWxsaXNlY29uZHMsIHRpbWVvdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsKTtcblxuICAgIGlmIChpc0NvbXBsZXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkdXJhdGlvbiA9IE1hdGgudHJ1bmMocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWUpO1xuICAgIHByaW50V2l0aFN0YWNrVHJhY2UocnVuV2l0aFRpbWVvdXREZWJ1Z2dlciwgc3RhY2tUcmFjZSwgYFRpbWVkIG91dCBhZnRlciAke1N0cmluZyhkdXJhdGlvbil9IG1pbGxpc2Vjb25kc2AsIHtcbiAgICAgIGNvbnRleHQ6IG9wdGlvbnMuY29udGV4dCxcbiAgICAgIG9wZXJhdGlvbkZuOiBvcHRpb25zLm9wZXJhdGlvbkZuLFxuICAgICAgb3BlcmF0aW9uTmFtZTogb3B0aW9ucy5vcGVyYXRpb25OYW1lID8/ICcnXG4gICAgfSk7XG5cbiAgICBjb25zdCB0aW1lb3V0Q29udGV4dDogVGltZW91dENvbnRleHQgPSBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8VGltZW91dENvbnRleHQ+KHtcbiAgICAgIGR1cmF0aW9uLFxuICAgICAgb25PcGVyYXRpb25Db21wbGV0ZWQoY2FsbGJhY2spIHtcbiAgICAgICAgdGltZW91dEFib3J0Q29udHJvbGxlci5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBjYWxsYmFjayk7XG4gICAgICB9LFxuICAgICAgb3BlcmF0aW9uTmFtZTogb3B0aW9ucy5vcGVyYXRpb25OYW1lID8/ICcnLFxuICAgICAgdGVybWluYXRlT3BlcmF0aW9uKCkge1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgVGltZWQgb3V0IGFmdGVyICR7U3RyaW5nKGR1cmF0aW9uKX0gbWlsbGlzZWNvbmRzYCk7XG4gICAgICAgIHJ1bkFib3J0Q29udHJvbGxlci5hYm9ydChlcnJvcik7XG4gICAgICAgIHRpbWVvdXRBYm9ydENvbnRyb2xsZXIuYWJvcnQoZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgb25UaW1lb3V0KHRpbWVvdXRDb250ZXh0KTtcbiAgICBhd2FpdCB3YWl0Rm9yQWJvcnQodGltZW91dEFib3J0Q29udHJvbGxlci5zaWduYWwpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVmYXVsdE9uVGltZW91dChjdHg6IFRpbWVvdXRDb250ZXh0KTogdm9pZCB7XG4gICAgY3R4LnRlcm1pbmF0ZU9wZXJhdGlvbigpO1xuICB9XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbmV4dCBzZXQgaW1tZWRpYXRlLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG5leHQgc2V0IGltbWVkaWF0ZSBpcyBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRJbW1lZGlhdGVBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogRGVsYXlzIGV4ZWN1dGlvbiBmb3IgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0gZGVsYXkgLSBUaGUgdGltZSB0byB3YWl0IGluIG1pbGxpc2Vjb25kcy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgYWZ0ZXIgdGhlIHNwZWNpZmllZCBkZWxheS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldFRpbWVvdXRBc3luYyhkZWxheT86IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgZGVsYXkpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBEZWxheXMgZXhlY3V0aW9uIGZvciBhIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSBtaWxsaXNlY29uZHMgLSBUaGUgdGltZSB0byB3YWl0IGluIG1pbGxpc2Vjb25kcy5cbiAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gbGlzdGVuIHRvLlxuICogQHBhcmFtIHNob3VsZFRocm93T25BYm9ydCAtIFdoZXRoZXIgdG8gdGhyb3cgYW4gZXJyb3IgaWYgdGhlIGFib3J0IHNpZ25hbCBpcyBhYm9ydGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBhZnRlciB0aGUgc3BlY2lmaWVkIGRlbGF5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2xlZXAobWlsbGlzZWNvbmRzOiBudW1iZXIsIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwsIHNob3VsZFRocm93T25BYm9ydD86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgd2FpdEZvckFib3J0KGFib3J0U2lnbmFsQW55KGFib3J0U2lnbmFsLCBhYm9ydFNpZ25hbFRpbWVvdXQobWlsbGlzZWNvbmRzKSkpO1xuICBpZiAoc2hvdWxkVGhyb3dPbkFib3J0KSB7XG4gICAgYWJvcnRTaWduYWw/LnRocm93SWZBYm9ydGVkKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVqZWN0cyBhZnRlciB0aGUgc3BlY2lmaWVkIHRpbWVvdXQgcGVyaW9kLlxuICpcbiAqIEBwYXJhbSB0aW1lb3V0SW5NaWxsaXNlY29uZHMgLSBUaGUgdGltZW91dCBwZXJpb2QgaW4gbWlsbGlzZWNvbmRzLlxuICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gKiBAcGFyYW0gc2hvdWxkVGhyb3dPbkFib3J0IC0gV2hldGhlciB0byB0aHJvdyBhbiBlcnJvciBpZiB0aGUgYWJvcnQgc2lnbmFsIGlzIGFib3J0ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IGFsd2F5cyByZWplY3RzIHdpdGggYSB0aW1lb3V0IGVycm9yLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGltZW91dCh0aW1lb3V0SW5NaWxsaXNlY29uZHM6IG51bWJlciwgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCwgc2hvdWxkVGhyb3dPbkFib3J0PzogYm9vbGVhbik6IFByb21pc2U8bmV2ZXI+IHtcbiAgYXdhaXQgc2xlZXAodGltZW91dEluTWlsbGlzZWNvbmRzLCBhYm9ydFNpZ25hbCwgc2hvdWxkVGhyb3dPbkFib3J0KTtcbiAgdGhyb3cgbmV3IEVycm9yKGBUaW1lZCBvdXQgaW4gJHtTdHJpbmcodGltZW91dEluTWlsbGlzZWNvbmRzKX0gbWlsbGlzZWNvbmRzYCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gQXN5bmNJdGVyYWJsZUl0ZXJhdG9yIHRvIGFuIGFycmF5IGJ5IGNvbnN1bWluZyBhbGwgaXRzIGVsZW1lbnRzLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGVsZW1lbnRzIHByb2R1Y2VkIGJ5IHRoZSBBc3luY0l0ZXJhYmxlSXRlcmF0b3IuXG4gKiBAcGFyYW0gaXRlciAtIFRoZSBBc3luY0l0ZXJhYmxlSXRlcmF0b3IgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBhcnJheSBvZiBhbGwgdGhlIGVsZW1lbnRzIGluIHRoZSBBc3luY0l0ZXJhYmxlSXRlcmF0b3IuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0b0FycmF5PFQ+KGl0ZXI6IEFzeW5jSXRlcmFibGVJdGVyYXRvcjxUPik6IFByb21pc2U8VFtdPiB7XG4gIGNvbnN0IGFycjogVFtdID0gW107XG4gIGZvciBhd2FpdCAoY29uc3QgaXRlbSBvZiBpdGVyKSB7XG4gICAgYXJyLnB1c2goaXRlbSk7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cbiJdLAogICJtYXBwaW5ncyI6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
|
package/dist/lib/cjs/Async.d.cts
CHANGED
|
@@ -17,19 +17,19 @@ export interface RetryOptions {
|
|
|
17
17
|
/**
|
|
18
18
|
* A abort signal to cancel the retry operation.
|
|
19
19
|
*/
|
|
20
|
-
abortSignal?: AbortSignal;
|
|
20
|
+
readonly abortSignal?: AbortSignal;
|
|
21
21
|
/**
|
|
22
22
|
* A delay in milliseconds between retry attempts.
|
|
23
23
|
*/
|
|
24
|
-
retryDelayInMilliseconds?: number;
|
|
24
|
+
readonly retryDelayInMilliseconds?: number;
|
|
25
25
|
/**
|
|
26
26
|
* Whether to retry the function on error.
|
|
27
27
|
*/
|
|
28
|
-
shouldRetryOnError?: boolean;
|
|
28
|
+
readonly shouldRetryOnError?: boolean;
|
|
29
29
|
/**
|
|
30
30
|
* A maximum time in milliseconds to wait before giving up on retrying.
|
|
31
31
|
*/
|
|
32
|
-
timeoutInMilliseconds?: number;
|
|
32
|
+
readonly timeoutInMilliseconds?: number;
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* Adds an error handler to a {@link Promise} that catches any errors and emits an async error event.
|
|
@@ -110,6 +110,15 @@ export declare function handleSilentError(error: unknown): boolean;
|
|
|
110
110
|
* @returns A {@link Promise} that resolves when the asynchronous function completes or fails.
|
|
111
111
|
*/
|
|
112
112
|
export declare function ignoreError(promise: Promise<unknown>, fallbackValue?: undefined): Promise<void>;
|
|
113
|
+
/**
|
|
114
|
+
* Invokes an asynchronous function and returns a fallback value if an error is thrown.
|
|
115
|
+
*
|
|
116
|
+
* @typeParam T - The type of the value returned by the asynchronous function.
|
|
117
|
+
* @param promise - The promise to ignore the error of.
|
|
118
|
+
* @param fallbackValue - The value to return if an error is thrown.
|
|
119
|
+
* @returns A {@link Promise} that resolves with the value returned by the asynchronous function or the fallback value if an error is thrown.
|
|
120
|
+
*/
|
|
121
|
+
export declare function ignoreError<T>(promise: Promise<T>, fallbackValue: T): Promise<T>;
|
|
113
122
|
/**
|
|
114
123
|
* Invokes a {@link Promise} and safely handles any errors by catching them and emitting an async error event.
|
|
115
124
|
*
|
|
@@ -151,26 +160,26 @@ export interface RetryWithTimeoutOptions {
|
|
|
151
160
|
*
|
|
152
161
|
* @param context - The timeout context.
|
|
153
162
|
*/
|
|
154
|
-
onTimeout
|
|
163
|
+
readonly onTimeout?: (this: void, context: TimeoutContext) => void;
|
|
155
164
|
/**
|
|
156
165
|
* The function to execute.
|
|
157
166
|
*
|
|
158
167
|
* @param abortSignal - The abort signal to listen to.
|
|
159
168
|
* @returns The result of the function.
|
|
160
169
|
*/
|
|
161
|
-
operationFn(this: void, abortSignal: AbortSignal)
|
|
170
|
+
readonly operationFn: (this: void, abortSignal: AbortSignal) => Promisable<boolean>;
|
|
162
171
|
/**
|
|
163
172
|
* The name of the operation.
|
|
164
173
|
*/
|
|
165
|
-
operationName?: string;
|
|
174
|
+
readonly operationName?: string;
|
|
166
175
|
/**
|
|
167
176
|
* The retry options.
|
|
168
177
|
*/
|
|
169
|
-
retryOptions?: RetryOptions;
|
|
178
|
+
readonly retryOptions?: RetryOptions;
|
|
170
179
|
/**
|
|
171
180
|
* The stack trace of the source function.
|
|
172
181
|
*/
|
|
173
|
-
stackTrace?: string;
|
|
182
|
+
readonly stackTrace?: string;
|
|
174
183
|
}
|
|
175
184
|
/**
|
|
176
185
|
* Options for {@link runWithTimeout}.
|
|
@@ -179,32 +188,32 @@ export interface RunWithTimeoutOptions<Result> {
|
|
|
179
188
|
/**
|
|
180
189
|
* The context of the function.
|
|
181
190
|
*/
|
|
182
|
-
context?: unknown;
|
|
191
|
+
readonly context?: unknown;
|
|
183
192
|
/**
|
|
184
193
|
* The function to handle the timeout.
|
|
185
194
|
*
|
|
186
195
|
* @param context - The timeout context.
|
|
187
196
|
*/
|
|
188
|
-
onTimeout
|
|
197
|
+
readonly onTimeout?: (this: void, context: TimeoutContext) => void;
|
|
189
198
|
/**
|
|
190
199
|
* The operation function to execute.
|
|
191
200
|
*
|
|
192
201
|
* @param abortSignal - The abort signal to listen to.
|
|
193
202
|
* @returns The result of the function.
|
|
194
203
|
*/
|
|
195
|
-
operationFn(this: void, abortSignal: AbortSignal)
|
|
204
|
+
readonly operationFn: (this: void, abortSignal: AbortSignal) => Promisable<Result>;
|
|
196
205
|
/**
|
|
197
206
|
* The name of the operation.
|
|
198
207
|
*/
|
|
199
|
-
operationName?: string;
|
|
208
|
+
readonly operationName?: string;
|
|
200
209
|
/**
|
|
201
210
|
* The stack trace of the source function.
|
|
202
211
|
*/
|
|
203
|
-
stackTrace?: string | undefined;
|
|
212
|
+
readonly stackTrace?: string | undefined;
|
|
204
213
|
/**
|
|
205
214
|
* The maximum time to wait in milliseconds.
|
|
206
215
|
*/
|
|
207
|
-
timeoutInMilliseconds: number;
|
|
216
|
+
readonly timeoutInMilliseconds: number;
|
|
208
217
|
}
|
|
209
218
|
/**
|
|
210
219
|
* Context provided to the timeout handler.
|
|
@@ -213,21 +222,21 @@ export interface TimeoutContext {
|
|
|
213
222
|
/**
|
|
214
223
|
* The duration in milliseconds since the operation started.
|
|
215
224
|
*/
|
|
216
|
-
duration: number;
|
|
225
|
+
readonly duration: number;
|
|
217
226
|
/**
|
|
218
227
|
* Registers a callback to be invoked when the operation completes.
|
|
219
228
|
*
|
|
220
229
|
* @param callback - The function to call when the operation completes.
|
|
221
230
|
*/
|
|
222
|
-
onOperationCompleted(callback: () => void)
|
|
231
|
+
readonly onOperationCompleted: (callback: () => void) => void;
|
|
223
232
|
/**
|
|
224
233
|
* The name of the operation.
|
|
225
234
|
*/
|
|
226
|
-
operationName: string;
|
|
235
|
+
readonly operationName: string;
|
|
227
236
|
/**
|
|
228
237
|
* Terminates the operation that timed out.
|
|
229
238
|
*/
|
|
230
|
-
terminateOperation()
|
|
239
|
+
readonly terminateOperation: () => void;
|
|
231
240
|
}
|
|
232
241
|
/**
|
|
233
242
|
* Marks an error to terminate retry logic.
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
const globalThisRecord = globalThis;
|
|
7
|
+
const globalThisRecord = (0, _ObjectUtils.castTo)(globalThis);
|
|
8
8
|
globalThisRecord['__name'] ??= name;
|
|
9
9
|
const originalRequire = require;
|
|
10
10
|
if (originalRequire && !originalRequire.__isPatched) {
|
package/dist/lib/cjs/Blob.cjs
CHANGED
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
const globalThisRecord = globalThis;
|
|
7
|
+
const globalThisRecord = (0, _ObjectUtils.castTo)(globalThis);
|
|
8
8
|
globalThisRecord['__name'] ??= name;
|
|
9
9
|
const originalRequire = require;
|
|
10
10
|
if (originalRequire && !originalRequire.__isPatched) {
|
|
@@ -128,6 +128,7 @@ __export(Blob_exports, {
|
|
|
128
128
|
isImageFile: () => isImageFile
|
|
129
129
|
});
|
|
130
130
|
module.exports = __toCommonJS(Blob_exports);
|
|
131
|
+
var import_TypeGuards = require('./TypeGuards.cjs');
|
|
131
132
|
async function blobToArrayBuffer(blob) {
|
|
132
133
|
return await new Promise((resolve) => {
|
|
133
134
|
const reader = new FileReader();
|
|
@@ -157,9 +158,7 @@ async function blobToJpegArrayBuffer(blob, jpegQuality) {
|
|
|
157
158
|
function handleLoad() {
|
|
158
159
|
const canvas = document.createElement("canvas");
|
|
159
160
|
const context = canvas.getContext("2d");
|
|
160
|
-
|
|
161
|
-
throw new Error("Could not get 2D context.");
|
|
162
|
-
}
|
|
161
|
+
(0, import_TypeGuards.assertNonNullable)(context, "Could not get 2D context.");
|
|
163
162
|
const imageWidth = image.width;
|
|
164
163
|
const imageHeight = image.height;
|
|
165
164
|
canvas.width = imageWidth;
|
|
@@ -202,4 +201,4 @@ function isImageFile(file) {
|
|
|
202
201
|
dataUrlToArrayBuffer,
|
|
203
202
|
isImageFile
|
|
204
203
|
});
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL0Jsb2IudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIEJsb2Igb2JqZWN0cy5cbiAqL1xuXG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4vVHlwZUd1YXJkcy50cyc7XG5cbi8qKlxuICogQ29udmVydHMgYSB7QGxpbmsgQmxvYn0gb2JqZWN0IHRvIGFuIHtAbGluayBBcnJheUJ1ZmZlcn0uXG4gKlxuICogQHBhcmFtIGJsb2IgLSBUaGUgQmxvYiBvYmplY3QgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYW4ge0BsaW5rIEFycmF5QnVmZmVyfS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0FycmF5QnVmZmVyKGJsb2I6IEJsb2IpOiBQcm9taXNlPEFycmF5QnVmZmVyPiB7XG4gIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlbmQnLCBoYW5kbGVMb2FkRW5kKTtcbiAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYik7XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVMb2FkRW5kKCk6IHZvaWQge1xuICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0IGFzIEFycmF5QnVmZmVyKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEge0BsaW5rIEJsb2J9IG9iamVjdCB0byBhIGRhdGEgVVJMLlxuICpcbiAqIEBwYXJhbSBibG9iIC0gVGhlIEJsb2Igb2JqZWN0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgZGF0YSBVUkwuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBibG9iVG9EYXRhVXJsKGJsb2I6IEJsb2IpOiBQcm9taXNlPHN0cmluZz4ge1xuICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdsb2FkZW5kJywgaGFuZGxlTG9hZEVuZCk7XG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoYmxvYik7XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVMb2FkRW5kKCk6IHZvaWQge1xuICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0IGFzIHN0cmluZyk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHtAbGluayBCbG9ifSBvYmplY3QgdG8gYSBKUEVHIEFycmF5QnVmZmVyIHdpdGggdGhlIHNwZWNpZmllZCBxdWFsaXR5LlxuICpcbiAqIEBwYXJhbSBibG9iIC0gVGhlIEJsb2Igb2JqZWN0IHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0ganBlZ1F1YWxpdHkgLSBUaGUgcXVhbGl0eSBvZiB0aGUgSlBFRyBpbWFnZSAoMCB0byAxKS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYW4ge0BsaW5rIEFycmF5QnVmZmVyfS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0pwZWdBcnJheUJ1ZmZlcihibG9iOiBCbG9iLCBqcGVnUXVhbGl0eTogbnVtYmVyKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xuICBjb25zdCBkYXRhVXJsID0gYXdhaXQgYmxvYlRvRGF0YVVybChibG9iKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgaGFuZGxlTG9hZCk7XG4gICAgaW1hZ2Uuc3JjID0gZGF0YVVybDtcblxuICAgIGZ1bmN0aW9uIGhhbmRsZUxvYWQoKTogdm9pZCB7XG4gICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgIGFzc2VydE5vbk51bGxhYmxlKGNvbnRleHQsICdDb3VsZCBub3QgZ2V0IDJEIGNvbnRleHQuJyk7XG4gICAgICBjb25zdCBpbWFnZVdpZHRoID0gaW1hZ2Uud2lkdGg7XG4gICAgICBjb25zdCBpbWFnZUhlaWdodCA9IGltYWdlLmhlaWdodDtcblxuICAgICAgY2FudmFzLndpZHRoID0gaW1hZ2VXaWR0aDtcbiAgICAgIGNhbnZhcy5oZWlnaHQgPSBpbWFnZUhlaWdodDtcblxuICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAnI2ZmZic7XG4gICAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KTtcbiAgICAgIGNvbnRleHQuc2F2ZSgpO1xuXG4gICAgICBjb25zdCBIQUxGID0gMC41O1xuICAgICAgY29udGV4dC50cmFuc2xhdGUoaW1hZ2VXaWR0aCAqIEhBTEYsIGltYWdlSGVpZ2h0ICogSEFMRik7XG4gICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgMCwgMCwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIC1pbWFnZVdpZHRoICogSEFMRiwgLWltYWdlSGVpZ2h0ICogSEFMRiwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpO1xuICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG5cbiAgICAgIGNvbnN0IGpwZWdEYXRhVXJsID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycsIGpwZWdRdWFsaXR5KTtcbiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gZGF0YVVybFRvQXJyYXlCdWZmZXIoanBlZ0RhdGFVcmwpO1xuICAgICAgcmVzb2x2ZShhcnJheUJ1ZmZlcik7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGJhc2U2NCBlbmNvZGVkIHN0cmluZyB0byBhbiB7QGxpbmsgQXJyYXlCdWZmZXJ9LlxuICpcbiAqIEBwYXJhbSBkYXRhVXJsIC0gVGhlIGRhdGEgVVJMIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgZGVjb2RlZCBBcnJheUJ1ZmZlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFVcmxUb0FycmF5QnVmZmVyKGRhdGFVcmw6IHN0cmluZyk6IEFycmF5QnVmZmVyIHtcbiAgY29uc3QgcGFydHMgPSBkYXRhVXJsLnNwbGl0KCc7YmFzZTY0LCcpO1xuICBjb25zdCBiYXNlNjQgPSBwYXJ0c1sxXTtcbiAgaWYgKCFiYXNlNjQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGF0YSBVUkwnKTtcbiAgfVxuXG4gIGNvbnN0IHJhdyA9IHdpbmRvdy5hdG9iKGJhc2U2NCk7XG4gIGNvbnN0IHJhd0xlbmd0aCA9IHJhdy5sZW5ndGg7XG5cbiAgY29uc3QgdUludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KHJhd0xlbmd0aCk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByYXdMZW5ndGg7IGkrKykge1xuICAgIHVJbnQ4QXJyYXlbaV0gPSByYXcuY2hhckNvZGVBdChpKTtcbiAgfVxuICByZXR1cm4gdUludDhBcnJheS5idWZmZXI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZ2l2ZW4gZmlsZSBpcyBhbiBpbWFnZS5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZmlsZSBpcyBhbiBpbWFnZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJbWFnZUZpbGUoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLHdCQUFrQztBQVFsQyxlQUFzQixrQkFBa0IsTUFBa0M7QUFDeEUsU0FBTyxNQUFNLElBQUksUUFBUSxDQUFDLFlBQVk7QUFDcEMsVUFBTSxTQUFTLElBQUksV0FBVztBQUM5QixXQUFPLGlCQUFpQixXQUFXLGFBQWE7QUFDaEQsV0FBTyxrQkFBa0IsSUFBSTtBQUU3QixhQUFTLGdCQUFzQjtBQUM3QixjQUFRLE9BQU8sTUFBcUI7QUFBQSxJQUN0QztBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBUUEsZUFBc0IsY0FBYyxNQUE2QjtBQUMvRCxTQUFPLE1BQU0sSUFBSSxRQUFRLENBQUMsWUFBWTtBQUNwQyxVQUFNLFNBQVMsSUFBSSxXQUFXO0FBQzlCLFdBQU8saUJBQWlCLFdBQVcsYUFBYTtBQUNoRCxXQUFPLGNBQWMsSUFBSTtBQUV6QixhQUFTLGdCQUFzQjtBQUM3QixjQUFRLE9BQU8sTUFBZ0I7QUFBQSxJQUNqQztBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBU0EsZUFBc0Isc0JBQXNCLE1BQVksYUFBMkM7QUFDakcsUUFBTSxVQUFVLE1BQU0sY0FBYyxJQUFJO0FBQ3hDLFNBQU8sSUFBSSxRQUFRLENBQUMsWUFBWTtBQUM5QixVQUFNLFFBQVEsSUFBSSxNQUFNO0FBQ3hCLFVBQU0saUJBQWlCLFFBQVEsVUFBVTtBQUN6QyxVQUFNLE1BQU07QUFFWixhQUFTLGFBQW1CO0FBQzFCLFlBQU0sU0FBUyxTQUFTLGNBQWMsUUFBUTtBQUM5QyxZQUFNLFVBQVUsT0FBTyxXQUFXLElBQUk7QUFDdEMsK0NBQWtCLFNBQVMsMkJBQTJCO0FBQ3RELFlBQU0sYUFBYSxNQUFNO0FBQ3pCLFlBQU0sY0FBYyxNQUFNO0FBRTFCLGFBQU8sUUFBUTtBQUNmLGFBQU8sU0FBUztBQUVoQixjQUFRLFlBQVk7QUFDcEIsY0FBUSxTQUFTLEdBQUcsR0FBRyxZQUFZLFdBQVc7QUFDOUMsY0FBUSxLQUFLO0FBRWIsWUFBTSxPQUFPO0FBQ2IsY0FBUSxVQUFVLGFBQWEsTUFBTSxjQUFjLElBQUk7QUFDdkQsY0FBUSxVQUFVLE9BQU8sR0FBRyxHQUFHLFlBQVksYUFBYSxDQUFDLGFBQWEsTUFBTSxDQUFDLGNBQWMsTUFBTSxZQUFZLFdBQVc7QUFDeEgsY0FBUSxRQUFRO0FBRWhCLFlBQU0sY0FBYyxPQUFPLFVBQVUsY0FBYyxXQUFXO0FBQzlELFlBQU0sY0FBYyxxQkFBcUIsV0FBVztBQUNwRCxjQUFRLFdBQVc7QUFBQSxJQUNyQjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBUU8sU0FBUyxxQkFBcUIsU0FBOEI7QUFDakUsUUFBTSxRQUFRLFFBQVEsTUFBTSxVQUFVO0FBQ3RDLFFBQU0sU0FBUyxNQUFNLENBQUM7QUFDdEIsTUFBSSxDQUFDLFFBQVE7QUFDWCxVQUFNLElBQUksTUFBTSxrQkFBa0I7QUFBQSxFQUNwQztBQUVBLFFBQU0sTUFBTSxPQUFPLEtBQUssTUFBTTtBQUM5QixRQUFNLFlBQVksSUFBSTtBQUV0QixRQUFNLGFBQWEsSUFBSSxXQUFXLFNBQVM7QUFFM0MsV0FBUyxJQUFJLEdBQUcsSUFBSSxXQUFXLEtBQUs7QUFDbEMsZUFBVyxDQUFDLElBQUksSUFBSSxXQUFXLENBQUM7QUFBQSxFQUNsQztBQUNBLFNBQU8sV0FBVztBQUNwQjtBQVFPLFNBQVMsWUFBWSxNQUFxQjtBQUMvQyxTQUFPLEtBQUssS0FBSyxXQUFXLFFBQVE7QUFDdEM7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
const globalThisRecord = globalThis;
|
|
7
|
+
const globalThisRecord = (0, _ObjectUtils.castTo)(globalThis);
|
|
8
8
|
globalThisRecord['__name'] ??= name;
|
|
9
9
|
const originalRequire = require;
|
|
10
10
|
if (originalRequire && !originalRequire.__isPatched) {
|
package/dist/lib/cjs/Debug.cjs
CHANGED
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
const globalThisRecord = globalThis;
|
|
7
|
+
const globalThisRecord = (0, _ObjectUtils.castTo)(globalThis);
|
|
8
8
|
globalThisRecord['__name'] ??= name;
|
|
9
9
|
const originalRequire = require;
|
|
10
10
|
if (originalRequire && !originalRequire.__isPatched) {
|
|
@@ -267,4 +267,4 @@ function toArray(namespaces) {
|
|
|
267
267
|
printWithStackTrace,
|
|
268
268
|
showInitialDebugMessage
|
|
269
269
|
});
|
|
270
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL0RlYnVnLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBkZWJ1Z2dpbmcuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBEZWJ1Z2dlciB9IGZyb20gJ2RlYnVnJztcblxuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcblxuaW1wb3J0IHR5cGUgeyBEZWJ1Z0NvbnRyb2xsZXIgfSBmcm9tICcuL0RlYnVnQ29udHJvbGxlci50cyc7XG5cbmltcG9ydCB7IEN1c3RvbVN0YWNrVHJhY2VFcnJvciB9IGZyb20gJy4vRXJyb3IudHMnO1xuaW1wb3J0IHsgTElCUkFSWV9OQU1FIH0gZnJvbSAnLi9MaWJyYXJ5LnRzJztcbmltcG9ydCB7IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSB9IGZyb20gJy4vb2JzaWRpYW4vQXBwLnRzJztcbmltcG9ydCB7XG4gIGdldFBsdWdpbklkLFxuICBOT19QTFVHSU5fSURfSU5JVElBTElaRURcbn0gZnJvbSAnLi9vYnNpZGlhbi9QbHVnaW4vUGx1Z2luSWQudHMnO1xuXG5jb25zdCBOQU1FU1BBQ0VfU0VQQVJBVE9SID0gJywnO1xuY29uc3QgTkVHQVRFRF9OQU1FU1BBQ0VfUFJFRklYID0gJy0nO1xuXG4vKipcbiAqIEVuYWJsZXMgdGhlIGRlYnVnZ2VycyBmb3IgdGhlIGBvYnNpZGlhbi1kZXYtdXRpbHNgIGxpYnJhcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVMaWJyYXJ5RGVidWdnZXJzKCk6IHZvaWQge1xuICBlbmFibGVOYW1lc3BhY2VzKFtMSUJSQVJZX05BTUUsIGAke0xJQlJBUllfTkFNRX06KmBdKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZGVidWcgY29udHJvbGxlci5cbiAqXG4gKiBAcmV0dXJucyBBIGRlYnVnIGNvbnRyb2xsZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWJ1Z0NvbnRyb2xsZXIoKTogRGVidWdDb250cm9sbGVyIHtcbiAgcmV0dXJuIHtcbiAgICBkaXNhYmxlOiBkaXNhYmxlTmFtZXNwYWNlcyxcbiAgICBlbmFibGU6IGVuYWJsZU5hbWVzcGFjZXMsXG4gICAgZ2V0OiBnZXROYW1lc3BhY2VzLFxuICAgIHNldDogc2V0TmFtZXNwYWNlc1xuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBkZWJ1Z2dlciBpbnN0YW5jZSB3aXRoIGEgbG9nIGZ1bmN0aW9uIHRoYXQgaW5jbHVkZXMgdGhlIGNhbGxlcidzIGZpbGUgbmFtZSBhbmQgbGluZSBudW1iZXIuXG4gKlxuICogQHBhcmFtIG5hbWVzcGFjZSAtIFRoZSBuYW1lc3BhY2UgZm9yIHRoZSBkZWJ1Z2dlciBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmcmFtZXNUb1NraXAgLSBUaGUgbnVtYmVyIG9mIGZyYW1lcyB0byBza2lwIGluIHRoZSBzdGFjayB0cmFjZS5cbiAqIEByZXR1cm5zIEEgZGVidWdnZXIgaW5zdGFuY2Ugd2l0aCBhIGxvZyBmdW5jdGlvbiB0aGF0IGluY2x1ZGVzIHRoZSBjYWxsZXIncyBmaWxlIG5hbWUgYW5kIGxpbmUgbnVtYmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVidWdnZXIobmFtZXNwYWNlOiBzdHJpbmcsIGZyYW1lc1RvU2tpcCA9IDApOiBEZWJ1Z2dlciB7XG4gIGNvbnN0IGtleSA9IGAke25hbWVzcGFjZX06JHtTdHJpbmcoZnJhbWVzVG9Ta2lwKX1gO1xuICBjb25zdCBkZWJ1Z2dlcnNNYXAgPSBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUobnVsbCwgJ2RlYnVnZ2VycycsIG5ldyBNYXA8c3RyaW5nLCBEZWJ1Z2dlcj4oKSkudmFsdWU7XG4gIGxldCBkZWJ1Z2dlckV4ID0gZGVidWdnZXJzTWFwLmdldChrZXkpO1xuICBpZiAoIWRlYnVnZ2VyRXgpIHtcbiAgICBkZWJ1Z2dlckV4ID0gZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpKG5hbWVzcGFjZSk7XG4gICAgZGVidWdnZXJFeC5sb2cgPSAobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkID0+IHtcbiAgICAgIGxvZ1dpdGhDYWxsZXIobmFtZXNwYWNlLCBmcmFtZXNUb1NraXAsIG1lc3NhZ2UsIC4uLmFyZ3MpO1xuICAgIH07XG5cbiAgICBkZWJ1Z2dlcnNNYXAuc2V0KGtleSwgZGVidWdnZXJFeCk7XG4gIH1cblxuICByZXR1cm4gZGVidWdnZXJFeDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZGVidWdnZXIgaW5zdGFuY2UgZm9yIHRoZSBgb2JzaWRpYW4tZGV2LXV0aWxzYCBsaWJyYXJ5LlxuICpcbiAqIEBwYXJhbSBuYW1lc3BhY2UgLSBUaGUgbmFtZXNwYWNlIGZvciB0aGUgZGVidWdnZXIgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBIGRlYnVnZ2VyIGluc3RhbmNlIGZvciB0aGUgYG9ic2lkaWFuLWRldi11dGlsc2AgbGlicmFyeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpYkRlYnVnZ2VyKG5hbWVzcGFjZTogc3RyaW5nKTogRGVidWdnZXIge1xuICBjb25zdCBwbHVnaW5JZCA9IGdldFBsdWdpbklkKCk7XG4gIGNvbnN0IHByZWZpeCA9IHBsdWdpbklkID09PSBOT19QTFVHSU5fSURfSU5JVElBTElaRUQgPyAnJyA6IGAke3BsdWdpbklkfTpgO1xuICByZXR1cm4gZ2V0RGVidWdnZXIoYCR7cHJlZml4fSR7TElCUkFSWV9OQU1FfToke25hbWVzcGFjZX1gKTtcbn1cblxuLyoqXG4gKiBQcmludHMgYSBtZXNzYWdlIHdpdGggYSBzdGFjayB0cmFjZS5cbiAqXG4gKiBAcGFyYW0gZGVidWdnZXJJbnN0YW5jZSAtIFRoZSBkZWJ1Z2dlciBpbnN0YW5jZS5cbiAqIEBwYXJhbSBzdGFja1RyYWNlIC0gVGhlIHN0YWNrIHRyYWNlIHRvIHByaW50LlxuICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBwcmludC5cbiAqIEBwYXJhbSBhcmdzIC0gVGhlIGFyZ3VtZW50cyB0byBwcmludC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByaW50V2l0aFN0YWNrVHJhY2UoZGVidWdnZXJJbnN0YW5jZTogRGVidWdnZXIsIHN0YWNrVHJhY2U6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgaWYgKCFpc0luT2JzaWRpYW4oKSkge1xuICAgIGRlYnVnZ2VySW5zdGFuY2UobWVzc2FnZSwgLi4uYXJncyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZGVidWdnZXJJbnN0YW5jZShtZXNzYWdlLCAuLi5hcmdzLCAnXFxuXFxuLS0tXFxuQ29udGV4dCBzdGFjayB0cmFjZTpcXG4nLCBtYWtlU3RhY2tUcmFjZUVycm9yKHN0YWNrVHJhY2UpKTtcbn1cblxuLyoqXG4gKiBTaG93cyBhbiBpbml0aWFsIGRlYnVnIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIHBsdWdpbklkIC0gVGhlIHBsdWdpbiBJRC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3dJbml0aWFsRGVidWdNZXNzYWdlKHBsdWdpbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgaXNFbmFibGVkID0gZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpLmVuYWJsZWQocGx1Z2luSWQpO1xuICBjb25zdCBzdGF0ZSA9IGlzRW5hYmxlZCA/ICdlbmFibGVkJyA6ICdkaXNhYmxlZCc7XG4gIGNvbnN0IGNoYW5nZUFjdGlvbiA9IGlzRW5hYmxlZCA/ICdkaXNhYmxlJyA6ICdlbmFibGUnO1xuICBjb25zdCBuYW1lc3BhY2VzID0gZ2V0TmFtZXNwYWNlcygpO1xuICBzZXROYW1lc3BhY2VzKHBsdWdpbklkKTtcbiAgZ2V0RGVidWdnZXIocGx1Z2luSWQpKFxuICAgIGBEZWJ1ZyBtZXNzYWdlcyBmb3IgcGx1Z2luICR7cGx1Z2luSWR9IGFyZSAke3N0YXRlfS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tbmFvdW1vdi9vYnNpZGlhbi1kZXYtdXRpbHMvYmxvYi9tYWluL2RvY3MvZGVidWdnaW5nLm1kIGhvdyB0byAke2NoYW5nZUFjdGlvbn0gdGhlbS5gXG4gICk7XG4gIHNldE5hbWVzcGFjZXMobmFtZXNwYWNlcyk7XG59XG5cbmZ1bmN0aW9uIGRpc2FibGVOYW1lc3BhY2VzKG5hbWVzcGFjZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XG4gIGNvbnN0IHNldCA9IG5ldyBTZXQoZ2V0TmFtZXNwYWNlcygpKTtcbiAgZm9yIChjb25zdCBuYW1lc3BhY2Ugb2YgdG9BcnJheShuYW1lc3BhY2VzKSkge1xuICAgIGlmIChuYW1lc3BhY2Uuc3RhcnRzV2l0aChORUdBVEVEX05BTUVTUEFDRV9QUkVGSVgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgbmVnYXRlZE5hbWVzcGFjZSA9IE5FR0FURURfTkFNRVNQQUNFX1BSRUZJWCArIG5hbWVzcGFjZTtcbiAgICBpZiAoc2V0LmhhcyhuYW1lc3BhY2UpKSB7XG4gICAgICBzZXQuZGVsZXRlKG5hbWVzcGFjZSk7XG4gICAgfVxuICAgIHNldC5hZGQobmVnYXRlZE5hbWVzcGFjZSk7XG4gIH1cbiAgc2V0TmFtZXNwYWNlcyhBcnJheS5mcm9tKHNldCkpO1xufVxuXG5mdW5jdGlvbiBlbmFibGVOYW1lc3BhY2VzKG5hbWVzcGFjZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XG4gIGNvbnN0IHNldCA9IG5ldyBTZXQoZ2V0TmFtZXNwYWNlcygpKTtcbiAgZm9yIChjb25zdCBuYW1lc3BhY2Ugb2YgdG9BcnJheShuYW1lc3BhY2VzKSkge1xuICAgIGlmICghbmFtZXNwYWNlLnN0YXJ0c1dpdGgoTkVHQVRFRF9OQU1FU1BBQ0VfUFJFRklYKSkge1xuICAgICAgY29uc3QgbmVnYXRlZE5hbWVzcGFjZSA9IE5FR0FURURfTkFNRVNQQUNFX1BSRUZJWCArIG5hbWVzcGFjZTtcbiAgICAgIGlmIChzZXQuaGFzKG5lZ2F0ZWROYW1lc3BhY2UpKSB7XG4gICAgICAgIHNldC5kZWxldGUobmVnYXRlZE5hbWVzcGFjZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHNldC5hZGQobmFtZXNwYWNlKTtcbiAgfVxuICBzZXROYW1lc3BhY2VzKEFycmF5LmZyb20oc2V0KSk7XG59XG5cbmZ1bmN0aW9uIGdldE5hbWVzcGFjZXMoKTogc3RyaW5nW10ge1xuICByZXR1cm4gdG9BcnJheShnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkubG9hZCgpID8/ICcnKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpOiB0eXBlb2YgZGVidWcge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZGVidWc7XG4gIH1cbiAgcmV0dXJuIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZShudWxsLCAnZGVidWcnLCBkZWJ1ZykudmFsdWU7XG59XG5cbmZ1bmN0aW9uIGlzSW5PYnNpZGlhbigpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xufVxuXG5mdW5jdGlvbiBsb2dXaXRoQ2FsbGVyKG5hbWVzcGFjZTogc3RyaW5nLCBmcmFtZXNUb1NraXA6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgaWYgKCFnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkuZW5hYmxlZChuYW1lc3BhY2UpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFpc0luT2JzaWRpYW4oKSkge1xuICAgIGNvbnNvbGUuZGVidWcobWVzc2FnZSwgLi4uYXJncyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgY2FsbGVyIGxpbmUgaW5kZXggaXMgNCBiZWNhdXNlIHRoZSBjYWxsIHN0YWNrIGlzIGFzIGZvbGxvd3M6XG4gICAqXG4gICAqIDA6IEVycm9yXG4gICAqIDE6ICAgICBhdCBsb2dXaXRoQ2FsbGVyICg/Oj86PylcbiAgICogMjogICAgIGF0IGRlYnVnSW5zdGFuY2UubG9nICg/Oj86PylcbiAgICogMzogICAgIGF0IGRlYnVnICg/Oj86PylcbiAgICogNDogICAgIGF0IGZ1bmN0aW9uTmFtZSAocGF0aC90by9jYWxsZXIuanM6Pzo/KVxuICAgKi9cbiAgY29uc3QgQ0FMTEVSX0xJTkVfSU5ERVggPSA0O1xuXG4gIGNvbnN0IHN0YWNrTGluZXMgPSBuZXcgRXJyb3IoKS5zdGFjaz8uc3BsaXQoJ1xcbicpID8/IFtdO1xuICBzdGFja0xpbmVzLnNwbGljZSgwLCBDQUxMRVJfTElORV9JTkRFWCArIGZyYW1lc1RvU2tpcCk7XG5cbiAgY29uc29sZS5kZWJ1ZyhtZXNzYWdlLCAuLi5hcmdzLCAnXFxuXFxuLS0tXFxuTG9nZ2VyIHN0YWNrIHRyYWNlOlxcbicsIG1ha2VTdGFja1RyYWNlRXJyb3Ioc3RhY2tMaW5lcy5qb2luKCdcXG4nKSkpO1xufVxuXG5mdW5jdGlvbiBtYWtlU3RhY2tUcmFjZUVycm9yKHN0YWNrVHJhY2U6IHN0cmluZyk6IEN1c3RvbVN0YWNrVHJhY2VFcnJvciB7XG4gIHJldHVybiBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKFxuICAgICdEZWJ1ZyBtb2RlOiBpbnRlbnRpb25hbCBwbGFjZWhvbGRlciBlcnJvci4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tbmFvdW1vdi9vYnNpZGlhbi1kZXYtdXRpbHMvYmxvYi9tYWluL2RvY3MvZGVidWdnaW5nLm1kLicsXG4gICAgc3RhY2tUcmFjZSxcbiAgICB1bmRlZmluZWRcbiAgKTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBuYW1lc3BhY2VzIHRvIGVuYWJsZS5cbiAqXG4gKiBAcGFyYW0gbmFtZXNwYWNlcyAtIFRoZSBuYW1lc3BhY2VzIHRvIGVuYWJsZS5cbiAqL1xuZnVuY3Rpb24gc2V0TmFtZXNwYWNlcyhuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkuZW5hYmxlKHRvQXJyYXkobmFtZXNwYWNlcykuam9pbihOQU1FU1BBQ0VfU0VQQVJBVE9SKSk7XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIHJldHVybiB0eXBlb2YgbmFtZXNwYWNlcyA9PT0gJ3N0cmluZycgPyBuYW1lc3BhY2VzLnNwbGl0KE5BTUVTUEFDRV9TRVBBUkFUT1IpLmZpbHRlcihCb29sZWFuKSA6IG5hbWVzcGFjZXMuZmxhdE1hcCh0b0FycmF5KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxtQkFBa0I7QUFJbEIsbUJBQXNDO0FBQ3RDLHFCQUE2QjtBQUM3QixpQkFBeUM7QUFDekMsc0JBR087QUFFUCxNQUFNLHNCQUFzQjtBQUM1QixNQUFNLDJCQUEyQjtBQUsxQixTQUFTLHlCQUErQjtBQUM3QyxtQkFBaUIsQ0FBQyw2QkFBYyxHQUFHLDJCQUFZLElBQUksQ0FBQztBQUN0RDtBQU9PLFNBQVMscUJBQXNDO0FBQ3BELFNBQU87QUFBQSxJQUNMLFNBQVM7QUFBQSxJQUNULFFBQVE7QUFBQSxJQUNSLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxFQUNQO0FBQ0Y7QUFTTyxTQUFTLFlBQVksV0FBbUIsZUFBZSxHQUFhO0FBQ3pFLFFBQU0sTUFBTSxHQUFHLFNBQVMsSUFBSSxPQUFPLFlBQVksQ0FBQztBQUNoRCxRQUFNLG1CQUFlLHFDQUF5QixNQUFNLGFBQWEsb0JBQUksSUFBc0IsQ0FBQyxFQUFFO0FBQzlGLE1BQUksYUFBYSxhQUFhLElBQUksR0FBRztBQUNyQyxNQUFJLENBQUMsWUFB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
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL0RlYnVnLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBkZWJ1Z2dpbmcuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBEZWJ1Z2dlciB9IGZyb20gJ2RlYnVnJztcblxuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcblxuaW1wb3J0IHR5cGUgeyBEZWJ1Z0NvbnRyb2xsZXIgfSBmcm9tICcuL0RlYnVnQ29udHJvbGxlci50cyc7XG5cbmltcG9ydCB7IEN1c3RvbVN0YWNrVHJhY2VFcnJvciB9IGZyb20gJy4vRXJyb3IudHMnO1xuaW1wb3J0IHsgTElCUkFSWV9OQU1FIH0gZnJvbSAnLi9MaWJyYXJ5LnRzJztcbmltcG9ydCB7IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSB9IGZyb20gJy4vb2JzaWRpYW4vQXBwLnRzJztcbmltcG9ydCB7XG4gIGdldFBsdWdpbklkLFxuICBOT19QTFVHSU5fSURfSU5JVElBTElaRURcbn0gZnJvbSAnLi9vYnNpZGlhbi9QbHVnaW4vUGx1Z2luSWQudHMnO1xuXG5jb25zdCBOQU1FU1BBQ0VfU0VQQVJBVE9SID0gJywnO1xuY29uc3QgTkVHQVRFRF9OQU1FU1BBQ0VfUFJFRklYID0gJy0nO1xuXG4vKipcbiAqIEVuYWJsZXMgdGhlIGRlYnVnZ2VycyBmb3IgdGhlIGBvYnNpZGlhbi1kZXYtdXRpbHNgIGxpYnJhcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVMaWJyYXJ5RGVidWdnZXJzKCk6IHZvaWQge1xuICBlbmFibGVOYW1lc3BhY2VzKFtMSUJSQVJZX05BTUUsIGAke0xJQlJBUllfTkFNRX06KmBdKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZGVidWcgY29udHJvbGxlci5cbiAqXG4gKiBAcmV0dXJucyBBIGRlYnVnIGNvbnRyb2xsZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWJ1Z0NvbnRyb2xsZXIoKTogRGVidWdDb250cm9sbGVyIHtcbiAgcmV0dXJuIHtcbiAgICBkaXNhYmxlOiBkaXNhYmxlTmFtZXNwYWNlcyxcbiAgICBlbmFibGU6IGVuYWJsZU5hbWVzcGFjZXMsXG4gICAgZ2V0OiBnZXROYW1lc3BhY2VzLFxuICAgIHNldDogc2V0TmFtZXNwYWNlc1xuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBkZWJ1Z2dlciBpbnN0YW5jZSB3aXRoIGEgbG9nIGZ1bmN0aW9uIHRoYXQgaW5jbHVkZXMgdGhlIGNhbGxlcidzIGZpbGUgbmFtZSBhbmQgbGluZSBudW1iZXIuXG4gKlxuICogQHBhcmFtIG5hbWVzcGFjZSAtIFRoZSBuYW1lc3BhY2UgZm9yIHRoZSBkZWJ1Z2dlciBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmcmFtZXNUb1NraXAgLSBUaGUgbnVtYmVyIG9mIGZyYW1lcyB0byBza2lwIGluIHRoZSBzdGFjayB0cmFjZS5cbiAqIEByZXR1cm5zIEEgZGVidWdnZXIgaW5zdGFuY2Ugd2l0aCBhIGxvZyBmdW5jdGlvbiB0aGF0IGluY2x1ZGVzIHRoZSBjYWxsZXIncyBmaWxlIG5hbWUgYW5kIGxpbmUgbnVtYmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVidWdnZXIobmFtZXNwYWNlOiBzdHJpbmcsIGZyYW1lc1RvU2tpcCA9IDApOiBEZWJ1Z2dlciB7XG4gIGNvbnN0IGtleSA9IGAke25hbWVzcGFjZX06JHtTdHJpbmcoZnJhbWVzVG9Ta2lwKX1gO1xuICBjb25zdCBkZWJ1Z2dlcnNNYXAgPSBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUobnVsbCwgJ2RlYnVnZ2VycycsIG5ldyBNYXA8c3RyaW5nLCBEZWJ1Z2dlcj4oKSkudmFsdWU7XG4gIGxldCBkZWJ1Z2dlckV4ID0gZGVidWdnZXJzTWFwLmdldChrZXkpO1xuICBpZiAoIWRlYnVnZ2VyRXgpIHtcbiAgICBkZWJ1Z2dlckV4ID0gZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpKG5hbWVzcGFjZSk7XG4gICAgZGVidWdnZXJFeC5sb2cgPSAobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkID0+IHtcbiAgICAgIGxvZ1dpdGhDYWxsZXIobmFtZXNwYWNlLCBmcmFtZXNUb1NraXAsIG1lc3NhZ2UsIC4uLmFyZ3MpO1xuICAgIH07XG5cbiAgICBkZWJ1Z2dlcnNNYXAuc2V0KGtleSwgZGVidWdnZXJFeCk7XG4gIH1cblxuICByZXR1cm4gZGVidWdnZXJFeDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZGVidWdnZXIgaW5zdGFuY2UgZm9yIHRoZSBgb2JzaWRpYW4tZGV2LXV0aWxzYCBsaWJyYXJ5LlxuICpcbiAqIEBwYXJhbSBuYW1lc3BhY2UgLSBUaGUgbmFtZXNwYWNlIGZvciB0aGUgZGVidWdnZXIgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBIGRlYnVnZ2VyIGluc3RhbmNlIGZvciB0aGUgYG9ic2lkaWFuLWRldi11dGlsc2AgbGlicmFyeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpYkRlYnVnZ2VyKG5hbWVzcGFjZTogc3RyaW5nKTogRGVidWdnZXIge1xuICBjb25zdCBwbHVnaW5JZCA9IGdldFBsdWdpbklkKCk7XG4gIGNvbnN0IHByZWZpeCA9IHBsdWdpbklkID09PSBOT19QTFVHSU5fSURfSU5JVElBTElaRUQgPyAnJyA6IGAke3BsdWdpbklkfTpgO1xuICByZXR1cm4gZ2V0RGVidWdnZXIoYCR7cHJlZml4fSR7TElCUkFSWV9OQU1FfToke25hbWVzcGFjZX1gKTtcbn1cblxuLyoqXG4gKiBQcmludHMgYSBtZXNzYWdlIHdpdGggYSBzdGFjayB0cmFjZS5cbiAqXG4gKiBAcGFyYW0gZGVidWdnZXJJbnN0YW5jZSAtIFRoZSBkZWJ1Z2dlciBpbnN0YW5jZS5cbiAqIEBwYXJhbSBzdGFja1RyYWNlIC0gVGhlIHN0YWNrIHRyYWNlIHRvIHByaW50LlxuICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBwcmludC5cbiAqIEBwYXJhbSBhcmdzIC0gVGhlIGFyZ3VtZW50cyB0byBwcmludC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByaW50V2l0aFN0YWNrVHJhY2UoZGVidWdnZXJJbnN0YW5jZTogRGVidWdnZXIsIHN0YWNrVHJhY2U6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIE9ubHkgdGhlIHRydWUgYnJhbmNoIGlzIHRha2VuIGluIE5vZGUgdGVzdHMgKHdpbmRvdyBpcyB1bmRlZmluZWQpLiAqL1xuICBpZiAoIWlzSW5PYnNpZGlhbigpKSB7XG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICBkZWJ1Z2dlckluc3RhbmNlKG1lc3NhZ2UsIC4uLmFyZ3MpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBPbmx5IHJlYWNoYWJsZSBpbiBPYnNpZGlhbiAod2luZG93IGRlZmluZWQpLiAqL1xuICBkZWJ1Z2dlckluc3RhbmNlKG1lc3NhZ2UsIC4uLmFyZ3MsICdcXG5cXG4tLS1cXG5Db250ZXh0IHN0YWNrIHRyYWNlOlxcbicsIG1ha2VTdGFja1RyYWNlRXJyb3Ioc3RhY2tUcmFjZSkpO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xufVxuXG4vKipcbiAqIFNob3dzIGFuIGluaXRpYWwgZGVidWcgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luSWQgLSBUaGUgcGx1Z2luIElELlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvd0luaXRpYWxEZWJ1Z01lc3NhZ2UocGx1Z2luSWQ6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBpc0VuYWJsZWQgPSBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkuZW5hYmxlZChwbHVnaW5JZCk7XG4gIGNvbnN0IHN0YXRlID0gaXNFbmFibGVkID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJztcbiAgY29uc3QgY2hhbmdlQWN0aW9uID0gaXNFbmFibGVkID8gJ2Rpc2FibGUnIDogJ2VuYWJsZSc7XG4gIGNvbnN0IG5hbWVzcGFjZXMgPSBnZXROYW1lc3BhY2VzKCk7XG4gIHNldE5hbWVzcGFjZXMocGx1Z2luSWQpO1xuICBnZXREZWJ1Z2dlcihwbHVnaW5JZCkoXG4gICAgYERlYnVnIG1lc3NhZ2VzIGZvciBwbHVnaW4gJHtwbHVnaW5JZH0gYXJlICR7c3RhdGV9LiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21uYW91bW92L29ic2lkaWFuLWRldi11dGlscy9ibG9iL21haW4vZG9jcy9kZWJ1Z2dpbmcubWQgaG93IHRvICR7Y2hhbmdlQWN0aW9ufSB0aGVtLmBcbiAgKTtcbiAgc2V0TmFtZXNwYWNlcyhuYW1lc3BhY2VzKTtcbn1cblxuZnVuY3Rpb24gZGlzYWJsZU5hbWVzcGFjZXMobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgY29uc3Qgc2V0ID0gbmV3IFNldChnZXROYW1lc3BhY2VzKCkpO1xuICBmb3IgKGNvbnN0IG5hbWVzcGFjZSBvZiB0b0FycmF5KG5hbWVzcGFjZXMpKSB7XG4gICAgaWYgKG5hbWVzcGFjZS5zdGFydHNXaXRoKE5FR0FURURfTkFNRVNQQUNFX1BSRUZJWCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBuZWdhdGVkTmFtZXNwYWNlID0gTkVHQVRFRF9OQU1FU1BBQ0VfUFJFRklYICsgbmFtZXNwYWNlO1xuICAgIGlmIChzZXQuaGFzKG5hbWVzcGFjZSkpIHtcbiAgICAgIHNldC5kZWxldGUobmFtZXNwYWNlKTtcbiAgICB9XG4gICAgc2V0LmFkZChuZWdhdGVkTmFtZXNwYWNlKTtcbiAgfVxuICBzZXROYW1lc3BhY2VzKEFycmF5LmZyb20oc2V0KSk7XG59XG5cbmZ1bmN0aW9uIGVuYWJsZU5hbWVzcGFjZXMobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgY29uc3Qgc2V0ID0gbmV3IFNldChnZXROYW1lc3BhY2VzKCkpO1xuICBmb3IgKGNvbnN0IG5hbWVzcGFjZSBvZiB0b0FycmF5KG5hbWVzcGFjZXMpKSB7XG4gICAgaWYgKCFuYW1lc3BhY2Uuc3RhcnRzV2l0aChORUdBVEVEX05BTUVTUEFDRV9QUkVGSVgpKSB7XG4gICAgICBjb25zdCBuZWdhdGVkTmFtZXNwYWNlID0gTkVHQVRFRF9OQU1FU1BBQ0VfUFJFRklYICsgbmFtZXNwYWNlO1xuICAgICAgaWYgKHNldC5oYXMobmVnYXRlZE5hbWVzcGFjZSkpIHtcbiAgICAgICAgc2V0LmRlbGV0ZShuZWdhdGVkTmFtZXNwYWNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc2V0LmFkZChuYW1lc3BhY2UpO1xuICB9XG4gIHNldE5hbWVzcGFjZXMoQXJyYXkuZnJvbShzZXQpKTtcbn1cblxuZnVuY3Rpb24gZ2V0TmFtZXNwYWNlcygpOiBzdHJpbmdbXSB7XG4gIHJldHVybiB0b0FycmF5KGdldFNoYXJlZERlYnVnTGliSW5zdGFuY2UoKS5sb2FkKCkgPz8gJycpO1xufVxuXG5mdW5jdGlvbiBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCk6IHR5cGVvZiBkZWJ1ZyB7XG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbiBOb2RlIHRlc3RzLCB3aW5kb3cgaXMgYWx3YXlzIHVuZGVmaW5lZC4gKi9cbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICByZXR1cm4gZGVidWc7XG4gIH1cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIE9ubHkgcmVhY2hhYmxlIGluIE9ic2lkaWFuICh3aW5kb3cgZGVmaW5lZCkuICovXG4gIHJldHVybiBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUobnVsbCwgJ2RlYnVnJywgZGVidWcpLnZhbHVlO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xufVxuXG5mdW5jdGlvbiBpc0luT2JzaWRpYW4oKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbn1cblxuZnVuY3Rpb24gbG9nV2l0aENhbGxlcihuYW1lc3BhY2U6IHN0cmluZywgZnJhbWVzVG9Ta2lwOiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gIGlmICghZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpLmVuYWJsZWQobmFtZXNwYWNlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBPbmx5IHRoZSB0cnVlIGJyYW5jaCBpcyB0YWtlbiBpbiBOb2RlIHRlc3RzICh3aW5kb3cgaXMgdW5kZWZpbmVkKS4gKi9cbiAgaWYgKCFpc0luT2JzaWRpYW4oKSkge1xuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgY29uc29sZS5kZWJ1ZyhtZXNzYWdlLCAuLi5hcmdzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gT25seSByZWFjaGFibGUgaW4gT2JzaWRpYW4gKHdpbmRvdyBkZWZpbmVkKS4gKi9cbiAgLyoqXG4gICAqIEEgY2FsbGVyIGxpbmUgaW5kZXggaXMgNCBiZWNhdXNlIHRoZSBjYWxsIHN0YWNrIGlzIGFzIGZvbGxvd3M6XG4gICAqXG4gICAqIDA6IEVycm9yXG4gICAqIDE6ICAgICBhdCBsb2dXaXRoQ2FsbGVyICg/Oj86PylcbiAgICogMjogICAgIGF0IGRlYnVnSW5zdGFuY2UubG9nICg/Oj86PylcbiAgICogMzogICAgIGF0IGRlYnVnICg/Oj86PylcbiAgICogNDogICAgIGF0IGZ1bmN0aW9uTmFtZSAocGF0aC90by9jYWxsZXIuanM6Pzo/KVxuICAgKi9cbiAgY29uc3QgQ0FMTEVSX0xJTkVfSU5ERVggPSA0O1xuXG4gIGNvbnN0IHN0YWNrTGluZXMgPSBuZXcgRXJyb3IoKS5zdGFjaz8uc3BsaXQoJ1xcbicpID8/IFtdO1xuICBzdGFja0xpbmVzLnNwbGljZSgwLCBDQUxMRVJfTElORV9JTkRFWCArIGZyYW1lc1RvU2tpcCk7XG5cbiAgY29uc29sZS5kZWJ1ZyhtZXNzYWdlLCAuLi5hcmdzLCAnXFxuXFxuLS0tXFxuTG9nZ2VyIHN0YWNrIHRyYWNlOlxcbicsIG1ha2VTdGFja1RyYWNlRXJyb3Ioc3RhY2tMaW5lcy5qb2luKCdcXG4nKSkpO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xufVxuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gT25seSB1c2VkIGluIE9ic2lkaWFuIGNvbnRleHQuICovXG5mdW5jdGlvbiBtYWtlU3RhY2tUcmFjZUVycm9yKHN0YWNrVHJhY2U6IHN0cmluZyk6IEN1c3RvbVN0YWNrVHJhY2VFcnJvciB7XG4gIHJldHVybiBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKFxuICAgICdEZWJ1ZyBtb2RlOiBpbnRlbnRpb25hbCBwbGFjZWhvbGRlciBlcnJvci4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tbmFvdW1vdi9vYnNpZGlhbi1kZXYtdXRpbHMvYmxvYi9tYWluL2RvY3MvZGVidWdnaW5nLm1kLicsXG4gICAgc3RhY2tUcmFjZSxcbiAgICB1bmRlZmluZWRcbiAgKTtcbn1cbi8qIHY4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogU2V0cyB0aGUgbmFtZXNwYWNlcyB0byBlbmFibGUuXG4gKlxuICogQHBhcmFtIG5hbWVzcGFjZXMgLSBUaGUgbmFtZXNwYWNlcyB0byBlbmFibGUuXG4gKi9cbmZ1bmN0aW9uIHNldE5hbWVzcGFjZXMobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpLmVuYWJsZSh0b0FycmF5KG5hbWVzcGFjZXMpLmpvaW4oTkFNRVNQQUNFX1NFUEFSQVRPUikpO1xufVxuXG5mdW5jdGlvbiB0b0FycmF5KG5hbWVzcGFjZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gdHlwZW9mIG5hbWVzcGFjZXMgPT09ICdzdHJpbmcnID8gbmFtZXNwYWNlcy5zcGxpdChOQU1FU1BBQ0VfU0VQQVJBVE9SKS5maWx0ZXIoQm9vbGVhbikgOiBuYW1lc3BhY2VzLmZsYXRNYXAodG9BcnJheSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsbUJBQWtCO0FBSWxCLG1CQUFzQztBQUN0QyxxQkFBNkI7QUFDN0IsaUJBQXlDO0FBQ3pDLHNCQUdPO0FBRVAsTUFBTSxzQkFBc0I7QUFDNUIsTUFBTSwyQkFBMkI7QUFLMUIsU0FBUyx5QkFBK0I7QUFDN0MsbUJBQWlCLENBQUMsNkJBQWMsR0FBRywyQkFBWSxJQUFJLENBQUM7QUFDdEQ7QUFPTyxTQUFTLHFCQUFzQztBQUNwRCxTQUFPO0FBQUEsSUFDTCxTQUFTO0FBQUEsSUFDVCxRQUFRO0FBQUEsSUFDUixLQUFLO0FBQUEsSUFDTCxLQUFLO0FBQUEsRUFDUDtBQUNGO0FBU08sU0FBUyxZQUFZLFdBQW1CLGVBQWUsR0FBYTtBQUN6RSxRQUFNLE1BQU0sR0FBRyxTQUFTLElBQUksT0FBTyxZQUFZLENBQUM7QUFDaEQsUUFBTSxtQkFBZSxxQ0FBeUIsTUFBTSxhQUFhLG9CQUFJLElBQXNCLENBQUMsRUFBRTtBQUM5RixNQUFJLGFBQWEsYUFBYSxJQUFJLEdBQUc7QUFDckMsTUFBSSxDQUFDLFlBQVk7QUFDZixpQkFBYSwwQkFBMEIsRUFBRSxTQUFTO0FBQ2xELGVBQVcsTUFBTSxDQUFDLFlBQW9CLFNBQTBCO0FBQzlELG9CQUFjLFdBQVcsY0FBYyxTQUFTLEdBQUcsSUFBSTtBQUFBLElBQ3pEO0FBRUEsaUJBQWEsSUFBSSxLQUFLLFVBQVU7QUFBQSxFQUNsQztBQUVBLFNBQU87QUFDVDtBQVFPLFNBQVMsZUFBZSxXQUE2QjtBQUMxRCxRQUFNLGVBQVcsNkJBQVk7QUFDN0IsUUFBTSxTQUFTLGFBQWEsMkNBQTJCLEtBQUssR0FBRyxRQUFRO0FBQ3ZFLFNBQU8sWUFBWSxHQUFHLE1BQU0sR0FBRywyQkFBWSxJQUFJLFNBQVMsRUFBRTtBQUM1RDtBQVVPLFNBQVMsb0JBQW9CLGtCQUE0QixZQUFvQixZQUFvQixNQUF1QjtBQUU3SCxNQUFJLENBQUMsYUFBYSxHQUFHO0FBRW5CLHFCQUFpQixTQUFTLEdBQUcsSUFBSTtBQUNqQztBQUFBLEVBQ0Y7QUFHQSxtQkFBaUIsU0FBUyxHQUFHLE1BQU0sbUNBQW1DLG9CQUFvQixVQUFVLENBQUM7QUFFdkc7QUFPTyxTQUFTLHdCQUF3QixVQUF3QjtBQUM5RCxRQUFNLFlBQVksMEJBQTBCLEVBQUUsUUFBUSxRQUFRO0FBQzlELFFBQU0sUUFBUSxZQUFZLFlBQVk7QUFDdEMsUUFBTSxlQUFlLFlBQVksWUFBWTtBQUM3QyxRQUFNLGFBQWEsY0FBYztBQUNqQyxnQkFBYyxRQUFRO0FBQ3RCLGNBQVksUUFBUTtBQUFBLElBQ2xCLDZCQUE2QixRQUFRLFFBQVEsS0FBSywyRkFBMkYsWUFBWTtBQUFBLEVBQzNKO0FBQ0EsZ0JBQWMsVUFBVTtBQUMxQjtBQUVBLFNBQVMsa0JBQWtCLFlBQXFDO0FBQzlELFFBQU0sTUFBTSxJQUFJLElBQUksY0FBYyxDQUFDO0FBQ25DLGFBQVcsYUFBYSxRQUFRLFVBQVUsR0FBRztBQUMzQyxRQUFJLFVBQVUsV0FBVyx3QkFBd0IsR0FBRztBQUNsRDtBQUFBLElBQ0Y7QUFDQSxVQUFNLG1CQUFtQiwyQkFBMkI7QUFDcEQsUUFBSSxJQUFJLElBQUksU0FBUyxHQUFHO0FBQ3RCLFVBQUksT0FBTyxTQUFTO0FBQUEsSUFDdEI7QUFDQSxRQUFJLElBQUksZ0JBQWdCO0FBQUEsRUFDMUI7QUFDQSxnQkFBYyxNQUFNLEtBQUssR0FBRyxDQUFDO0FBQy9CO0FBRUEsU0FBUyxpQkFBaUIsWUFBcUM7QUFDN0QsUUFBTSxNQUFNLElBQUksSUFBSSxjQUFjLENBQUM7QUFDbkMsYUFBVyxhQUFhLFFBQVEsVUFBVSxHQUFHO0FBQzNDLFFBQUksQ0FBQyxVQUFVLFdBQVcsd0JBQXdCLEdBQUc7QUFDbkQsWUFBTSxtQkFBbUIsMkJBQTJCO0FBQ3BELFVBQUksSUFBSSxJQUFJLGdCQUFnQixHQUFHO0FBQzdCLFlBQUksT0FBTyxnQkFBZ0I7QUFBQSxNQUM3QjtBQUFBLElBQ0Y7QUFDQSxRQUFJLElBQUksU0FBUztBQUFBLEVBQ25CO0FBQ0EsZ0JBQWMsTUFBTSxLQUFLLEdBQUcsQ0FBQztBQUMvQjtBQUVBLFNBQVMsZ0JBQTBCO0FBQ2pDLFNBQU8sUUFBUSwwQkFBMEIsRUFBRSxLQUFLLEtBQUssRUFBRTtBQUN6RDtBQUVBLFNBQVMsNEJBQTBDO0FBRWpELE1BQUksT0FBTyxXQUFXLGFBQWE7QUFFakMsV0FBTyxhQUFBQTtBQUFBLEVBQ1Q7QUFFQSxhQUFPLHFDQUF5QixNQUFNLFNBQVMsYUFBQUEsT0FBSyxFQUFFO0FBRXhEO0FBRUEsU0FBUyxlQUF3QjtBQUMvQixTQUFPLE9BQU8sV0FBVztBQUMzQjtBQUVBLFNBQVMsY0FBYyxXQUFtQixjQUFzQixZQUFvQixNQUF1QjtBQUN6RyxNQUFJLENBQUMsMEJBQTBCLEVBQUUsUUFBUSxTQUFTLEdBQUc7QUFDbkQ7QUFBQSxFQUNGO0FBR0EsTUFBSSxDQUFDLGFBQWEsR0FBRztBQUVuQixZQUFRLE1BQU0sU0FBUyxHQUFHLElBQUk7QUFDOUI7QUFBQSxFQUNGO0FBWUEsUUFBTSxvQkFBb0I7QUFFMUIsUUFBTSxhQUFhLElBQUksTUFBTSxFQUFFLE9BQU8sTUFBTSxJQUFJLEtBQUssQ0FBQztBQUN0RCxhQUFXLE9BQU8sR0FBRyxvQkFBb0IsWUFBWTtBQUVyRCxVQUFRLE1BQU0sU0FBUyxHQUFHLE1BQU0sa0NBQWtDLG9CQUFvQixXQUFXLEtBQUssSUFBSSxDQUFDLENBQUM7QUFFOUc7QUFHQSxTQUFTLG9CQUFvQixZQUEyQztBQUN0RSxTQUFPLElBQUk7QUFBQSxJQUNUO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBQ0Y7QUFRQSxTQUFTLGNBQWMsWUFBcUM7QUFDMUQsNEJBQTBCLEVBQUUsT0FBTyxRQUFRLFVBQVUsRUFBRSxLQUFLLG1CQUFtQixDQUFDO0FBQ2xGO0FBRUEsU0FBUyxRQUFRLFlBQXlDO0FBQ3hELFNBQU8sT0FBTyxlQUFlLFdBQVcsV0FBVyxNQUFNLG1CQUFtQixFQUFFLE9BQU8sT0FBTyxJQUFJLFdBQVcsUUFBUSxPQUFPO0FBQzVIOyIsCiAgIm5hbWVzIjogWyJkZWJ1ZyJdCn0K
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
const globalThisRecord = globalThis;
|
|
7
|
+
const globalThisRecord = (0, _ObjectUtils.castTo)(globalThis);
|
|
8
8
|
globalThisRecord['__name'] ??= name;
|
|
9
9
|
const originalRequire = require;
|
|
10
10
|
if (originalRequire && !originalRequire.__isPatched) {
|
|
@@ -117,4 +117,4 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
117
117
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
118
118
|
var DebugController_exports = {};
|
|
119
119
|
module.exports = __toCommonJS(DebugController_exports);
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL0RlYnVnQ29udHJvbGxlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBQcm92aWRlcyB0aGUgaW50ZXJmYWNlIGZvciBjb250cm9sbGluZyBkZWJ1ZyBvdXRwdXQgdGhyb3VnaCBuYW1lc3BhY2UgbWFuYWdlbWVudC5cbiAqXG4gKiBEZWJ1ZyBuYW1lc3BhY2VzIGZvbGxvdyB0aGUgcGF0dGVybiAnbG9yZW0nLCBgbG9yZW06aXBzdW1gLCBgbG9yZW06aXBzdW06ZG9sb3JgLCBldGMsIGFuZCBjYW4gdXNlIHdpbGRjYXJkcyAoYCpgKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogLSBgbG9yZW06KmAgbWF0Y2hlcyBhbGwgc3VibW9kdWxlcyBvZiAnbG9yZW0nXG4gKiAtIGAqOmlwc3VtYCBtYXRjaGVzIGFsbCBwbHVnaW5zJyBgaXBzdW1gIHN1Ym1vZHVsZXNcbiAqIC0gYCpgIG1hdGNoZXMgZXZlcnl0aGluZ1xuICpcbiAqIFNwZWNpYWwgc3ludGF4OlxuICogLSBOYW1lc3BhY2VzIHByZWZpeGVkIHdpdGggJy0nIGFyZSBleHBsaWNpdGx5IGRpc2FibGVkXG4gKiAtIE11bHRpcGxlIG5hbWVzcGFjZXMgY2FuIGJlIGNvbWJpbmVkIHdpdGggY29tbWFzOiBgbG9yZW0sLWxvcmVtOmlwc3VtLGRvbG9yOipgXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL21uYW91bW92L29ic2lkaWFuLWRldi11dGlscy9ibG9iL21haW4vZG9jcy9kZWJ1Z2dpbmcubWR9XG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIEludGVyZmFjZS1vbmx5IG1vZHVsZTsgbm8gcnVudGltZSBjb2RlIHRvIHRlc3QuICovXG5cbi8qKlxuICogQ29udHJvbHMgZGVidWcgb3V0cHV0IGJ5IG1hbmFnaW5nIGRlYnVnIG5hbWVzcGFjZXMuXG4gKiBFeHBvc2VkIGdsb2JhbGx5IGFzIGB3aW5kb3cuREVCVUdgLlxuICpcbiAqIEByZW1hcmtzXG4gKiBEZWJ1ZyBzZXR0aW5ncyBwZXJzaXN0IGFjcm9zcyBwbHVnaW4gcmVsb2FkcyBpbiBsb2NhbFN0b3JhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVidWdDb250cm9sbGVyIHtcbiAgLyoqXG4gICAqIERpc2FibGUgc3BlY2lmaWMgZGVidWcgbmFtZXNwYWNlcy4gRGlzYWJsZWQgbmFtZXNwYWNlcyB0YWtlIHByZWNlZGVuY2VcbiAgICogb3ZlciBlbmFibGVkIG9uZXMgd2hlbiB0aGVyZSdzIGEgY29uZmxpY3QuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogd2luZG93LkRFQlVHLmRpc2FibGUoJ2Zvby1iYXInKTsgLy8gaGlkZSBhbGwgZGVidWcgbWVzc2FnZXMgZnJvbSB0aGUgYGZvby1iYXJgIHBsdWdpblxuICAgKiB3aW5kb3cuREVCVUcuZGlzYWJsZSgnZm9vLWJhcjoqJyk7IC8vIGhpZGUgYWxsIGRlYnVnIG1lc3NhZ2VzIGZyb20gdGhlIGBmb28tYmFyYCBwbHVnaW4gc3VibW9kdWxlc1xuICAgKiB3aW5kb3cuREVCVUcuZGlzYWJsZShbJ2Zvby1iYXInLCAnYmF6LXF1eCddKTsgLy8gZGlzYWJsZSBtdWx0aXBsZSBuYW1lc3BhY2VzXG4gICAqIHdpbmRvdy5ERUJVRy5kaXNhYmxlKCdmb28tYmFyLGJhei1xdXgnKTsgLy8gZGlzYWJsZSBtdWx0aXBsZSBuYW1lc3BhY2VzIHVzaW5nIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdcbiAgICogd2luZG93LkRFQlVHLmRpc2FibGUoJyonKTsgLy8gZGlzYWJsZSBhbGwgZGVidWcgbWVzc2FnZXNcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lc3BhY2VzIC0gU2luZ2xlIG5hbWVzcGFjZSBzdHJpbmcgb3IgYXJyYXkgb2YgbmFtZXNwYWNlIHN0cmluZ3MgdG8gZGlzYWJsZVxuICAgKi9cbiAgZGlzYWJsZShuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBzcGVjaWZpYyBkZWJ1ZyBuYW1lc3BhY2VzLiBOb3RlIHRoYXQgZXhwbGljaXRseSBkaXNhYmxlZFxuICAgKiBuYW1lc3BhY2VzIChwcmVmaXhlZCB3aXRoICctJykgd2lsbCByZW1haW4gZGlzYWJsZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogd2luZG93LkRFQlVHLmVuYWJsZSgnZm9vLWJhcicpOyAvLyBzaG93IGFsbCBkZWJ1ZyBtZXNzYWdlcyBmcm9tIHRoZSBgZm9vLWJhcmAgcGx1Z2luXG4gICAqIHdpbmRvdy5ERUJVRy5lbmFibGUoJ2Zvby1iYXI6b2JzaWRpYW4tZGV2LXV0aWxzOionKTsgLy8gc2hvdyBhbGwgZGVidWcgbWVzc2FnZXMgZnJvbSB0aGUgYG9ic2lkaWFuLWRldi11dGlsc2AgbGlicmFyeSB3aXRoaW4gdGhlIGBmb28tYmFyYCBwbHVnaW5cbiAgICogd2luZG93LkRFQlVHLmVuYWJsZSgnZm9vLWJhcjoqJyk7IC8vIHNob3cgYWxsIGRlYnVnIG1lc3NhZ2VzIGZyb20gdGhlIGBmb28tYmFyYCBwbHVnaW4gYW5kIGl0cyBzdWJtb2R1bGVzXG4gICAqIHdpbmRvdy5ERUJVRy5lbmFibGUoJyo6b2JzaWRpYW4tZGV2LXV0aWxzOionKTsgLy8gc2hvdyBhbGwgZGVidWcgbWVzc2FnZXMgZm9yIHRoZSBgb2JzaWRpYW4tZGV2LXV0aWxzYCBsaWJyYXJ5IHdpdGhpbiBhbnkgcGx1Z2luXG4gICAqIHdpbmRvdy5ERUJVRy5lbmFibGUoWydmb28tYmFyJywgJ2Jhei1xdXgnXSk7IC8vIGVuYWJsZSBtdWx0aXBsZSBuYW1lc3BhY2VzXG4gICAqIHdpbmRvdy5ERUJVRy5lbmFibGUoJ2Zvby1iYXIsYmF6LXF1eCcpOyAvLyBlbmFibGUgbXVsdGlwbGUgbmFtZXNwYWNlcyB1c2luZyBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nXG4gICAqIHdpbmRvdy5ERUJVRy5lbmFibGUoJyonKTsgLy8gc2hvdyBhbGwgZGVidWcgbWVzc2FnZXNcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lc3BhY2VzIC0gU2luZ2xlIG5hbWVzcGFjZSBzdHJpbmcgb3IgYXJyYXkgb2YgbmFtZXNwYWNlIHN0cmluZ3MgdG8gZW5hYmxlXG4gICAqL1xuICBlbmFibGUobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudGx5IGNvbmZpZ3VyZWQgZGVidWcgbmFtZXNwYWNlcy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB3aW5kb3cuREVCVUcuZ2V0KCk7IC8vIHJldHVybnMgWydmb28tYmFyJywgJ2Jhei1xdXg6KicsICctbG9yZW0taXBzdW0nXVxuICAgKiBgYGBcbiAgICpcbiAgICogQHJldHVybnMgQXJyYXkgb2YgZW5hYmxlZCBhbmQgZGlzYWJsZWQgKHByZWZpeGVkIHdpdGggYC1gKSBkZWJ1ZyBuYW1lc3BhY2VzXG4gICAqL1xuICBnZXQoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNldCBkZWJ1ZyBuYW1lc3BhY2VzLCByZXBsYWNpbmcgYWxsIHByZXZpb3VzIGNvbmZpZ3VyYXRpb25zLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHdpbmRvdy5ERUJVRy5zZXQoWydmb28tYmFyJywgJ2Jhei1xdXg6KicsICctbG9yZW0taXBzdW0nXSk7IC8vIEVuYWJsZSAnZm9vLWJhcicgYW5kICdiYXotcXV4OionLCBleHBsaWNpdGx5IGRpc2FibGUgJ2xvcmVtLWlwc3VtJ1xuICAgKiB3aW5kb3cuREVCVUcuc2V0KCdmb28tYmFyLGJhei1xdXg6KiwtbG9yZW0taXBzdW0nKTsgLy8gU2FtZSB0aGluZyB1c2luZyBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nXG4gICAqIHdpbmRvdy5ERUJVRy5zZXQoJyonKTsgLy8gRW5hYmxlIGFsbCBkZWJ1ZyBtZXNzYWdlc1xuICAgKiB3aW5kb3cuREVCVUcuc2V0KCcnKTsgLy8gRGlzYWJsZSBhbGwgZGVidWcgbWVzc2FnZXNcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lc3BhY2VzIC0gU3RyaW5nIG9yIGFycmF5IG9mIG5hbWVzcGFjZSBwYXR0ZXJuc1xuICAgKi9cbiAgc2V0KG5hbWVzcGFjZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZDtcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|