@mnaoumov/obsidian-lib 10.5.0 → 10.6.0
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/README.md +6 -0
- package/codemirror/inline-token-widgets/package.json +6 -0
- package/codemirror/settings-facet/package.json +6 -0
- package/components/settings-facet-component/package.json +6 -0
- package/dist/lib/cjs/__merged.cjs +104 -1
- package/dist/lib/cjs/__merged.d.cts +20 -3
- package/dist/lib/cjs/anchored-suggest.cjs +232 -0
- package/dist/lib/cjs/anchored-suggest.d.cts +116 -0
- package/dist/lib/cjs/backlink-index.cjs +44 -8
- package/dist/lib/cjs/backlink-index.d.cts +23 -0
- package/dist/lib/cjs/bug-report.cjs +4 -2
- package/dist/lib/cjs/bug-report.d.cts +1 -1
- package/dist/lib/cjs/bulk-operation-progress.cjs +16 -1
- package/dist/lib/cjs/bulk-operation-progress.d.cts +22 -0
- package/dist/lib/cjs/case-insensitive-file-index.cjs +9 -1
- package/dist/lib/cjs/code-block-render-handoff.cjs +272 -0
- package/dist/lib/cjs/code-block-render-handoff.d.cts +131 -0
- package/dist/lib/cjs/codemirror/index.cjs +7 -1
- package/dist/lib/cjs/codemirror/index.d.cts +2 -0
- package/dist/lib/cjs/codemirror/inline-token-widgets.cjs +250 -0
- package/dist/lib/cjs/codemirror/inline-token-widgets.d.cts +109 -0
- package/dist/lib/cjs/codemirror/settings-facet.cjs +132 -0
- package/dist/lib/cjs/codemirror/settings-facet.d.cts +19 -0
- package/dist/lib/cjs/community-plugins.cjs +19 -2
- package/dist/lib/cjs/community-plugins.d.cts +14 -0
- package/dist/lib/cjs/components/bulk-operation-commit-component.cjs +5 -2
- package/dist/lib/cjs/components/index.cjs +4 -1
- package/dist/lib/cjs/components/index.d.cts +1 -0
- package/dist/lib/cjs/components/rename-delete-handler-component.cjs +105 -2
- package/dist/lib/cjs/components/settings-facet-component.cjs +136 -0
- package/dist/lib/cjs/components/settings-facet-component.d.cts +68 -0
- package/dist/lib/cjs/css-class.cjs +8 -1
- package/dist/lib/cjs/css-class.d.cts +28 -0
- package/dist/lib/cjs/desktop-bulk-operation-git.cjs +38 -13
- package/dist/lib/cjs/desktop-bulk-operation-git.d.cts +21 -1
- package/dist/lib/cjs/desktop-request-url-stream.cjs +258 -0
- package/dist/lib/cjs/desktop-request-url-stream.d.cts +22 -0
- package/dist/lib/cjs/editor-suggest-registrar.cjs +8 -2
- package/dist/lib/cjs/editor-suggest-registrar.d.cts +14 -2
- package/dist/lib/cjs/editor-suggest.cjs +198 -0
- package/dist/lib/cjs/editor-suggest.d.cts +103 -0
- package/dist/lib/cjs/generated-during-build.cjs +2 -2
- package/dist/lib/cjs/hotkey.cjs +185 -0
- package/dist/lib/cjs/hotkey.d.cts +59 -0
- package/dist/lib/cjs/i18n/locales/en.cjs +14 -1
- package/dist/lib/cjs/i18n/locales/en.d.cts +13 -0
- package/dist/lib/cjs/i18n/locales/translations-map.d.cts +13 -0
- package/dist/lib/cjs/index.cjs +31 -1
- package/dist/lib/cjs/index.d.cts +10 -0
- package/dist/lib/cjs/inline-token-renderer.cjs +145 -0
- package/dist/lib/cjs/inline-token-renderer.d.cts +88 -0
- package/dist/lib/cjs/link-and-tag-input-suggest.cjs +325 -0
- package/dist/lib/cjs/link-and-tag-input-suggest.d.cts +229 -0
- package/dist/lib/cjs/markdown-code-block-processor.cjs +13 -1
- package/dist/lib/cjs/markdown-code-block-processor.d.cts +18 -0
- package/dist/lib/cjs/markdown.cjs +6 -1
- package/dist/lib/cjs/markdown.d.cts +10 -1
- package/dist/lib/cjs/modals/modal.cjs +8 -5
- package/dist/lib/cjs/modals/modal.d.cts +4 -0
- package/dist/lib/cjs/plugin/plugin.cjs +5 -2
- package/dist/lib/cjs/plugin/plugin.d.cts +2 -0
- package/dist/lib/cjs/rendered-markdown.cjs +306 -0
- package/dist/lib/cjs/rendered-markdown.d.cts +77 -0
- package/dist/lib/cjs/request-url.cjs +523 -0
- package/dist/lib/cjs/request-url.d.cts +233 -0
- package/dist/lib/cjs/setting-components/folder-list-component.cjs +216 -0
- package/dist/lib/cjs/setting-components/folder-list-component.d.cts +73 -0
- package/dist/lib/cjs/setting-components/hotkey-component.cjs +260 -0
- package/dist/lib/cjs/setting-components/hotkey-component.d.cts +85 -0
- package/dist/lib/cjs/setting-components/index.cjs +13 -1
- package/dist/lib/cjs/setting-components/index.d.cts +4 -0
- package/dist/lib/cjs/setting-components/list-component.cjs +291 -0
- package/dist/lib/cjs/setting-components/list-component.d.cts +106 -0
- package/dist/lib/cjs/setting-components/tag-list-component.cjs +220 -0
- package/dist/lib/cjs/setting-components/tag-list-component.d.cts +82 -0
- package/dist/lib/cjs/setting-ex.cjs +51 -1
- package/dist/lib/cjs/setting-ex.d.cts +35 -1
- package/dist/lib/cjs/settings-tabs.cjs +258 -0
- package/dist/lib/cjs/settings-tabs.d.cts +101 -0
- package/dist/lib/esm/__merged.d.mts +20 -3
- package/dist/lib/esm/__merged.mjs +110 -2
- package/dist/lib/esm/anchored-suggest.d.mts +116 -0
- package/dist/lib/esm/anchored-suggest.mjs +144 -0
- package/dist/lib/esm/backlink-index.d.mts +23 -0
- package/dist/lib/esm/backlink-index.mjs +42 -7
- package/dist/lib/esm/bug-report.d.mts +1 -1
- package/dist/lib/esm/bug-report.mjs +4 -2
- package/dist/lib/esm/bulk-operation-progress.d.mts +22 -0
- package/dist/lib/esm/bulk-operation-progress.mjs +14 -1
- package/dist/lib/esm/case-insensitive-file-index.mjs +9 -1
- package/dist/lib/esm/code-block-render-handoff.d.mts +131 -0
- package/dist/lib/esm/code-block-render-handoff.mjs +183 -0
- package/dist/lib/esm/codemirror/index.d.mts +2 -0
- package/dist/lib/esm/codemirror/index.mjs +5 -1
- package/dist/lib/esm/codemirror/inline-token-widgets.d.mts +109 -0
- package/dist/lib/esm/codemirror/inline-token-widgets.mjs +167 -0
- package/dist/lib/esm/codemirror/settings-facet.d.mts +19 -0
- package/dist/lib/esm/codemirror/settings-facet.mjs +44 -0
- package/dist/lib/esm/community-plugins.d.mts +14 -0
- package/dist/lib/esm/community-plugins.mjs +18 -2
- package/dist/lib/esm/components/bulk-operation-commit-component.mjs +5 -2
- package/dist/lib/esm/components/index.d.mts +1 -0
- package/dist/lib/esm/components/index.mjs +3 -1
- package/dist/lib/esm/components/rename-delete-handler-component.mjs +105 -2
- package/dist/lib/esm/components/settings-facet-component.d.mts +68 -0
- package/dist/lib/esm/components/settings-facet-component.mjs +48 -0
- package/dist/lib/esm/css-class.d.mts +28 -0
- package/dist/lib/esm/css-class.mjs +8 -1
- package/dist/lib/esm/desktop-bulk-operation-git.d.mts +21 -1
- package/dist/lib/esm/desktop-bulk-operation-git.mjs +38 -13
- package/dist/lib/esm/desktop-request-url-stream.d.mts +22 -0
- package/dist/lib/esm/desktop-request-url-stream.mjs +170 -0
- package/dist/lib/esm/editor-suggest-registrar.d.mts +14 -2
- package/dist/lib/esm/editor-suggest-registrar.mjs +8 -2
- package/dist/lib/esm/editor-suggest.d.mts +103 -0
- package/dist/lib/esm/editor-suggest.mjs +109 -0
- package/dist/lib/esm/generated-during-build.mjs +2 -2
- package/dist/lib/esm/hotkey.d.mts +59 -0
- package/dist/lib/esm/hotkey.mjs +95 -0
- package/dist/lib/esm/i18n/locales/en.d.mts +13 -0
- package/dist/lib/esm/i18n/locales/en.mjs +14 -1
- package/dist/lib/esm/i18n/locales/translations-map.d.mts +13 -0
- package/dist/lib/esm/index.d.mts +10 -0
- package/dist/lib/esm/index.mjs +21 -1
- package/dist/lib/esm/inline-token-renderer.d.mts +88 -0
- package/dist/lib/esm/inline-token-renderer.mjs +59 -0
- package/dist/lib/esm/link-and-tag-input-suggest.d.mts +229 -0
- package/dist/lib/esm/link-and-tag-input-suggest.mjs +239 -0
- package/dist/lib/esm/markdown-code-block-processor.d.mts +18 -0
- package/dist/lib/esm/markdown-code-block-processor.mjs +16 -1
- package/dist/lib/esm/markdown.d.mts +10 -1
- package/dist/lib/esm/markdown.mjs +9 -1
- package/dist/lib/esm/modals/modal.d.mts +4 -0
- package/dist/lib/esm/modals/modal.mjs +8 -5
- package/dist/lib/esm/plugin/plugin.d.mts +2 -0
- package/dist/lib/esm/plugin/plugin.mjs +5 -2
- package/dist/lib/esm/rendered-markdown.d.mts +77 -0
- package/dist/lib/esm/rendered-markdown.mjs +219 -0
- package/dist/lib/esm/request-url.d.mts +233 -0
- package/dist/lib/esm/request-url.mjs +428 -0
- package/dist/lib/esm/setting-components/folder-list-component.d.mts +73 -0
- package/dist/lib/esm/setting-components/folder-list-component.mjs +131 -0
- package/dist/lib/esm/setting-components/hotkey-component.d.mts +85 -0
- package/dist/lib/esm/setting-components/hotkey-component.mjs +178 -0
- package/dist/lib/esm/setting-components/index.d.mts +4 -0
- package/dist/lib/esm/setting-components/index.mjs +9 -1
- package/dist/lib/esm/setting-components/list-component.d.mts +106 -0
- package/dist/lib/esm/setting-components/list-component.mjs +206 -0
- package/dist/lib/esm/setting-components/tag-list-component.d.mts +82 -0
- package/dist/lib/esm/setting-components/tag-list-component.mjs +131 -0
- package/dist/lib/esm/setting-ex.d.mts +35 -1
- package/dist/lib/esm/setting-ex.mjs +51 -1
- package/dist/lib/esm/settings-tabs.d.mts +101 -0
- package/dist/lib/esm/settings-tabs.mjs +170 -0
- package/dist/styles.css +83 -1
- package/package.json +3 -3
- package/setting-components/folder-list-component/package.json +6 -0
- package/setting-components/hotkey-component/package.json +6 -0
- package/setting-components/list-component/package.json +6 -0
- package/setting-components/tag-list-component/package.json +6 -0
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
/// <reference path="./library-references.d.cts" />
|
|
2
2
|
export { AppActiveFileProvider } from './active-file-provider.cjs';
|
|
3
|
+
export { AnchoredSuggest } from './anchored-suggest.cjs';
|
|
3
4
|
export { getApp } from './app.cjs';
|
|
4
5
|
export { retryWithTimeoutNotice, runWithTimeoutNotice } from './async-with-notice.cjs';
|
|
5
6
|
export { AttachmentPathContext, CUSTOM_ATTACHMENT_LOCATION_PLUGIN_ID, DUMMY_PATH, getAttachmentFilePath, getAttachmentFolderPath, getAttachmentFolderPathForAttachment, getAttachmentFolderPathSyncOrNull, getAvailablePathForAttachments, getCheckIsAttachmentUnitFolderFunction, hasOwnAttachmentFolder, isAtProperAttachmentPath } from './attachment-path.cjs';
|
|
6
7
|
export { findAttachmentUnitFolderPath, rebasePathOntoFolder } from './attachment-unit-folder.cjs';
|
|
7
|
-
export { getIndexedBacklinksForFile } from './backlink-index.cjs';
|
|
8
|
+
export { getIndexedBacklinksForFile, iterateReferencesAffectedByRename } from './backlink-index.cjs';
|
|
8
9
|
export { renderBacklinksTable, renderDelayedBacklinks, renderDelayedBacklinksForFolder } from './backlink.cjs';
|
|
9
10
|
export { PluginBasesViewRegistrar } from './bases-view-registrar.cjs';
|
|
10
11
|
export { BUG_REPORT_ISSUE_FORM_TEMPLATE, BugReportIssueFormFieldId, formatBugReportEnvironment, getBugReportEnvironment, getBugReportIssueFormUrl, getGitHubIssueFormUrl } from './bug-report.cjs';
|
|
11
|
-
export { registerBulkOperationProgressListener, reportBulkOperationProgress } from './bulk-operation-progress.cjs';
|
|
12
|
+
export { BULK_OPERATION_HOLD_INTERVAL_IN_MILLISECONDS, holdBulkOperationWhile, registerBulkOperationProgressListener, reportBulkOperationProgress } from './bulk-operation-progress.cjs';
|
|
12
13
|
export { buildBeforeOperationCommitSubject, buildOperationCommitMessage, BULK_OPERATION_LOCK_FILE_NAME, BULK_OPERATION_LOCK_STALE_AFTER_IN_MILLISECONDS, formatOperationId, getNextOperationId, isBulkOperationLock, isBulkOperationLockStale, OPERATION_TRAILER_KEY, parseBulkOperationCommit, parseOperationNumber, PLUGIN_TRAILER_KEY } from './bulk-operation.cjs';
|
|
13
14
|
export { CalloutMode, renderCallout, wrapForCallout } from './callout.cjs';
|
|
14
15
|
export { getCanvasReferences } from './canvas.cjs';
|
|
15
16
|
export { CaseInsensitiveFileIndex, getCaseInsensitiveFileIndex, setCaseInsensitiveFileIndex, unsetCaseInsensitiveFileIndex } from './case-insensitive-file-index.cjs';
|
|
16
17
|
export { createCodeBlockRegExp } from './code-block-reg-exp.cjs';
|
|
18
|
+
export { captureCodeBlockFocus, claimCodeBlockRenderHandoff, CODE_BLOCK_RENDER_HANDOFF_LIFETIME_IN_MILLISECONDS, recordCodeBlockRenderHandoff, restoreCodeBlockFocus } from './code-block-render-handoff.cjs';
|
|
17
19
|
export { createIncrementalParseStateField } from './codemirror/incremental-parse-state-field.cjs';
|
|
20
|
+
export { createInlineTokenWidgetsExtension, execAll, toGlobalRegExp } from './codemirror/inline-token-widgets.cjs';
|
|
18
21
|
export { dispatchToAllMarkdownEditorViews, getAllMarkdownEditorViews } from './codemirror/markdown-editor-views.cjs';
|
|
19
22
|
export { rangeSetToArray } from './codemirror/range-set.cjs';
|
|
23
|
+
export { createSettingsFacet } from './codemirror/settings-facet.cjs';
|
|
20
24
|
export { AbstractFileCommandHandler } from './command-handlers/abstract-file-command-handler.cjs';
|
|
21
25
|
export { CommandHandlerComponent } from './command-handlers/command-handler-component.cjs';
|
|
22
26
|
export { CommandHandler } from './command-handlers/command-handler.cjs';
|
|
@@ -30,7 +34,7 @@ export { OpenSettingsCommandHandler } from './command-handlers/open-settings-com
|
|
|
30
34
|
export { UndoBulkOperationCommandHandler } from './command-handlers/undo-bulk-operation-command-handler.cjs';
|
|
31
35
|
export { UnlockActiveNoteCommandHandler } from './command-handlers/unlock-active-note-command-handler.cjs';
|
|
32
36
|
export { PluginCommandRegistrar } from './command-registrar.cjs';
|
|
33
|
-
export { configureCommunityPlugin, ConfigureCommunityPluginResult, disableCommunityPlugin, enableCommunityPlugin, getCommunityPluginRepo, getLatestReleaseVersion, installCommunityPlugin, installConfigureEnableCommunityPlugin, searchCommunityPlugins, toggleEnableCommunityPlugin, toggleInstallCommunityPlugin, uninstallCommunityPlugin, updateCommunityPlugin, UpdateCommunityPluginResult } from './community-plugins.cjs';
|
|
37
|
+
export { configureCommunityPlugin, ConfigureCommunityPluginResult, disableCommunityPlugin, enableCommunityPlugin, getCommunityPluginRepo, getLatestReleaseVersion, installCommunityPlugin, installConfigureEnableCommunityPlugin, PluginEnableRefusedError, searchCommunityPlugins, toggleEnableCommunityPlugin, toggleInstallCommunityPlugin, uninstallCommunityPlugin, updateCommunityPlugin, UpdateCommunityPluginResult } from './community-plugins.cjs';
|
|
34
38
|
export { AbortSignalComponent } from './components/abort-signal-component.cjs';
|
|
35
39
|
export { AllWindowsEventComponent } from './components/all-windows-event-component.cjs';
|
|
36
40
|
export { AsyncErrorHandlerComponent } from './components/async-error-handler-component.cjs';
|
|
@@ -62,6 +66,7 @@ export { RegistryComponent } from './components/registry-component.cjs';
|
|
|
62
66
|
export { ReleaseNotesComponent } from './components/release-notes-component.cjs';
|
|
63
67
|
export { EmptyFolderBehavior, RenameDeleteHandlerComponent } from './components/rename-delete-handler-component.cjs';
|
|
64
68
|
export { NOT_EMPTY_DIRECTORY_ERROR_CODE, RmdirGuardComponent } from './components/rmdir-guard-component.cjs';
|
|
69
|
+
export { SettingsFacetComponent } from './components/settings-facet-component.cjs';
|
|
65
70
|
export { SettingsMigrationComponent } from './components/settings-migration-component.cjs';
|
|
66
71
|
export { SyntaxHighlightingComponent } from './components/syntax-highlighting-component.cjs';
|
|
67
72
|
export { TemplatesLanguageComponent } from './components/templates-language-component.cjs';
|
|
@@ -81,8 +86,10 @@ export { getDemoVaultArchiveFileName, getDemoVaultFolderName } from './demo-vaul
|
|
|
81
86
|
export { BulkOperationGitRepo, GitCommandError } from './desktop-bulk-operation-git.cjs';
|
|
82
87
|
export { openDemoVault } from './desktop-demo-vault-opener.cjs';
|
|
83
88
|
export { getDesktopOperatingSystem } from './desktop-operating-system.cjs';
|
|
89
|
+
export { openDesktopRequestUrlStream } from './desktop-request-url-stream.cjs';
|
|
84
90
|
export { PluginEditorExtensionRegistrar } from './editor-extension-registrar.cjs';
|
|
85
91
|
export { PluginEditorSuggestRegistrar } from './editor-suggest-registrar.cjs';
|
|
92
|
+
export { CommandEditorSuggest, prioritizeEditorSuggest } from './editor-suggest.cjs';
|
|
86
93
|
export { syncOpenEditorBuffersForPath, toggleEditorReadOnly } from './editor.cjs';
|
|
87
94
|
export { EventRefDisposable, subscribeDisposableEvent, subscribeEvent } from './events.cjs';
|
|
88
95
|
export { PluginExtensionsRegistrar } from './extensions-registrar.cjs';
|
|
@@ -95,14 +102,17 @@ export { enableFrontmatterFormattingPreservation, preserveFrontmatterFormatting
|
|
|
95
102
|
export { isFrontmatterLinkCacheWithOffsets, toFrontmatterLinkCacheWithOffsets } from './frontmatter-link-cache-with-offsets.cjs';
|
|
96
103
|
export { checkIsPlainObject, parseFrontmatter, registerFrontmatterFormattingPreserver, removeEmptyFrontmatterValues, setFrontmatter } from './frontmatter.cjs';
|
|
97
104
|
export { LIBRARY_STYLES, LIBRARY_VERSION } from './generated-during-build.cjs';
|
|
105
|
+
export { formatHotkey, getHotkeyFromKeyboardEvent, isSameHotkey } from './hotkey.cjs';
|
|
98
106
|
export { PluginHoverLinkSourceRegistrar } from './hover-link-source-registrar.cjs';
|
|
99
107
|
export { appendCodeBlock, appendTextOrFragmentClone, applySpellcheckMode, asCodeBlock, createFragmentWithCodeBlocks } from './html-element.cjs';
|
|
100
108
|
export { DEFAULT_NS, initI18N, t } from './i18n/i18n.cjs';
|
|
101
109
|
export { en } from './i18n/locales/en.cjs';
|
|
102
110
|
export { DEFAULT_LANGUAGE, defaultTranslationsMap } from './i18n/locales/translations-map.cjs';
|
|
111
|
+
export { createInlineTokenPostProcessor, DEFAULT_INLINE_TOKEN_SKIP_SELECTOR, registerInlineTokenRenderer } from './inline-token-renderer.cjs';
|
|
103
112
|
export { isInObsidian } from './is-in-obsidian.cjs';
|
|
104
113
|
export { injectLibraryStyles, LAST_LIBRARY_VERSION_KEY, LIBRARY_STYLES_ELEMENT_ID } from './library-styles.cjs';
|
|
105
114
|
export { OBSIDIAN_LIBRARY_NAME, ObsidianLibrary } from './library.cjs';
|
|
115
|
+
export { getLinkAndTagCompletionTrigger, getVaultTagSuggestions, LinkAndTagCompletionKind, LinkAndTagInputSuggest } from './link-and-tag-input-suggest.cjs';
|
|
106
116
|
export { normalizeLinkName } from './link-name.cjs';
|
|
107
117
|
export { buildBacklinksSnapshot, convertLink, editBacklinks, editBacklinksSnapshot, editReferences, editReferencesInContent, extractReferenceFile, generateMarkdownLink, generateRawMarkdownLink, getGenerateMarkdownLinkDefaultParamsFns, hasAngleBrackets, hasEmbedSyntax, hasLeadingDot, hasLeadingSlash, hasWikilinkSyntax, LinkPathStyle, LinkStyle, shouldResetAlias, splitSubpath, updateFileUrlLinksInContent, updateFileUrlLinksInFile, updateLink, updateReferencesInContent, updateReferencesInFile } from './link.cjs';
|
|
108
118
|
export { invokeAsyncAndLog } from './logger.cjs';
|
|
@@ -150,6 +160,8 @@ export { checkPropertyEntryMatches, isPropertyEntry, PROPERTY_ENTRY_PREFIX } fro
|
|
|
150
160
|
export { addToQueue, addToQueueAndWait, flushQueue } from './queue.cjs';
|
|
151
161
|
export { AppContext, useApp } from './react/app-context.cjs';
|
|
152
162
|
export { getReferenceLinkText, isCanvasFileNodeReference, isCanvasReference, isCanvasTextNodeReference, isReferenceInHeading, isReferenceInOffsetRange, referenceToFileChange, sortReferences } from './reference.cjs';
|
|
163
|
+
export { isOwnedByRenderedMarkdown, registerFoldHandlers, registerFootnoteLinkHandler } from './rendered-markdown.cjs';
|
|
164
|
+
export { createRequestUrlFetch, encodeRequestUrlRequest, RequestUrlError, requestUrlEx, requestUrlStream } from './request-url.cjs';
|
|
153
165
|
export { isResourceLockedForPath, isResourceLockedForPathByAncestor, lockResourceForPath, requestResourceUnlockForPath, ResourceLockComponent, ResourceLockedError, unlockResourceForPath } from './resource-lock.cjs';
|
|
154
166
|
export { relativePathToResourceUrl } from './resource-url.cjs';
|
|
155
167
|
export { PluginRibbonIconRegistrar } from './ribbon-icon-registrar.cjs';
|
|
@@ -159,6 +171,9 @@ export { DateComponent } from './setting-components/date-component.cjs';
|
|
|
159
171
|
export { DateTimeComponent } from './setting-components/date-time-component.cjs';
|
|
160
172
|
export { EmailComponent } from './setting-components/email-component.cjs';
|
|
161
173
|
export { FileComponent } from './setting-components/file-component.cjs';
|
|
174
|
+
export { FolderInputSuggest, FolderListComponent } from './setting-components/folder-list-component.cjs';
|
|
175
|
+
export { HotkeyComponent } from './setting-components/hotkey-component.cjs';
|
|
176
|
+
export { ListComponent } from './setting-components/list-component.cjs';
|
|
162
177
|
export { MonthComponent } from './setting-components/month-component.cjs';
|
|
163
178
|
export { MultipleDropdownComponent } from './setting-components/multiple-dropdown-component.cjs';
|
|
164
179
|
export { MultipleEmailComponent } from './setting-components/multiple-email-component.cjs';
|
|
@@ -167,6 +182,7 @@ export { MultipleTextComponent } from './setting-components/multiple-text-compon
|
|
|
167
182
|
export { NumberComponent } from './setting-components/number-component.cjs';
|
|
168
183
|
export { PasswordComponent } from './setting-components/password-component.cjs';
|
|
169
184
|
export { ensureWrapped } from './setting-components/setting-component-wrapper.cjs';
|
|
185
|
+
export { TagInputSuggest, TagListComponent } from './setting-components/tag-list-component.cjs';
|
|
170
186
|
export { TelephoneComponent } from './setting-components/telephone-component.cjs';
|
|
171
187
|
export { getTextBasedComponentValue } from './setting-components/text-based-component.cjs';
|
|
172
188
|
export { TimeComponent } from './setting-components/time-component.cjs';
|
|
@@ -181,6 +197,7 @@ export { WeekComponent } from './setting-components/week-component.cjs';
|
|
|
181
197
|
export { adoptSettingEx, SettingEx } from './setting-ex.cjs';
|
|
182
198
|
export { SettingGroupEx } from './setting-group-ex.cjs';
|
|
183
199
|
export { openSettingTab } from './settings-modal.cjs';
|
|
200
|
+
export { SettingsTabs } from './settings-tabs.cjs';
|
|
184
201
|
export { PluginStatusBarItemRegistrar } from './status-bar-item-registrar.cjs';
|
|
185
202
|
export { getTemplaterFunctions, getTemplaterRenderTargetFile, parseTemplate, requireTemplaterApi, resolveTemplaterApi, TEMPLATER_PLUGIN_ID, TemplaterActiveFileProvider, TemplaterRunMode, TemplaterUnavailabilityReason, TemplaterUnavailableError } from './templater.cjs';
|
|
186
203
|
export { DurationTransformer } from './transformers/duration-transformer.cjs';
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return "/";
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: "android"
|
|
14
|
+
};
|
|
15
|
+
const existingProcess = globalThis.process;
|
|
16
|
+
if (!existingProcess) {
|
|
17
|
+
globalThis.process = browserProcess;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (existingProcess.versions?.node) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const existingProcessRecord = existingProcess;
|
|
24
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
25
|
+
existingProcessRecord[key] ??= value;
|
|
26
|
+
}
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ensureBrowserProcess();
|
|
31
|
+
})();
|
|
32
|
+
(function patchObsidianRequire() {
|
|
33
|
+
const originalRequire = require;
|
|
34
|
+
if (!originalRequire || originalRequire.__isPatched) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
require = Object.assign(
|
|
38
|
+
(id) => requirePatched(id),
|
|
39
|
+
originalRequire,
|
|
40
|
+
{
|
|
41
|
+
__isPatched: true
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
function extractDefault($module) {
|
|
45
|
+
return $module && $module.__esModule && "default" in $module ? $module.default : $module;
|
|
46
|
+
}
|
|
47
|
+
const OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
|
|
48
|
+
"@codemirror/autocomplete",
|
|
49
|
+
"@codemirror/collab",
|
|
50
|
+
"@codemirror/commands",
|
|
51
|
+
"@codemirror/language",
|
|
52
|
+
"@codemirror/lint",
|
|
53
|
+
"@codemirror/search",
|
|
54
|
+
"@codemirror/state",
|
|
55
|
+
"@codemirror/text",
|
|
56
|
+
"@codemirror/view",
|
|
57
|
+
"@lezer/common",
|
|
58
|
+
"@lezer/highlight",
|
|
59
|
+
"@lezer/lr",
|
|
60
|
+
"obsidian"
|
|
61
|
+
]);
|
|
62
|
+
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
|
|
63
|
+
"@codemirror/closebrackets",
|
|
64
|
+
"@codemirror/comment",
|
|
65
|
+
"@codemirror/fold",
|
|
66
|
+
"@codemirror/gutter",
|
|
67
|
+
"@codemirror/highlight",
|
|
68
|
+
"@codemirror/history",
|
|
69
|
+
"@codemirror/matchbrackets",
|
|
70
|
+
"@codemirror/panel",
|
|
71
|
+
"@codemirror/rangeset",
|
|
72
|
+
"@codemirror/rectangular-selection",
|
|
73
|
+
"@codemirror/stream-parser",
|
|
74
|
+
"@codemirror/tooltip"
|
|
75
|
+
]);
|
|
76
|
+
function requirePatched(id) {
|
|
77
|
+
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
78
|
+
return originalRequire?.(id);
|
|
79
|
+
}
|
|
80
|
+
const app = globalThis.app;
|
|
81
|
+
if (app?.isMobile) {
|
|
82
|
+
if (id === "process" || id === "node:process") {
|
|
83
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
84
|
+
return process;
|
|
85
|
+
}
|
|
86
|
+
} else {
|
|
87
|
+
const $module = originalRequire?.(id);
|
|
88
|
+
if ($module) {
|
|
89
|
+
return extractDefault($module);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
93
|
+
return {};
|
|
94
|
+
}
|
|
95
|
+
})();
|
|
96
|
+
|
|
97
|
+
"use strict";
|
|
98
|
+
var __defProp = Object.defineProperty;
|
|
99
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
100
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
101
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
102
|
+
var __export = (target, all) => {
|
|
103
|
+
for (var name in all)
|
|
104
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
105
|
+
};
|
|
106
|
+
var __copyProps = (to, from, except, desc) => {
|
|
107
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
108
|
+
for (let key of __getOwnPropNames(from))
|
|
109
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
110
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
111
|
+
}
|
|
112
|
+
return to;
|
|
113
|
+
};
|
|
114
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
115
|
+
var anchored_suggest_exports = {};
|
|
116
|
+
__export(anchored_suggest_exports, {
|
|
117
|
+
AnchoredSuggest: () => AnchoredSuggest
|
|
118
|
+
});
|
|
119
|
+
module.exports = __toCommonJS(anchored_suggest_exports);
|
|
120
|
+
var import_obsidian = require('obsidian');
|
|
121
|
+
const DEFAULT_LIMIT = 100;
|
|
122
|
+
class AnchoredSuggest extends import_obsidian.PopoverSuggest {
|
|
123
|
+
/**
|
|
124
|
+
* The maximum number of suggestions shown. `0` disables the limit. Defaults to `100`.
|
|
125
|
+
*/
|
|
126
|
+
limit = DEFAULT_LIMIT;
|
|
127
|
+
anchorEl = null;
|
|
128
|
+
anchorRect = null;
|
|
129
|
+
outsidePointerDownDocument = null;
|
|
130
|
+
outsidePointerDownHandler = this.onOutsidePointerDown.bind(this);
|
|
131
|
+
requestCount = 0;
|
|
132
|
+
/**
|
|
133
|
+
* Creates a new anchored suggest.
|
|
134
|
+
*
|
|
135
|
+
* @param app - The Obsidian app.
|
|
136
|
+
* @param scope - The parent keymap scope.
|
|
137
|
+
*/
|
|
138
|
+
constructor(app, scope) {
|
|
139
|
+
super(app, scope);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Closes the popover.
|
|
143
|
+
*/
|
|
144
|
+
close() {
|
|
145
|
+
this.requestCount++;
|
|
146
|
+
this.removeOutsidePointerDownHandler();
|
|
147
|
+
super.close();
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Opens the popover at an anchor, or moves it there when it is already open.
|
|
151
|
+
*
|
|
152
|
+
* @param params - The parameters.
|
|
153
|
+
* @returns Whether the popover is open: `false` when there is nothing to suggest, or when it was closed or reopened
|
|
154
|
+
* while the suggestions were computed.
|
|
155
|
+
*/
|
|
156
|
+
async openAt(params) {
|
|
157
|
+
const { anchor } = params;
|
|
158
|
+
if (isElement(anchor)) {
|
|
159
|
+
this.anchorEl = anchor;
|
|
160
|
+
this.anchorRect = anchor.getBoundingClientRect();
|
|
161
|
+
} else {
|
|
162
|
+
this.anchorEl = null;
|
|
163
|
+
this.anchorRect = anchor;
|
|
164
|
+
}
|
|
165
|
+
return await this.refresh(params.query ?? "", this.anchorRect);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Picks a suggestion: closes the popover, then hands the suggestion to {@link AnchoredSuggest.onChooseSuggestion}.
|
|
169
|
+
*
|
|
170
|
+
* @param value - The suggestion.
|
|
171
|
+
* @param $event - The event that picked it.
|
|
172
|
+
*/
|
|
173
|
+
selectSuggestion(value, $event) {
|
|
174
|
+
this.close();
|
|
175
|
+
this.onChooseSuggestion(value, $event);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Recomputes the suggestions for a new query at the current anchor.
|
|
179
|
+
*
|
|
180
|
+
* @param query - The query.
|
|
181
|
+
* @returns Whether the popover is open afterwards.
|
|
182
|
+
*/
|
|
183
|
+
async setQuery(query) {
|
|
184
|
+
return this.anchorRect ? await this.refresh(query, this.anchorRect) : false;
|
|
185
|
+
}
|
|
186
|
+
addOutsidePointerDownHandler() {
|
|
187
|
+
this.removeOutsidePointerDownHandler();
|
|
188
|
+
this.outsidePointerDownDocument = this.suggestEl.ownerDocument;
|
|
189
|
+
this.outsidePointerDownDocument.addEventListener("pointerdown", this.outsidePointerDownHandler, { capture: true });
|
|
190
|
+
}
|
|
191
|
+
onOutsidePointerDown(event_) {
|
|
192
|
+
const path = event_.composedPath();
|
|
193
|
+
if (path.includes(this.suggestEl) || this.anchorEl && path.includes(this.anchorEl)) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
this.close();
|
|
197
|
+
}
|
|
198
|
+
async refresh(query, anchorRect) {
|
|
199
|
+
const requestId = ++this.requestCount;
|
|
200
|
+
let suggestions = await this.getSuggestions(query);
|
|
201
|
+
if (requestId !== this.requestCount) {
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
if (suggestions.length === 0) {
|
|
205
|
+
this.close();
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
if (this.limit > 0) {
|
|
209
|
+
suggestions = suggestions.slice(0, this.limit);
|
|
210
|
+
}
|
|
211
|
+
this.suggestions.setSuggestions(suggestions);
|
|
212
|
+
this.open();
|
|
213
|
+
this.reposition(DOMRect.fromRect(anchorRect));
|
|
214
|
+
if (this.anchorEl) {
|
|
215
|
+
this.setAutoDestroy(this.anchorEl);
|
|
216
|
+
}
|
|
217
|
+
this.addOutsidePointerDownHandler();
|
|
218
|
+
return true;
|
|
219
|
+
}
|
|
220
|
+
removeOutsidePointerDownHandler() {
|
|
221
|
+
this.outsidePointerDownDocument?.removeEventListener("pointerdown", this.outsidePointerDownHandler, { capture: true });
|
|
222
|
+
this.outsidePointerDownDocument = null;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
function isElement(anchor) {
|
|
226
|
+
return "getBoundingClientRect" in anchor;
|
|
227
|
+
}
|
|
228
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
229
|
+
0 && (module.exports = {
|
|
230
|
+
AnchoredSuggest
|
|
231
|
+
});
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbmNob3JlZC1zdWdnZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBBIHN1Z2dlc3QgcG9wb3ZlciBvcGVuZWQgYXQgYW4gZWxlbWVudCBvciBhIHJlY3RhbmdsZSwgd2l0aCBubyBpbnB1dCBiZWhpbmQgaXQuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIFNjb3BlXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgUG9wb3ZlclN1Z2dlc3QgfSBmcm9tICdvYnNpZGlhbic7XG5cbmNvbnN0IERFRkFVTFRfTElNSVQgPSAxMDA7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIEFuY2hvcmVkU3VnZ2VzdC5vcGVuQXR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFuY2hvcmVkU3VnZ2VzdE9wZW5BdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCBvciB0aGUgdmlld3BvcnQgcmVjdGFuZ2xlIHRoZSBwb3BvdmVyIGlzIHBsYWNlZCBhZ2FpbnN0LiBXaGVuIGFuIGVsZW1lbnQgaXMgZ2l2ZW4sIHRoZSBwb3BvdmVyIGNsb3Nlc1xuICAgKiBvbmNlIHRoZSBlbGVtZW50IGxlYXZlcyB0aGUgRE9NLCBhbmQgYSBwb2ludGVyLWRvd24gb24gaXQgZG9lcyBub3QgY291bnQgYXMgYW4gb3V0c2lkZSBjbGljay5cbiAgICovXG4gIHJlYWRvbmx5IGFuY2hvcjogRE9NUmVjdFJlYWRPbmx5IHwgSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBxdWVyeSBoYW5kZWQgdG8ge0BsaW5rIEFuY2hvcmVkU3VnZ2VzdC5nZXRTdWdnZXN0aW9uc30uIERlZmF1bHRzIHRvIGAnJ2AuXG4gICAqL1xuICByZWFkb25seSBxdWVyeT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHN1Z2dlc3QgcG9wb3ZlciBvcGVuZWQgYXQgYW4gYW5jaG9yLCBmb3IgYSBwaWNrZXIgdGhhdCBoYXMgbm8gdGV4dCBpbnB1dDogYSB0b29sYmFyIGJ1dHRvbiwgYSBjb250ZXh0LW1lbnUgYWN0aW9uLFxuICogYSBkZWNvcmF0aW9uIGluIHRoZSBlZGl0b3IuXG4gKlxuICogT2JzaWRpYW4ncyBgQWJzdHJhY3RJbnB1dFN1Z2dlc3RgIG9wZW5zIG9ubHkgZnJvbSBhbiBpbnB1dCBhbmQgYEVkaXRvclN1Z2dlc3RgIG9ubHkgZnJvbSB0aGUgZWRpdG9yLiBUaGlzIG9uZSBpc1xuICogb3BlbmVkIGJ5IHtAbGluayBBbmNob3JlZFN1Z2dlc3Qub3BlbkF0fSBhbmQgY2xvc2VzIG9uIEVzY2FwZSwgb24gYSBwb2ludGVyLWRvd24gb3V0c2lkZSBpdCwgYW5kIHdoZW4gaXRzIGFuY2hvclxuICogZWxlbWVudCBsZWF2ZXMgdGhlIERPTS4gVGhlIGtleWJvYXJkIHdvcmtzIGFzIGluIE9ic2lkaWFuJ3Mgb3duIHBvcG92ZXJzOiBhcnJvd3MgbW92ZSwgRW50ZXIgcGlja3MuXG4gKlxuICogYGBgdHNcbiAqIGNsYXNzIENvbG9yU3VnZ2VzdCBleHRlbmRzIEFuY2hvcmVkU3VnZ2VzdDxzdHJpbmc+IHtcbiAqICAgcHJvdGVjdGVkIGdldFN1Z2dlc3Rpb25zKCk6IHN0cmluZ1tdIHtcbiAqICAgICByZXR1cm4gWydyZWQnLCAnZ3JlZW4nLCAnYmx1ZSddO1xuICogICB9XG4gKlxuICogICBwdWJsaWMgcmVuZGVyU3VnZ2VzdGlvbihjb2xvcjogc3RyaW5nLCBlbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAqICAgICBlbC5zZXRUZXh0KGNvbG9yKTtcbiAqICAgfVxuICpcbiAqICAgcHJvdGVjdGVkIG9uQ2hvb3NlU3VnZ2VzdGlvbihjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gKiAgICAgY29uc29sZS5sb2coY29sb3IpO1xuICogICB9XG4gKiB9XG4gKlxuICogYXdhaXQgbmV3IENvbG9yU3VnZ2VzdCh0aGlzLmFwcCkub3BlbkF0KHsgYW5jaG9yOiBidXR0b25FbCB9KTtcbiAqIGBgYFxuICpcbiAqIEl0IHJlbGllcyBvbiBgUG9wb3ZlclN1Z2dlc3RgIG1lbWJlcnMgdGhhdCBgb2JzaWRpYW4uZC50c2AgZG9lcyBub3QgZGVjbGFyZSAoYHN1Z2dlc3Rpb25zYCwgYHJlcG9zaXRpb25gLFxuICogYHNldEF1dG9EZXN0cm95YCwgYHN1Z2dlc3RFbGApLCByZWFkIGZyb20gT2JzaWRpYW4gYDEuMTUuMGAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgYSBzdWdnZXN0aW9uLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQW5jaG9yZWRTdWdnZXN0PFQ+IGV4dGVuZHMgUG9wb3ZlclN1Z2dlc3Q8VD4ge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHN1Z2dlc3Rpb25zIHNob3duLiBgMGAgZGlzYWJsZXMgdGhlIGxpbWl0LiBEZWZhdWx0cyB0byBgMTAwYC5cbiAgICovXG4gIHB1YmxpYyBsaW1pdCA9IERFRkFVTFRfTElNSVQ7XG5cbiAgcHJpdmF0ZSBhbmNob3JFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBhbmNob3JSZWN0OiBET01SZWN0UmVhZE9ubHkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBvdXRzaWRlUG9pbnRlckRvd25Eb2N1bWVudDogRG9jdW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvdXRzaWRlUG9pbnRlckRvd25IYW5kbGVyID0gdGhpcy5vbk91dHNpZGVQb2ludGVyRG93bi5iaW5kKHRoaXMpO1xuICBwcml2YXRlIHJlcXVlc3RDb3VudCA9IDA7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYW5jaG9yZWQgc3VnZ2VzdC5cbiAgICpcbiAgICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAuXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBwYXJlbnQga2V5bWFwIHNjb3BlLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBzY29wZT86IFNjb3BlKSB7XG4gICAgc3VwZXIoYXBwLCBzY29wZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBwb3BvdmVyLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMucmVxdWVzdENvdW50Kys7XG4gICAgdGhpcy5yZW1vdmVPdXRzaWRlUG9pbnRlckRvd25IYW5kbGVyKCk7XG4gICAgc3VwZXIuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgcG9wb3ZlciBhdCBhbiBhbmNob3IsIG9yIG1vdmVzIGl0IHRoZXJlIHdoZW4gaXQgaXMgYWxyZWFkeSBvcGVuLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHBvcG92ZXIgaXMgb3BlbjogYGZhbHNlYCB3aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG8gc3VnZ2VzdCwgb3Igd2hlbiBpdCB3YXMgY2xvc2VkIG9yIHJlb3BlbmVkXG4gICAqICAgd2hpbGUgdGhlIHN1Z2dlc3Rpb25zIHdlcmUgY29tcHV0ZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgb3BlbkF0KHBhcmFtczogQW5jaG9yZWRTdWdnZXN0T3BlbkF0UGFyYW1zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBhbmNob3IgfSA9IHBhcmFtcztcbiAgICBpZiAoaXNFbGVtZW50KGFuY2hvcikpIHtcbiAgICAgIHRoaXMuYW5jaG9yRWwgPSBhbmNob3I7XG4gICAgICB0aGlzLmFuY2hvclJlY3QgPSBhbmNob3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYW5jaG9yRWwgPSBudWxsO1xuICAgICAgdGhpcy5hbmNob3JSZWN0ID0gYW5jaG9yO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWZyZXNoKHBhcmFtcy5xdWVyeSA/PyAnJywgdGhpcy5hbmNob3JSZWN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQaWNrcyBhIHN1Z2dlc3Rpb246IGNsb3NlcyB0aGUgcG9wb3ZlciwgdGhlbiBoYW5kcyB0aGUgc3VnZ2VzdGlvbiB0byB7QGxpbmsgQW5jaG9yZWRTdWdnZXN0Lm9uQ2hvb3NlU3VnZ2VzdGlvbn0uXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBzdWdnZXN0aW9uLlxuICAgKiBAcGFyYW0gJGV2ZW50IC0gVGhlIGV2ZW50IHRoYXQgcGlja2VkIGl0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHNlbGVjdFN1Z2dlc3Rpb24odmFsdWU6IFQsICRldmVudDogS2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgdGhpcy5vbkNob29zZVN1Z2dlc3Rpb24odmFsdWUsICRldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogUmVjb21wdXRlcyB0aGUgc3VnZ2VzdGlvbnMgZm9yIGEgbmV3IHF1ZXJ5IGF0IHRoZSBjdXJyZW50IGFuY2hvci5cbiAgICpcbiAgICogQHBhcmFtIHF1ZXJ5IC0gVGhlIHF1ZXJ5LlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwb3BvdmVyIGlzIG9wZW4gYWZ0ZXJ3YXJkcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRRdWVyeShxdWVyeTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYW5jaG9yUmVjdCA/IChhd2FpdCB0aGlzLnJlZnJlc2gocXVlcnksIHRoaXMuYW5jaG9yUmVjdCkpIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3VnZ2VzdGlvbnMgZm9yIGEgcXVlcnkuXG4gICAqXG4gICAqIEBwYXJhbSBxdWVyeSAtIFRoZSBxdWVyeSBwYXNzZWQgdG8ge0BsaW5rIEFuY2hvcmVkU3VnZ2VzdC5vcGVuQXR9IG9yIHtAbGluayBBbmNob3JlZFN1Z2dlc3Quc2V0UXVlcnl9LlxuICAgKiBAcmV0dXJucyBUaGUgc3VnZ2VzdGlvbnMsIGRpcmVjdGx5IG9yIGFzIGEgcHJvbWlzZS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRTdWdnZXN0aW9ucyhxdWVyeTogc3RyaW5nKTogUHJvbWlzZTxUW10+IHwgVFtdO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2l0aCB0aGUgc3VnZ2VzdGlvbiB0aGUgdXNlciBwaWNrZWQsIGFmdGVyIHRoZSBwb3BvdmVyIGNsb3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHN1Z2dlc3Rpb24uXG4gICAqIEBwYXJhbSAkZXZlbnQgLSBUaGUgZXZlbnQgdGhhdCBwaWNrZWQgaXQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb25DaG9vc2VTdWdnZXN0aW9uKHZhbHVlOiBULCAkZXZlbnQ6IEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50KTogdm9pZDtcblxuICBwcml2YXRlIGFkZE91dHNpZGVQb2ludGVyRG93bkhhbmRsZXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVPdXRzaWRlUG9pbnRlckRvd25IYW5kbGVyKCk7XG4gICAgdGhpcy5vdXRzaWRlUG9pbnRlckRvd25Eb2N1bWVudCA9IHRoaXMuc3VnZ2VzdEVsLm93bmVyRG9jdW1lbnQ7XG4gICAgdGhpcy5vdXRzaWRlUG9pbnRlckRvd25Eb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIHRoaXMub3V0c2lkZVBvaW50ZXJEb3duSGFuZGxlciwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk91dHNpZGVQb2ludGVyRG93bihldmVudF86IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHBhdGggPSBldmVudF8uY29tcG9zZWRQYXRoKCk7XG4gICAgaWYgKHBhdGguaW5jbHVkZXModGhpcy5zdWdnZXN0RWwpIHx8ICh0aGlzLmFuY2hvckVsICYmIHBhdGguaW5jbHVkZXModGhpcy5hbmNob3JFbCkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaChxdWVyeTogc3RyaW5nLCBhbmNob3JSZWN0OiBET01SZWN0UmVhZE9ubHkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK3RoaXMucmVxdWVzdENvdW50O1xuICAgIGxldCBzdWdnZXN0aW9ucyA9IGF3YWl0IHRoaXMuZ2V0U3VnZ2VzdGlvbnMocXVlcnkpO1xuICAgIGlmIChyZXF1ZXN0SWQgIT09IHRoaXMucmVxdWVzdENvdW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChzdWdnZXN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMubGltaXQgPiAwKSB7XG4gICAgICBzdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zLnNsaWNlKDAsIHRoaXMubGltaXQpO1xuICAgIH1cblxuICAgIHRoaXMuc3VnZ2VzdGlvbnMuc2V0U3VnZ2VzdGlvbnMoc3VnZ2VzdGlvbnMpO1xuICAgIHRoaXMub3BlbigpO1xuICAgIHRoaXMucmVwb3NpdGlvbihET01SZWN0LmZyb21SZWN0KGFuY2hvclJlY3QpKTtcbiAgICBpZiAodGhpcy5hbmNob3JFbCkge1xuICAgICAgdGhpcy5zZXRBdXRvRGVzdHJveSh0aGlzLmFuY2hvckVsKTtcbiAgICB9XG4gICAgdGhpcy5hZGRPdXRzaWRlUG9pbnRlckRvd25IYW5kbGVyKCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU91dHNpZGVQb2ludGVyRG93bkhhbmRsZXIoKTogdm9pZCB7XG4gICAgdGhpcy5vdXRzaWRlUG9pbnRlckRvd25Eb2N1bWVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCB0aGlzLm91dHNpZGVQb2ludGVyRG93bkhhbmRsZXIsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICB0aGlzLm91dHNpZGVQb2ludGVyRG93bkRvY3VtZW50ID0gbnVsbDtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnQoYW5jaG9yOiBET01SZWN0UmVhZE9ubHkgfCBIVE1MRWxlbWVudCk6IGFuY2hvciBpcyBIVE1MRWxlbWVudCB7XG4gIHJldHVybiAnZ2V0Qm91bmRpbmdDbGllbnRSZWN0JyBpbiBhbmNob3I7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQSxzQkFBK0I7QUFFL0IsTUFBTSxnQkFBZ0I7QUFpRGYsTUFBZSx3QkFBMkIsK0JBQWtCO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJMUQsUUFBUTtBQUFBLEVBRVAsV0FBK0I7QUFBQSxFQUMvQixhQUFxQztBQUFBLEVBQ3JDLDZCQUE4QztBQUFBLEVBQ3JDLDRCQUE0QixLQUFLLHFCQUFxQixLQUFLLElBQUk7QUFBQSxFQUN4RSxlQUFlO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRaEIsWUFBWSxLQUFVLE9BQWU7QUFDMUMsVUFBTSxLQUFLLEtBQUs7QUFBQSxFQUNsQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS2dCLFFBQWM7QUFDNUIsU0FBSztBQUNMLFNBQUssZ0NBQWdDO0FBQ3JDLFVBQU0sTUFBTTtBQUFBLEVBQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU0EsTUFBYSxPQUFPLFFBQXVEO0FBQ3pFLFVBQU0sRUFBRSxPQUFPLElBQUk7QUFDbkIsUUFBSSxVQUFVLE1BQU0sR0FBRztBQUNyQixXQUFLLFdBQVc7QUFDaEIsV0FBSyxhQUFhLE9BQU8sc0JBQXNCO0FBQUEsSUFDakQsT0FBTztBQUNMLFdBQUssV0FBVztBQUNoQixXQUFLLGFBQWE7QUFBQSxJQUNwQjtBQUNBLFdBQU8sTUFBTSxLQUFLLFFBQVEsT0FBTyxTQUFTLElBQUksS0FBSyxVQUFVO0FBQUEsRUFDL0Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixpQkFBaUIsT0FBVSxRQUEwQztBQUNuRixTQUFLLE1BQU07QUFDWCxTQUFLLG1CQUFtQixPQUFPLE1BQU07QUFBQSxFQUN2QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUUEsTUFBYSxTQUFTLE9BQWlDO0FBQ3JELFdBQU8sS0FBSyxhQUFjLE1BQU0sS0FBSyxRQUFRLE9BQU8sS0FBSyxVQUFVLElBQUs7QUFBQSxFQUMxRTtBQUFBLEVBa0JRLCtCQUFxQztBQUMzQyxTQUFLLGdDQUFnQztBQUNyQyxTQUFLLDZCQUE2QixLQUFLLFVBQVU7QUFDakQsU0FBSywyQkFBMkIsaUJBQWlCLGVBQWUsS0FBSywyQkFBMkIsRUFBRSxTQUFTLEtBQUssQ0FBQztBQUFBLEVBQ25IO0FBQUEsRUFFUSxxQkFBcUIsUUFBNEI7QUFDdkQsVUFBTSxPQUFPLE9BQU8sYUFBYTtBQUNqQyxRQUFJLEtBQUssU0FBUyxLQUFLLFNBQVMsS0FBTSxLQUFLLFlBQVksS0FBSyxTQUFTLEtBQUssUUFBUSxHQUFJO0FBQ3BGO0FBQUEsSUFDRjtBQUNBLFNBQUssTUFBTTtBQUFBLEVBQ2I7QUFBQSxFQUVBLE1BQWMsUUFBUSxPQUFlLFlBQStDO0FBQ2xGLFVBQU0sWUFBWSxFQUFFLEtBQUs7QUFDekIsUUFBSSxjQUFjLE1BQU0sS0FBSyxlQUFlLEtBQUs7QUFDakQsUUFBSSxjQUFjLEtBQUssY0FBYztBQUNuQyxhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksWUFBWSxXQUFXLEdBQUc7QUFDNUIsV0FBSyxNQUFNO0FBQ1gsYUFBTztBQUFBLElBQ1Q7QUFDQSxRQUFJLEtBQUssUUFBUSxHQUFHO0FBQ2xCLG9CQUFjLFlBQVksTUFBTSxHQUFHLEtBQUssS0FBSztBQUFBLElBQy9DO0FBRUEsU0FBSyxZQUFZLGVBQWUsV0FBVztBQUMzQyxTQUFLLEtBQUs7QUFDVixTQUFLLFdBQVcsUUFBUSxTQUFTLFVBQVUsQ0FBQztBQUM1QyxRQUFJLEtBQUssVUFBVTtBQUNqQixXQUFLLGVBQWUsS0FBSyxRQUFRO0FBQUEsSUFDbkM7QUFDQSxTQUFLLDZCQUE2QjtBQUNsQyxXQUFPO0FBQUEsRUFDVDtBQUFBLEVBRVEsa0NBQXdDO0FBQzlDLFNBQUssNEJBQTRCLG9CQUFvQixlQUFlLEtBQUssMkJBQTJCLEVBQUUsU0FBUyxLQUFLLENBQUM7QUFDckgsU0FBSyw2QkFBNkI7QUFBQSxFQUNwQztBQUNGO0FBRUEsU0FBUyxVQUFVLFFBQThEO0FBQy9FLFNBQU8sMkJBQTJCO0FBQ3BDOyIsIm5hbWVzIjpbXX0=
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/// <reference path="./library-references.d.cts" />
|
|
2
|
+
/// <reference lib="dom" />
|
|
3
|
+
/**
|
|
4
|
+
* @file
|
|
5
|
+
*
|
|
6
|
+
* A suggest popover opened at an element or a rectangle, with no input behind it.
|
|
7
|
+
*/
|
|
8
|
+
import type { App, Scope } from 'obsidian' with { 'resolution-mode': 'import' };
|
|
9
|
+
import { PopoverSuggest } from 'obsidian';
|
|
10
|
+
/**
|
|
11
|
+
* Parameters for {@link AnchoredSuggest.openAt}.
|
|
12
|
+
*/
|
|
13
|
+
export interface AnchoredSuggestOpenAtParams {
|
|
14
|
+
/**
|
|
15
|
+
* The element or the viewport rectangle the popover is placed against. When an element is given, the popover closes
|
|
16
|
+
* once the element leaves the DOM, and a pointer-down on it does not count as an outside click.
|
|
17
|
+
*/
|
|
18
|
+
readonly anchor: DOMRectReadOnly | HTMLElement;
|
|
19
|
+
/**
|
|
20
|
+
* The query handed to {@link AnchoredSuggest.getSuggestions}. Defaults to `''`.
|
|
21
|
+
*/
|
|
22
|
+
readonly query?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A suggest popover opened at an anchor, for a picker that has no text input: a toolbar button, a context-menu action,
|
|
26
|
+
* a decoration in the editor.
|
|
27
|
+
*
|
|
28
|
+
* Obsidian's `AbstractInputSuggest` opens only from an input and `EditorSuggest` only from the editor. This one is
|
|
29
|
+
* opened by {@link AnchoredSuggest.openAt} and closes on Escape, on a pointer-down outside it, and when its anchor
|
|
30
|
+
* element leaves the DOM. The keyboard works as in Obsidian's own popovers: arrows move, Enter picks.
|
|
31
|
+
*
|
|
32
|
+
* ```ts
|
|
33
|
+
* class ColorSuggest extends AnchoredSuggest<string> {
|
|
34
|
+
* protected getSuggestions(): string[] {
|
|
35
|
+
* return ['red', 'green', 'blue'];
|
|
36
|
+
* }
|
|
37
|
+
*
|
|
38
|
+
* public renderSuggestion(color: string, el: HTMLElement): void {
|
|
39
|
+
* el.setText(color);
|
|
40
|
+
* }
|
|
41
|
+
*
|
|
42
|
+
* protected onChooseSuggestion(color: string): void {
|
|
43
|
+
* console.log(color);
|
|
44
|
+
* }
|
|
45
|
+
* }
|
|
46
|
+
*
|
|
47
|
+
* await new ColorSuggest(this.app).openAt({ anchor: buttonEl });
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* It relies on `PopoverSuggest` members that `obsidian.d.ts` does not declare (`suggestions`, `reposition`,
|
|
51
|
+
* `setAutoDestroy`, `suggestEl`), read from Obsidian `1.15.0`.
|
|
52
|
+
*
|
|
53
|
+
* @typeParam T - The type of a suggestion.
|
|
54
|
+
*/
|
|
55
|
+
export declare abstract class AnchoredSuggest<T> extends PopoverSuggest<T> {
|
|
56
|
+
/**
|
|
57
|
+
* The maximum number of suggestions shown. `0` disables the limit. Defaults to `100`.
|
|
58
|
+
*/
|
|
59
|
+
limit: number;
|
|
60
|
+
private anchorEl;
|
|
61
|
+
private anchorRect;
|
|
62
|
+
private outsidePointerDownDocument;
|
|
63
|
+
private readonly outsidePointerDownHandler;
|
|
64
|
+
private requestCount;
|
|
65
|
+
/**
|
|
66
|
+
* Creates a new anchored suggest.
|
|
67
|
+
*
|
|
68
|
+
* @param app - The Obsidian app.
|
|
69
|
+
* @param scope - The parent keymap scope.
|
|
70
|
+
*/
|
|
71
|
+
constructor(app: App, scope?: Scope);
|
|
72
|
+
/**
|
|
73
|
+
* Closes the popover.
|
|
74
|
+
*/
|
|
75
|
+
close(): void;
|
|
76
|
+
/**
|
|
77
|
+
* Opens the popover at an anchor, or moves it there when it is already open.
|
|
78
|
+
*
|
|
79
|
+
* @param params - The parameters.
|
|
80
|
+
* @returns Whether the popover is open: `false` when there is nothing to suggest, or when it was closed or reopened
|
|
81
|
+
* while the suggestions were computed.
|
|
82
|
+
*/
|
|
83
|
+
openAt(params: AnchoredSuggestOpenAtParams): Promise<boolean>;
|
|
84
|
+
/**
|
|
85
|
+
* Picks a suggestion: closes the popover, then hands the suggestion to {@link AnchoredSuggest.onChooseSuggestion}.
|
|
86
|
+
*
|
|
87
|
+
* @param value - The suggestion.
|
|
88
|
+
* @param $event - The event that picked it.
|
|
89
|
+
*/
|
|
90
|
+
selectSuggestion(value: T, $event: KeyboardEvent | MouseEvent): void;
|
|
91
|
+
/**
|
|
92
|
+
* Recomputes the suggestions for a new query at the current anchor.
|
|
93
|
+
*
|
|
94
|
+
* @param query - The query.
|
|
95
|
+
* @returns Whether the popover is open afterwards.
|
|
96
|
+
*/
|
|
97
|
+
setQuery(query: string): Promise<boolean>;
|
|
98
|
+
/**
|
|
99
|
+
* Gets the suggestions for a query.
|
|
100
|
+
*
|
|
101
|
+
* @param query - The query passed to {@link AnchoredSuggest.openAt} or {@link AnchoredSuggest.setQuery}.
|
|
102
|
+
* @returns The suggestions, directly or as a promise.
|
|
103
|
+
*/
|
|
104
|
+
protected abstract getSuggestions(query: string): Promise<T[]> | T[];
|
|
105
|
+
/**
|
|
106
|
+
* Called with the suggestion the user picked, after the popover closed.
|
|
107
|
+
*
|
|
108
|
+
* @param value - The suggestion.
|
|
109
|
+
* @param $event - The event that picked it.
|
|
110
|
+
*/
|
|
111
|
+
protected abstract onChooseSuggestion(value: T, $event: KeyboardEvent | MouseEvent): void;
|
|
112
|
+
private addOutsidePointerDownHandler;
|
|
113
|
+
private onOutsidePointerDown;
|
|
114
|
+
private refresh;
|
|
115
|
+
private removeOutsidePointerDownHandler;
|
|
116
|
+
}
|
|
@@ -114,7 +114,8 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
114
114
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
115
115
|
var backlink_index_exports = {};
|
|
116
116
|
__export(backlink_index_exports, {
|
|
117
|
-
getIndexedBacklinksForFile: () => getIndexedBacklinksForFile
|
|
117
|
+
getIndexedBacklinksForFile: () => getIndexedBacklinksForFile,
|
|
118
|
+
iterateReferencesAffectedByRename: () => iterateReferencesAffectedByRename
|
|
118
119
|
});
|
|
119
120
|
module.exports = __toCommonJS(backlink_index_exports);
|
|
120
121
|
var import_type_guards = require('@mnaoumov/typescript-lib/type-guards');
|
|
@@ -147,6 +148,27 @@ function getIndexedBacklinksForFile(app, file) {
|
|
|
147
148
|
}
|
|
148
149
|
}
|
|
149
150
|
}
|
|
151
|
+
function iterateReferencesAffectedByRename(app, file, newPath, callback) {
|
|
152
|
+
const data = getBacklinkIndexData();
|
|
153
|
+
refresh(app, data);
|
|
154
|
+
const newName = newPath.slice(newPath.lastIndexOf("/") + 1);
|
|
155
|
+
const candidateSourcePaths = /* @__PURE__ */ new Set([file.path]);
|
|
156
|
+
for (const nameKey of [...getTargetNameKeys(file.name), ...getTargetNameKeys(newName)]) {
|
|
157
|
+
for (const sourcePath of data.nameKeySourcePaths.get(nameKey) ?? []) {
|
|
158
|
+
candidateSourcePaths.add(sourcePath);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
for (const sourcePath of candidateSourcePaths) {
|
|
162
|
+
for (const reference of getCacheReferences(getCachedMetadata(app, sourcePath))) {
|
|
163
|
+
if (callback(sourcePath, reference) === true) {
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
for (const linkUpdater of Object.values(app.metadataCache.linkUpdaters)) {
|
|
169
|
+
linkUpdater?.iterateReferences(callback);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
150
172
|
function getBacklinkIndexData() {
|
|
151
173
|
return (0, import_obsidian_lib_state.getObsidianLibState)("backlinkIndexV1", {
|
|
152
174
|
indexedHashes: /* @__PURE__ */ new Map(),
|
|
@@ -196,16 +218,29 @@ function indexSource(app, data, sourcePath, hash) {
|
|
|
196
218
|
}
|
|
197
219
|
function refresh(app, data) {
|
|
198
220
|
const fileCache = app.metadataCache.fileCache;
|
|
221
|
+
const indexedCountBefore = data.indexedHashes.size;
|
|
222
|
+
let seenIndexedCount = 0;
|
|
223
|
+
for (const sourcePath in fileCache) {
|
|
224
|
+
const entry = Object.hasOwn(fileCache, sourcePath) ? fileCache[sourcePath] : void 0;
|
|
225
|
+
if (!entry) {
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const indexedHash = data.indexedHashes.get(sourcePath);
|
|
229
|
+
if (indexedHash !== void 0) {
|
|
230
|
+
seenIndexedCount++;
|
|
231
|
+
}
|
|
232
|
+
if (indexedHash !== entry.hash) {
|
|
233
|
+
indexSource(app, data, sourcePath, entry.hash);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (seenIndexedCount === indexedCountBefore) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
199
239
|
for (const sourcePath of data.sourcePathNameKeys.keys()) {
|
|
200
240
|
if (!Object.hasOwn(fileCache, sourcePath)) {
|
|
201
241
|
removeSource(data, sourcePath);
|
|
202
242
|
}
|
|
203
243
|
}
|
|
204
|
-
for (const [sourcePath, { hash }] of Object.entries(fileCache)) {
|
|
205
|
-
if (data.indexedHashes.get(sourcePath) !== hash) {
|
|
206
|
-
indexSource(app, data, sourcePath, hash);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
244
|
}
|
|
210
245
|
function removeSource(data, sourcePath) {
|
|
211
246
|
for (const nameKey of data.sourcePathNameKeys.get(sourcePath) ?? []) {
|
|
@@ -220,6 +255,7 @@ function removeSource(data, sourcePath) {
|
|
|
220
255
|
}
|
|
221
256
|
// Annotate the CommonJS export names for ESM import in node:
|
|
222
257
|
0 && (module.exports = {
|
|
223
|
-
getIndexedBacklinksForFile
|
|
258
|
+
getIndexedBacklinksForFile,
|
|
259
|
+
iterateReferencesAffectedByRename
|
|
224
260
|
});
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrbGluay1pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQW5zd2VycyBcIndoaWNoIHJlZmVyZW5jZXMgcmVzb2x2ZSB0byB0aGlzIGZpbGU/XCIgYnkgbG9va2luZyBvbmx5IGF0IHRoZSBub3RlcyB0aGF0IENPVUxEIGhvbGQgb25lLCBpbnN0ZWFkIG9mXG4gKiByZXNvbHZpbmcgZXZlcnkgcmVmZXJlbmNlIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBPYnNpZGlhbidzIGBtZXRhZGF0YUNhY2hlLmdldEJhY2tsaW5rc0ZvckZpbGUoZmlsZSlgIGlzIG5vdCBhbiBpbmRleCBsb29rdXAuIFJlYWQgb3V0IG9mIHRoZSAxLjE0LjIgYnVuZGxlLCBpdCBpc1xuICogYGl0ZXJhdGVBbGxSZWZzYCDigJQgZXZlcnkgYGZyb250bWF0dGVyTGlua3NgLCBgbGlua3NgIGFuZCBgZW1iZWRzYCBlbnRyeSBvZiBldmVyeSBjYWNoZWQgbm90ZSwgcGx1cyBldmVyeVxuICogcmVmZXJlbmNlIGVhY2ggYGxpbmtVcGRhdGVyc2AgZW50cnkgKHRoZSBjYW52YXMgb25lKSByZXBvcnRzIOKAlCB3aXRoIG9uZSBgZ2V0Rmlyc3RMaW5rcGF0aERlc3RgIHBlciByZWZlcmVuY2UsXG4gKiBrZWVwaW5nIHRob3NlIHRoYXQgcmVzb2x2ZSB0byBgZmlsZWAuIFRoYXQgaXMgfjExNSBtcyBhdCAxMDBrIHJlZmVyZW5jZXMgYW5kIH4zMjAgbXMgYXQgMjUwaywgcGFpZCBvbmNlIHBlciBmaWxlXG4gKiBieSBldmVyeSBwZXItZmlsZSBiYWNrbGluayBsb29rdXAsIHNvIGEgMTAwMC1ub3RlIGZvbGRlciByZW5hbWUgaW4gYSA1MGstbm90ZSB2YXVsdCB0b29rIDkyNCBzLlxuICpcbiAqIFdoYXQgbWFrZXMgYSBuYXJyb3dlciBhbnN3ZXIgZXhhY3QgaXMgYSBwcm9wZXJ0eSBvZiBPYnNpZGlhbidzIGBnZXRMaW5rcGF0aERlc3RgOiBldmVyeSBicmFuY2ggb2YgaXQgY2FuIG9ubHlcbiAqIHJldHVybiBhIGZpbGUgd2hvc2UgbG93ZXJjYXNlZCBuYW1lIGlzIHRoZSBsb3dlcmNhc2VkIGxhc3QgYC9gIHNlZ21lbnQgb2YgdGhlIGxpbmtwYXRoLCBvciB0aGF0IHNlZ21lbnQgcGx1c1xuICogYC5tZGAuIFRoZSBvbmUgZXhjZXB0aW9uIGlzIHRoZSBlbXB0eSBsaW5rcGF0aCAoYFtbI0hlYWRpbmddXWApLCB3aGljaCByZXR1cm5zIHRoZSBzb3VyY2Ugbm90ZSBpdHNlbGYuIFNvIGFcbiAqIG5vdGUgY2FuIGhvbGQgYSByZWZlcmVuY2UgdG8gYGZpbGVgIG9ubHkgaWYgaXQgaG9sZHMgYSByZWZlcmVuY2Ugd2hvc2UgbGFzdCBzZWdtZW50IG1hdGNoZXMgb25lIG9mIGBmaWxlYCdzXG4gKiBuYW1lIGtleXMsIG9yIGlmIGl0IElTIGBmaWxlYC4gVGhpcyBtb2R1bGUgaW5kZXhlcyBub3RlcyBieSB0aG9zZSBzZWdtZW50cywgdGFrZXMgdGhlIGNhbmRpZGF0ZXMgZm9yIGBmaWxlYCxcbiAqIGFuZCBydW5zIE9ic2lkaWFuJ3Mgb3duIHByZWRpY2F0ZSDigJQgYGdldEZpcnN0TGlua3BhdGhEZXN0KGxpbmtwYXRoLCBzb3VyY2UpID09PSBmaWxlYCDigJQgb3ZlciB0aGUgY2FuZGlkYXRlcydcbiAqIHJlZmVyZW5jZXMgb25seS4gVGhlIGNhbmRpZGF0ZXMgYXJlIGEgc3VwZXJzZXQgb2YgdGhlIHJlYWwgYmFja2xpbmtzIGFuZCB0aGUgcHJlZGljYXRlIGlzIHRoZSBzYW1lIG9uZSwgc29cbiAqIHRoZSBhbnN3ZXIgaXMgdGhlIG9uZSB0aGUgZnVsbCB3YWxrIGdpdmVzLCBhIGZpbGUgcmVnaXN0ZXJlZCBhdCBhIG5vbi1leGlzdGluZyBwYXRoIGluY2x1ZGVkLiBPbmx5IHRoZSBPUkRFUlxuICogb2YgdGhlIG5vdGVzIGluIHRoZSBhbnN3ZXIgZGlmZmVyczogdGhlIGZpbGUgaXRzZWxmIGZpcnN0LCB0aGVuIHRoZSBjYW5kaWRhdGVzIGluIGluZGV4IG9yZGVyLlxuICpcbiAqIFRoZSBpbmRleCBpcyBrZXB0IGZyZXNoIHdpdGhvdXQgbGlzdGVuaW5nIHRvIGFueXRoaW5nLiBgbWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVgIG1hcHMgYSBub3RlIHRvIHRoZSBoYXNoIG9mXG4gKiBpdHMgY29udGVudCwgYW5kIHRoZSByZWZlcmVuY2VzIGFyZSBhIGZ1bmN0aW9uIG9mIHRoYXQgaGFzaCwgc28gZWFjaCBxdWVyeSBjb21wYXJlcyBldmVyeSBub3RlJ3MgaGFzaFxuICogYWdhaW5zdCB0aGUgb25lIGl0IHdhcyBpbmRleGVkIGF0IGFuZCByZS1yZWFkcyBvbmx5IHRoZSBub3RlcyB0aGF0IGNoYW5nZWQuIFRoYXQgaXMgb25lIHByb3BlcnR5IGNvbXBhcmlzb25cbiAqIHBlciBub3RlIGFuZCBubyByZXNvbHV0aW9uIGF0IGFsbCwgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHNjYW4gT2JzaWRpYW4gaXRzZWxmIHJ1bnMgb24gZXZlcnkgcmVuYW1lXG4gKiAoYHVwZGF0ZVJlbGF0ZWRMaW5rc2ApLiBEZXBlbmRpbmcgb24gbm8gZXZlbnQgYWxzbyBtZWFucyBkZXBlbmRpbmcgb24gbm8gZXZlbnQgT1JERVIsIHdoaWNoIG1hdHRlcnMgYmVjYXVzZVxuICogcmVuYW1lIGhhbmRsZXJzIHF1ZXJ5IGZyb20gaW5zaWRlIHRoZSB2YXVsdCBgcmVuYW1lYCBldmVudC5cbiAqXG4gKiBUaGVyZSBpcyBvbmUgaW5kZXggcGVyIHJlbmRlcmVyIHJlYWxtLCBoZWxkIGluIHRoZSByZWFsbS1nbG9iYWwgc2hhcmVkLXN0YXRlIGJhZywgc28gZXZlcnkgcGx1Z2luIGJ1bmRsaW5nIHRoaXMgbGlicmFyeVxuICogc2hhcmVzIGl0IHJhdGhlciB0aGFuIGVhY2ggYnVpbGRpbmcgaXRzIG93bi4gV2hhdCBpcyBzdG9yZWQgdGhlcmUgaXMgcGxhaW4gZGF0YSByZWFkIHN0cnVjdHVyYWxseSAobWFwcyBhbmRcbiAqIHNldHMsIG5ldmVyIGEgY2xhc3MgaW5zdGFuY2UpLCBiZWNhdXNlIHRoZSBiYWcgY3Jvc3NlcyBjb3BpZXMgb2YgdGhpcyBsaWJyYXJ5IGF0IGRpZmZlcmVudCB2ZXJzaW9ucy4gVGhlIGtleVxuICogY2FycmllcyBhIHZlcnNpb246IGEgY2hhbmdlIHRvIHdoYXQgYSBrZXkgTUVBTlMgKGhvdyBhIG5hbWUga2V5IGlzIGRlcml2ZWQpIG11c3QgbW92ZSB0byBhIG5ldyBrZXksIHNvIGFuIG9sZGVyXG4gKiBjb3B5IG5ldmVyIHJlYWRzIGFuIGluZGV4IGJ1aWx0IGJ5IGRpZmZlcmVudCBydWxlcy5cbiAqXG4gKiBUaGUgYGxpbmtVcGRhdGVyc2Agc2lkZSBpcyBzdGlsbCB3YWxrZWQgaW4gZnVsbCBvbiBldmVyeSBxdWVyeS4gSW4gMS4xNC4yIHRoZSBvbmx5IHVwZGF0ZXIgaXMgdGhlIGNhbnZhc1xuICogb25lLCB3aG9zZSByZWZlcmVuY2VzIGxpdmUgaW4gdGhlIGNhbnZhcyBpbmRleCByYXRoZXIgdGhhbiBpbiBgZmlsZUNhY2hlYCwgc28gdGhlcmUgaXMgbm8gaGFzaCB0byBrZXkgdGhlbVxuICogYnk7IGEgdmF1bHQncyBjYW52YXNlcyBob2xkIGEgc21hbGwgZnJhY3Rpb24gb2YgaXRzIHJlZmVyZW5jZXMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0JztcbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBDYWNoZWRNZXRhZGF0YSxcbiAgUmVmZXJlbmNlLFxuICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB7IEN1c3RvbUFycmF5RGljdEltcGwgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB7IGdldE9ic2lkaWFuTGliU3RhdGUgfSBmcm9tICcuL29ic2lkaWFuLWxpYi1zdGF0ZS50cyc7XG5cbmludGVyZmFjZSBCYWNrbGlua0luZGV4RGF0YSB7XG4gIHJlYWRvbmx5IGluZGV4ZWRIYXNoZXM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gIHJlYWRvbmx5IG5hbWVLZXlTb3VyY2VQYXRoczogTWFwPHN0cmluZywgU2V0PHN0cmluZz4+O1xuICByZWFkb25seSBzb3VyY2VQYXRoTmFtZUtleXM6IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+Pjtcbn1cblxuY29uc3QgTUFSS0RPV05fU1VGRklYID0gJy5tZCc7XG5cbi8qKlxuICogVGhlIHNhbWUgYW5zd2VyIGFzIGBhcHAubWV0YWRhdGFDYWNoZS5nZXRCYWNrbGlua3NGb3JGaWxlKGZpbGUpYCAoT2JzaWRpYW4ncyBvd24sIHVucGF0Y2hlZCksIGZyb20gdGhlIGNhbmRpZGF0ZVxuICogbm90ZXMgb25seS4gU2VlIHRoZSBmaWxlIGhlYWRlciBmb3Igd2h5IHRoZSBhbnN3ZXIgaXMgZXhhY3QuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHdob3NlIGJhY2tsaW5rcyB0byBmaW5kLiBJdCBtYXkgYmUgYSBub24tZXhpc3RpbmcgZmlsZSByZWdpc3RlcmVkIGZvciB0aGUgcXVlcnkuXG4gKiBAcmV0dXJucyBUaGUgcmVmZXJlbmNlcyB0aGF0IHJlc29sdmUgdG8gYGZpbGVgLCBrZXllZCBieSB0aGUgcGF0aCBvZiB0aGUgbm90ZSBvciBjYW52YXMgaG9sZGluZyB0aGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5kZXhlZEJhY2tsaW5rc0ZvckZpbGUoYXBwOiBBcHAsIGZpbGU6IFRGaWxlKTogQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4ge1xuICBjb25zdCBkYXRhID0gZ2V0QmFja2xpbmtJbmRleERhdGEoKTtcbiAgcmVmcmVzaChhcHAsIGRhdGEpO1xuXG4gIGNvbnN0IG1ldGFkYXRhQ2FjaGUgPSBhcHAubWV0YWRhdGFDYWNoZTtcbiAgY29uc3QgYmFja2xpbmtzID0gbmV3IEN1c3RvbUFycmF5RGljdEltcGw8UmVmZXJlbmNlPigpO1xuXG4gIC8vIFRoZSBmaWxlIGl0c2VsZiBpcyBhIGNhbmRpZGF0ZSBmb3IgaXRzIG93biBgW1sjSGVhZGluZ11dYCByZWZlcmVuY2VzLCB3aG9zZSBlbXB0eSBsaW5rcGF0aCBuYW1lcyBubyBzZWdtZW50LlxuICBjb25zdCBjYW5kaWRhdGVTb3VyY2VQYXRocyA9IG5ldyBTZXQ8c3RyaW5nPihbZmlsZS5wYXRoXSk7XG4gIGZvciAoY29uc3QgbmFtZUtleSBvZiBnZXRUYXJnZXROYW1lS2V5cyhmaWxlLm5hbWUpKSB7XG4gICAgZm9yIChjb25zdCBzb3VyY2VQYXRoIG9mIGRhdGEubmFtZUtleVNvdXJjZVBhdGhzLmdldChuYW1lS2V5KSA/PyBbXSkge1xuICAgICAgY2FuZGlkYXRlU291cmNlUGF0aHMuYWRkKHNvdXJjZVBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3Qgc291cmNlUGF0aCBvZiBjYW5kaWRhdGVTb3VyY2VQYXRocykge1xuICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGdldENhY2hlUmVmZXJlbmNlcyhnZXRDYWNoZWRNZXRhZGF0YShhcHAsIHNvdXJjZVBhdGgpKSkge1xuICAgICAgY29sbGVjdChzb3VyY2VQYXRoLCByZWZlcmVuY2UpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgbGlua1VwZGF0ZXIgb2YgT2JqZWN0LnZhbHVlcyhtZXRhZGF0YUNhY2hlLmxpbmtVcGRhdGVycykpIHtcbiAgICBsaW5rVXBkYXRlcj8uaXRlcmF0ZVJlZmVyZW5jZXMoY29sbGVjdCk7XG4gIH1cblxuICByZXR1cm4gYmFja2xpbmtzO1xuXG4gIGZ1bmN0aW9uIGNvbGxlY3Qoc291cmNlUGF0aDogc3RyaW5nLCByZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHZvaWQge1xuICAgIGlmIChtZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KGdldExpbmtwYXRoKHJlZmVyZW5jZS5saW5rKSwgc291cmNlUGF0aCkgPT09IGZpbGUpIHtcbiAgICAgIGJhY2tsaW5rcy5hZGQoc291cmNlUGF0aCwgcmVmZXJlbmNlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QmFja2xpbmtJbmRleERhdGEoKTogQmFja2xpbmtJbmRleERhdGEge1xuICByZXR1cm4gZ2V0T2JzaWRpYW5MaWJTdGF0ZTxCYWNrbGlua0luZGV4RGF0YT4oJ2JhY2tsaW5rSW5kZXhWMScsIHtcbiAgICBpbmRleGVkSGFzaGVzOiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpLFxuICAgIG5hbWVLZXlTb3VyY2VQYXRoczogbmV3IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+PigpLFxuICAgIHNvdXJjZVBhdGhOYW1lS2V5czogbmV3IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+PigpXG4gIH0pLnZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0Q2FjaGVkTWV0YWRhdGEoYXBwOiBBcHAsIHNvdXJjZVBhdGg6IHN0cmluZyk6IENhY2hlZE1ldGFkYXRhIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaGFzaCA9IGFwcC5tZXRhZGF0YUNhY2hlLmZpbGVDYWNoZVtzb3VyY2VQYXRoXT8uaGFzaDtcbiAgcmV0dXJuIGhhc2ggPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbaGFzaF07XG59XG5cbi8qKlxuICogTGlzdHMgYSBjYWNoZWQgbm90ZSdzIHJlZmVyZW5jZXMgaW4gdGhlIG9yZGVyIE9ic2lkaWFuJ3Mgb3duIHdhbGsgdmlzaXRzIHRoZW06IGBmcm9udG1hdHRlckxpbmtzYCwgdGhlblxuICogYGxpbmtzYCwgdGhlbiBgZW1iZWRzYC5cbiAqXG4gKiBAcGFyYW0gY2FjaGUgLSBUaGUgbm90ZSdzIGNhY2hlZCBtZXRhZGF0YS5cbiAqIEByZXR1cm5zIFRoZSBub3RlJ3MgcmVmZXJlbmNlcy5cbiAqL1xuZnVuY3Rpb24gZ2V0Q2FjaGVSZWZlcmVuY2VzKGNhY2hlOiBDYWNoZWRNZXRhZGF0YSB8IHVuZGVmaW5lZCk6IFJlZmVyZW5jZVtdIHtcbiAgcmV0dXJuIGNhY2hlID8gWy4uLmNhY2hlLmZyb250bWF0dGVyTGlua3MgPz8gW10sIC4uLmNhY2hlLmxpbmtzID8/IFtdLCAuLi5jYWNoZS5lbWJlZHMgPz8gW11dIDogW107XG59XG5cbi8qKlxuICogU3RyaXBzIHRoZSBzdWJwYXRoIGZyb20gYSBsaW5rLCB0aGUgd2F5IE9ic2lkaWFuJ3MgYGdldExpbmtwYXRoYCBkb2VzLlxuICpcbiAqIEBwYXJhbSBsaW5rIC0gVGhlIGxpbmsgdGV4dCwgc3VjaCBhcyBgZm9sZGVyL05vdGUjSGVhZGluZ2AuXG4gKiBAcmV0dXJucyBUaGUgbGlua3BhdGgsIHN1Y2ggYXMgYGZvbGRlci9Ob3RlYC5cbiAqL1xuZnVuY3Rpb24gZ2V0TGlua3BhdGgobGluazogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgaGFzaEluZGV4ID0gbGluay5pbmRleE9mKCcjJyk7XG4gIHJldHVybiBoYXNoSW5kZXggPT09IC0xID8gbGluayA6IGxpbmsuc2xpY2UoMCwgaGFzaEluZGV4KTtcbn1cblxuLyoqXG4gKiBUaGUga2V5IGEgcmVmZXJlbmNlIGlzIGluZGV4ZWQgdW5kZXI6IHRoZSBsb3dlcmNhc2VkIGxhc3QgYC9gIHNlZ21lbnQgb2YgaXRzIGxpbmtwYXRoLlxuICpcbiAqIEBwYXJhbSBsaW5rIC0gVGhlIHJlZmVyZW5jZSdzIGxpbmsgdGV4dC5cbiAqIEByZXR1cm5zIFRoZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIGdldFJlZmVyZW5jZU5hbWVLZXkobGluazogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbGlua3BhdGggPSBnZXRMaW5rcGF0aChsaW5rKS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gbGlua3BhdGguc2xpY2UobGlua3BhdGgubGFzdEluZGV4T2YoJy8nKSArIDEpO1xufVxuXG4vKipcbiAqIFRoZSBrZXlzIHVuZGVyIHdoaWNoIGEgcmVmZXJlbmNlIHRvIGEgZmlsZSB3aXRoIHRoaXMgbmFtZSBjYW4gYmUgaW5kZXhlZC4gYGdldExpbmtwYXRoRGVzdGAgbWF0Y2hlcyBhXG4gKiBzZWdtZW50IGFnYWluc3QgdGhlIGZpbGUncyBuYW1lLCBhbmQgYWdhaW5zdCB0aGUgbmFtZSB3aXRoIGAubWRgIGFwcGVuZGVkLCBzbyBhIG5vdGUgbmFtZWQgYE5vdGUubWRgIGlzXG4gKiByZWFjaGFibGUgZnJvbSBib3RoIGBub3RlLm1kYCBhbmQgYG5vdGVgLlxuICpcbiAqIEBwYXJhbSBmaWxlTmFtZSAtIFRoZSBmaWxlJ3MgbmFtZSwgZXh0ZW5zaW9uIGluY2x1ZGVkLlxuICogQHJldHVybnMgVGhlIGtleXMuXG4gKi9cbmZ1bmN0aW9uIGdldFRhcmdldE5hbWVLZXlzKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IG5hbWVLZXkgPSBmaWxlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gbmFtZUtleS5lbmRzV2l0aChNQVJLRE9XTl9TVUZGSVgpID8gW25hbWVLZXksIG5hbWVLZXkuc2xpY2UoMCwgLU1BUktET1dOX1NVRkZJWC5sZW5ndGgpXSA6IFtuYW1lS2V5XTtcbn1cblxuZnVuY3Rpb24gaW5kZXhTb3VyY2UoYXBwOiBBcHAsIGRhdGE6IEJhY2tsaW5rSW5kZXhEYXRhLCBzb3VyY2VQYXRoOiBzdHJpbmcsIGhhc2g6IHN0cmluZyk6IHZvaWQge1xuICByZW1vdmVTb3VyY2UoZGF0YSwgc291cmNlUGF0aCk7XG4gIGNvbnN0IGNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUubWV0YWRhdGFDYWNoZVtoYXNoXTtcbiAgLypcbiAgICogQSBub3RlJ3MgYGZpbGVDYWNoZWAgZW50cnkgY2FuIGNhcnJ5IGl0cyBuZXcgaGFzaCBiZWZvcmUgdGhlIG1ldGFkYXRhIGZvciB0aGF0IGhhc2ggaXMgc3RvcmVkLiBSZWNvcmRpbmdcbiAgICogdGhlIGhhc2ggdGhlbiB3b3VsZCBwaW4gdGhlIG5vdGUgYXQgXCJubyByZWZlcmVuY2VzXCIgdW50aWwgaXRzIGNvbnRlbnQgY2hhbmdlZCBhZ2Fpbiwgc28gbGVhdmUgaXRcbiAgICogdW5yZWNvcmRlZCBhbmQgbGV0IHRoZSBuZXh0IHF1ZXJ5IGxvb2sgYWdhaW4uXG4gICAqL1xuICBpZiAoIWNhY2hlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgbmFtZUtleXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgZ2V0Q2FjaGVSZWZlcmVuY2VzKGNhY2hlKSkge1xuICAgIG5hbWVLZXlzLmFkZChnZXRSZWZlcmVuY2VOYW1lS2V5KHJlZmVyZW5jZS5saW5rKSk7XG4gIH1cbiAgZm9yIChjb25zdCBuYW1lS2V5IG9mIG5hbWVLZXlzKSB7XG4gICAgbGV0IHNvdXJjZVBhdGhzID0gZGF0YS5uYW1lS2V5U291cmNlUGF0aHMuZ2V0KG5hbWVLZXkpO1xuICAgIGlmICghc291cmNlUGF0aHMpIHtcbiAgICAgIHNvdXJjZVBhdGhzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICBkYXRhLm5hbWVLZXlTb3VyY2VQYXRocy5zZXQobmFtZUtleSwgc291cmNlUGF0aHMpO1xuICAgIH1cbiAgICBzb3VyY2VQYXRocy5hZGQoc291cmNlUGF0aCk7XG4gIH1cbiAgZGF0YS5zb3VyY2VQYXRoTmFtZUtleXMuc2V0KHNvdXJjZVBhdGgsIG5hbWVLZXlzKTtcbiAgZGF0YS5pbmRleGVkSGFzaGVzLnNldChzb3VyY2VQYXRoLCBoYXNoKTtcbn1cblxuZnVuY3Rpb24gcmVmcmVzaChhcHA6IEFwcCwgZGF0YTogQmFja2xpbmtJbmRleERhdGEpOiB2b2lkIHtcbiAgY29uc3QgZmlsZUNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlO1xuXG4gIGZvciAoY29uc3Qgc291cmNlUGF0aCBvZiBkYXRhLnNvdXJjZVBhdGhOYW1lS2V5cy5rZXlzKCkpIHtcbiAgICBpZiAoIU9iamVjdC5oYXNPd24oZmlsZUNhY2hlLCBzb3VyY2VQYXRoKSkge1xuICAgICAgcmVtb3ZlU291cmNlKGRhdGEsIHNvdXJjZVBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgW3NvdXJjZVBhdGgsIHsgaGFzaCB9XSBvZiBPYmplY3QuZW50cmllcyhmaWxlQ2FjaGUpKSB7XG4gICAgaWYgKGRhdGEuaW5kZXhlZEhhc2hlcy5nZXQoc291cmNlUGF0aCkgIT09IGhhc2gpIHtcbiAgICAgIGluZGV4U291cmNlKGFwcCwgZGF0YSwgc291cmNlUGF0aCwgaGFzaCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVNvdXJjZShkYXRhOiBCYWNrbGlua0luZGV4RGF0YSwgc291cmNlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGZvciAoY29uc3QgbmFtZUtleSBvZiBkYXRhLnNvdXJjZVBhdGhOYW1lS2V5cy5nZXQoc291cmNlUGF0aCkgPz8gW10pIHtcbiAgICBjb25zdCBzb3VyY2VQYXRocyA9IGVuc3VyZU5vbk51bGxhYmxlKGRhdGEubmFtZUtleVNvdXJjZVBhdGhzLmdldChuYW1lS2V5KSk7XG4gICAgc291cmNlUGF0aHMuZGVsZXRlKHNvdXJjZVBhdGgpO1xuICAgIGlmIChzb3VyY2VQYXRocy5zaXplID09PSAwKSB7XG4gICAgICBkYXRhLm5hbWVLZXlTb3VyY2VQYXRocy5kZWxldGUobmFtZUtleSk7XG4gICAgfVxuICB9XG4gIGRhdGEuc291cmNlUGF0aE5hbWVLZXlzLmRlbGV0ZShzb3VyY2VQYXRoKTtcbiAgZGF0YS5pbmRleGVkSGFzaGVzLmRlbGV0ZShzb3VyY2VQYXRoKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtB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
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrbGluay1pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQW5zd2VycyBcIndoaWNoIHJlZmVyZW5jZXMgcmVzb2x2ZSB0byB0aGlzIGZpbGU/XCIgYnkgbG9va2luZyBvbmx5IGF0IHRoZSBub3RlcyB0aGF0IENPVUxEIGhvbGQgb25lLCBpbnN0ZWFkIG9mXG4gKiByZXNvbHZpbmcgZXZlcnkgcmVmZXJlbmNlIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBPYnNpZGlhbidzIGBtZXRhZGF0YUNhY2hlLmdldEJhY2tsaW5rc0ZvckZpbGUoZmlsZSlgIGlzIG5vdCBhbiBpbmRleCBsb29rdXAuIFJlYWQgb3V0IG9mIHRoZSAxLjE0LjIgYnVuZGxlLCBpdCBpc1xuICogYGl0ZXJhdGVBbGxSZWZzYCDigJQgZXZlcnkgYGZyb250bWF0dGVyTGlua3NgLCBgbGlua3NgIGFuZCBgZW1iZWRzYCBlbnRyeSBvZiBldmVyeSBjYWNoZWQgbm90ZSwgcGx1cyBldmVyeVxuICogcmVmZXJlbmNlIGVhY2ggYGxpbmtVcGRhdGVyc2AgZW50cnkgKHRoZSBjYW52YXMgb25lKSByZXBvcnRzIOKAlCB3aXRoIG9uZSBgZ2V0Rmlyc3RMaW5rcGF0aERlc3RgIHBlciByZWZlcmVuY2UsXG4gKiBrZWVwaW5nIHRob3NlIHRoYXQgcmVzb2x2ZSB0byBgZmlsZWAuIFRoYXQgaXMgfjExNSBtcyBhdCAxMDBrIHJlZmVyZW5jZXMgYW5kIH4zMjAgbXMgYXQgMjUwaywgcGFpZCBvbmNlIHBlciBmaWxlXG4gKiBieSBldmVyeSBwZXItZmlsZSBiYWNrbGluayBsb29rdXAsIHNvIGEgMTAwMC1ub3RlIGZvbGRlciByZW5hbWUgaW4gYSA1MGstbm90ZSB2YXVsdCB0b29rIDkyNCBzLlxuICpcbiAqIFdoYXQgbWFrZXMgYSBuYXJyb3dlciBhbnN3ZXIgZXhhY3QgaXMgYSBwcm9wZXJ0eSBvZiBPYnNpZGlhbidzIGBnZXRMaW5rcGF0aERlc3RgOiBldmVyeSBicmFuY2ggb2YgaXQgY2FuIG9ubHlcbiAqIHJldHVybiBhIGZpbGUgd2hvc2UgbG93ZXJjYXNlZCBuYW1lIGlzIHRoZSBsb3dlcmNhc2VkIGxhc3QgYC9gIHNlZ21lbnQgb2YgdGhlIGxpbmtwYXRoLCBvciB0aGF0IHNlZ21lbnQgcGx1c1xuICogYC5tZGAuIFRoZSBvbmUgZXhjZXB0aW9uIGlzIHRoZSBlbXB0eSBsaW5rcGF0aCAoYFtbI0hlYWRpbmddXWApLCB3aGljaCByZXR1cm5zIHRoZSBzb3VyY2Ugbm90ZSBpdHNlbGYuIFNvIGFcbiAqIG5vdGUgY2FuIGhvbGQgYSByZWZlcmVuY2UgdG8gYGZpbGVgIG9ubHkgaWYgaXQgaG9sZHMgYSByZWZlcmVuY2Ugd2hvc2UgbGFzdCBzZWdtZW50IG1hdGNoZXMgb25lIG9mIGBmaWxlYCdzXG4gKiBuYW1lIGtleXMsIG9yIGlmIGl0IElTIGBmaWxlYC4gVGhpcyBtb2R1bGUgaW5kZXhlcyBub3RlcyBieSB0aG9zZSBzZWdtZW50cywgdGFrZXMgdGhlIGNhbmRpZGF0ZXMgZm9yIGBmaWxlYCxcbiAqIGFuZCBydW5zIE9ic2lkaWFuJ3Mgb3duIHByZWRpY2F0ZSDigJQgYGdldEZpcnN0TGlua3BhdGhEZXN0KGxpbmtwYXRoLCBzb3VyY2UpID09PSBmaWxlYCDigJQgb3ZlciB0aGUgY2FuZGlkYXRlcydcbiAqIHJlZmVyZW5jZXMgb25seS4gVGhlIGNhbmRpZGF0ZXMgYXJlIGEgc3VwZXJzZXQgb2YgdGhlIHJlYWwgYmFja2xpbmtzIGFuZCB0aGUgcHJlZGljYXRlIGlzIHRoZSBzYW1lIG9uZSwgc29cbiAqIHRoZSBhbnN3ZXIgaXMgdGhlIG9uZSB0aGUgZnVsbCB3YWxrIGdpdmVzLCBhIGZpbGUgcmVnaXN0ZXJlZCBhdCBhIG5vbi1leGlzdGluZyBwYXRoIGluY2x1ZGVkLiBPbmx5IHRoZSBPUkRFUlxuICogb2YgdGhlIG5vdGVzIGluIHRoZSBhbnN3ZXIgZGlmZmVyczogdGhlIGZpbGUgaXRzZWxmIGZpcnN0LCB0aGVuIHRoZSBjYW5kaWRhdGVzIGluIGluZGV4IG9yZGVyLlxuICpcbiAqIFRoZSBpbmRleCBpcyBrZXB0IGZyZXNoIHdpdGhvdXQgbGlzdGVuaW5nIHRvIGFueXRoaW5nLiBgbWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVgIG1hcHMgYSBub3RlIHRvIHRoZSBoYXNoIG9mXG4gKiBpdHMgY29udGVudCwgYW5kIHRoZSByZWZlcmVuY2VzIGFyZSBhIGZ1bmN0aW9uIG9mIHRoYXQgaGFzaCwgc28gZWFjaCBxdWVyeSBjb21wYXJlcyBldmVyeSBub3RlJ3MgaGFzaFxuICogYWdhaW5zdCB0aGUgb25lIGl0IHdhcyBpbmRleGVkIGF0IGFuZCByZS1yZWFkcyBvbmx5IHRoZSBub3RlcyB0aGF0IGNoYW5nZWQuIFRoYXQgaXMgb25lIHByb3BlcnR5IGNvbXBhcmlzb25cbiAqIHBlciBub3RlIGFuZCBubyByZXNvbHV0aW9uIGF0IGFsbCwgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHNjYW4gT2JzaWRpYW4gaXRzZWxmIHJ1bnMgb24gZXZlcnkgcmVuYW1lXG4gKiAoYHVwZGF0ZVJlbGF0ZWRMaW5rc2ApLiBEZXBlbmRpbmcgb24gbm8gZXZlbnQgYWxzbyBtZWFucyBkZXBlbmRpbmcgb24gbm8gZXZlbnQgT1JERVIsIHdoaWNoIG1hdHRlcnMgYmVjYXVzZVxuICogcmVuYW1lIGhhbmRsZXJzIHF1ZXJ5IGZyb20gaW5zaWRlIHRoZSB2YXVsdCBgcmVuYW1lYCBldmVudC5cbiAqXG4gKiBUaGVyZSBpcyBvbmUgaW5kZXggcGVyIHJlbmRlcmVyIHJlYWxtLCBoZWxkIGluIHRoZSByZWFsbS1nbG9iYWwgc2hhcmVkLXN0YXRlIGJhZywgc28gZXZlcnkgcGx1Z2luIGJ1bmRsaW5nIHRoaXMgbGlicmFyeVxuICogc2hhcmVzIGl0IHJhdGhlciB0aGFuIGVhY2ggYnVpbGRpbmcgaXRzIG93bi4gV2hhdCBpcyBzdG9yZWQgdGhlcmUgaXMgcGxhaW4gZGF0YSByZWFkIHN0cnVjdHVyYWxseSAobWFwcyBhbmRcbiAqIHNldHMsIG5ldmVyIGEgY2xhc3MgaW5zdGFuY2UpLCBiZWNhdXNlIHRoZSBiYWcgY3Jvc3NlcyBjb3BpZXMgb2YgdGhpcyBsaWJyYXJ5IGF0IGRpZmZlcmVudCB2ZXJzaW9ucy4gVGhlIGtleVxuICogY2FycmllcyBhIHZlcnNpb246IGEgY2hhbmdlIHRvIHdoYXQgYSBrZXkgTUVBTlMgKGhvdyBhIG5hbWUga2V5IGlzIGRlcml2ZWQpIG11c3QgbW92ZSB0byBhIG5ldyBrZXksIHNvIGFuIG9sZGVyXG4gKiBjb3B5IG5ldmVyIHJlYWRzIGFuIGluZGV4IGJ1aWx0IGJ5IGRpZmZlcmVudCBydWxlcy5cbiAqXG4gKiBUaGUgYGxpbmtVcGRhdGVyc2Agc2lkZSBpcyBzdGlsbCB3YWxrZWQgaW4gZnVsbCBvbiBldmVyeSBxdWVyeS4gSW4gMS4xNC4yIHRoZSBvbmx5IHVwZGF0ZXIgaXMgdGhlIGNhbnZhc1xuICogb25lLCB3aG9zZSByZWZlcmVuY2VzIGxpdmUgaW4gdGhlIGNhbnZhcyBpbmRleCByYXRoZXIgdGhhbiBpbiBgZmlsZUNhY2hlYCwgc28gdGhlcmUgaXMgbm8gaGFzaCB0byBrZXkgdGhlbVxuICogYnk7IGEgdmF1bHQncyBjYW52YXNlcyBob2xkIGEgc21hbGwgZnJhY3Rpb24gb2YgaXRzIHJlZmVyZW5jZXMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0JztcbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBDYWNoZWRNZXRhZGF0YSxcbiAgUmVmZXJlbmNlLFxuICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB7IEN1c3RvbUFycmF5RGljdEltcGwgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB7IGdldE9ic2lkaWFuTGliU3RhdGUgfSBmcm9tICcuL29ic2lkaWFuLWxpYi1zdGF0ZS50cyc7XG5cbi8qKlxuICogVGhlIGNhbGxiYWNrIE9ic2lkaWFuJ3MgYG1ldGFkYXRhQ2FjaGUuaXRlcmF0ZUFsbFJlZnNgIHRha2VzLlxuICovXG5leHBvcnQgdHlwZSBJdGVyYXRlUmVmZXJlbmNlc0NhbGxiYWNrID0gUGFyYW1ldGVyczxBcHBbJ21ldGFkYXRhQ2FjaGUnXVsnaXRlcmF0ZUFsbFJlZnMnXT5bMF07XG5cbmludGVyZmFjZSBCYWNrbGlua0luZGV4RGF0YSB7XG4gIHJlYWRvbmx5IGluZGV4ZWRIYXNoZXM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gIHJlYWRvbmx5IG5hbWVLZXlTb3VyY2VQYXRoczogTWFwPHN0cmluZywgU2V0PHN0cmluZz4+O1xuICByZWFkb25seSBzb3VyY2VQYXRoTmFtZUtleXM6IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+Pjtcbn1cblxuY29uc3QgTUFSS0RPV05fU1VGRklYID0gJy5tZCc7XG5cbi8qKlxuICogVGhlIHNhbWUgYW5zd2VyIGFzIGBhcHAubWV0YWRhdGFDYWNoZS5nZXRCYWNrbGlua3NGb3JGaWxlKGZpbGUpYCAoT2JzaWRpYW4ncyBvd24sIHVucGF0Y2hlZCksIGZyb20gdGhlIGNhbmRpZGF0ZVxuICogbm90ZXMgb25seS4gU2VlIHRoZSBmaWxlIGhlYWRlciBmb3Igd2h5IHRoZSBhbnN3ZXIgaXMgZXhhY3QuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHdob3NlIGJhY2tsaW5rcyB0byBmaW5kLiBJdCBtYXkgYmUgYSBub24tZXhpc3RpbmcgZmlsZSByZWdpc3RlcmVkIGZvciB0aGUgcXVlcnkuXG4gKiBAcmV0dXJucyBUaGUgcmVmZXJlbmNlcyB0aGF0IHJlc29sdmUgdG8gYGZpbGVgLCBrZXllZCBieSB0aGUgcGF0aCBvZiB0aGUgbm90ZSBvciBjYW52YXMgaG9sZGluZyB0aGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5kZXhlZEJhY2tsaW5rc0ZvckZpbGUoYXBwOiBBcHAsIGZpbGU6IFRGaWxlKTogQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4ge1xuICBjb25zdCBkYXRhID0gZ2V0QmFja2xpbmtJbmRleERhdGEoKTtcbiAgcmVmcmVzaChhcHAsIGRhdGEpO1xuXG4gIGNvbnN0IG1ldGFkYXRhQ2FjaGUgPSBhcHAubWV0YWRhdGFDYWNoZTtcbiAgY29uc3QgYmFja2xpbmtzID0gbmV3IEN1c3RvbUFycmF5RGljdEltcGw8UmVmZXJlbmNlPigpO1xuXG4gIC8vIFRoZSBmaWxlIGl0c2VsZiBpcyBhIGNhbmRpZGF0ZSBmb3IgaXRzIG93biBgW1sjSGVhZGluZ11dYCByZWZlcmVuY2VzLCB3aG9zZSBlbXB0eSBsaW5rcGF0aCBuYW1lcyBubyBzZWdtZW50LlxuICBjb25zdCBjYW5kaWRhdGVTb3VyY2VQYXRocyA9IG5ldyBTZXQ8c3RyaW5nPihbZmlsZS5wYXRoXSk7XG4gIGZvciAoY29uc3QgbmFtZUtleSBvZiBnZXRUYXJnZXROYW1lS2V5cyhmaWxlLm5hbWUpKSB7XG4gICAgZm9yIChjb25zdCBzb3VyY2VQYXRoIG9mIGRhdGEubmFtZUtleVNvdXJjZVBhdGhzLmdldChuYW1lS2V5KSA/PyBbXSkge1xuICAgICAgY2FuZGlkYXRlU291cmNlUGF0aHMuYWRkKHNvdXJjZVBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3Qgc291cmNlUGF0aCBvZiBjYW5kaWRhdGVTb3VyY2VQYXRocykge1xuICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGdldENhY2hlUmVmZXJlbmNlcyhnZXRDYWNoZWRNZXRhZGF0YShhcHAsIHNvdXJjZVBhdGgpKSkge1xuICAgICAgY29sbGVjdChzb3VyY2VQYXRoLCByZWZlcmVuY2UpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgbGlua1VwZGF0ZXIgb2YgT2JqZWN0LnZhbHVlcyhtZXRhZGF0YUNhY2hlLmxpbmtVcGRhdGVycykpIHtcbiAgICBsaW5rVXBkYXRlcj8uaXRlcmF0ZVJlZmVyZW5jZXMoY29sbGVjdCk7XG4gIH1cblxuICByZXR1cm4gYmFja2xpbmtzO1xuXG4gIGZ1bmN0aW9uIGNvbGxlY3Qoc291cmNlUGF0aDogc3RyaW5nLCByZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHZvaWQge1xuICAgIGlmIChtZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KGdldExpbmtwYXRoKHJlZmVyZW5jZS5saW5rKSwgc291cmNlUGF0aCkgPT09IGZpbGUpIHtcbiAgICAgIGJhY2tsaW5rcy5hZGQoc291cmNlUGF0aCwgcmVmZXJlbmNlKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWaXNpdHMgdGhlIHJlZmVyZW5jZXMgYGFwcC5tZXRhZGF0YUNhY2hlLml0ZXJhdGVBbGxSZWZzYCB3b3VsZCB2aXNpdCwgbWludXMgZXZlcnkgcmVmZXJlbmNlIHdob3NlIHJlc29sdXRpb25cbiAqIGNhbm5vdCBjaGFuZ2Ugd2hlbiBgZmlsZWAgaXMgcmVuYW1lZCB0byBgbmV3UGF0aGAuXG4gKlxuICogT2JzaWRpYW4ncyBgRmlsZU1hbmFnZXIucnVuQXN5bmNMaW5rVXBkYXRlYCByZXNvbHZlcyBFVkVSWSByZWZlcmVuY2UgaW4gdGhlIHZhdWx0IGJlZm9yZSBlYWNoIHJlbmFtZSwgdG8gZGlmZlxuICogdGhlIHJlc29sdXRpb25zIGFmdGVyd2FyZHMgaW4gYHVwZGF0ZUFsbExpbmtzYDsgdGhhdCBpcyB0aGUgd2hvbGUgY29zdCBvZiBhIHJlbmFtZSBpbiBhIGxhcmdlIHZhdWx0LiBBIHJlZmVyZW5jZVxuICogY2FuIHJlc29sdmUgdG8gYGZpbGVgIG9ubHkgaWYgaXRzIGxpbmtwYXRoJ3MgbGFzdCBzZWdtZW50IG1hdGNoZXMgYGZpbGVgJ3MgbmFtZSBiZWZvcmUgdGhlIHJlbmFtZSBvciBpdHMgbmFtZVxuICogYWZ0ZXIgaXQgKHNlZSB0aGUgZmlsZSBoZWFkZXIpLCBhbmQgYSByZWZlcmVuY2UgdGhhdCByZXNvbHZlcyB0byBuZWl0aGVyIGtlZXBzIHJlc29sdmluZyB0byB3aGF0ZXZlciBpdCBkaWQuIFNvXG4gKiB0aGUgcmVmZXJlbmNlcyB0aGF0IGNhbiBjaGFuZ2UgYXJlIHRob3NlIG9mIHRoZSBpbmRleCdzIGNhbmRpZGF0ZXMgZm9yIGJvdGggbmFtZXMsIHBsdXMgdGhlIHJlZmVyZW5jZXMgaGVsZCBieVxuICogYGZpbGVgIGl0c2VsZiwgd2hvc2UgcmVsYXRpdmUgbGlua3MgcmVzb2x2ZSBmcm9tIGl0cyBuZXcgZm9sZGVyIGFmdGVyd2FyZHMuIGBsaW5rVXBkYXRlcnNgIHJlZmVyZW5jZXMgYXJlIHdhbGtlZFxuICogaW4gZnVsbCwgYXMgaW4ge0BsaW5rIGdldEluZGV4ZWRCYWNrbGlua3NGb3JGaWxlfS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgYmVpbmcgcmVuYW1lZCwgc3RpbGwgYXQgaXRzIG9sZCBwYXRoLlxuICogQHBhcmFtIG5ld1BhdGggLSBUaGUgcGF0aCBpdCBpcyBiZWluZyByZW5hbWVkIHRvLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gQ2FsbGVkIHdpdGggZWFjaCByZWZlcmVuY2UgYW5kIHRoZSBwYXRoIG9mIHRoZSBub3RlIGhvbGRpbmcgaXQuIFJldHVybmluZyBgdHJ1ZWAgc3RvcHMgdGhlXG4gKiAgIHdhbGsgb3ZlciB0aGF0IG5vdGUncyByZWZlcmVuY2VzLCBhcyBpbiBPYnNpZGlhbidzIG93biB3YWxrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXRlcmF0ZVJlZmVyZW5jZXNBZmZlY3RlZEJ5UmVuYW1lKFxuICBhcHA6IEFwcCxcbiAgZmlsZTogVEZpbGUsXG4gIG5ld1BhdGg6IHN0cmluZyxcbiAgY2FsbGJhY2s6IEl0ZXJhdGVSZWZlcmVuY2VzQ2FsbGJhY2tcbik6IHZvaWQge1xuICBjb25zdCBkYXRhID0gZ2V0QmFja2xpbmtJbmRleERhdGEoKTtcbiAgcmVmcmVzaChhcHAsIGRhdGEpO1xuXG4gIGNvbnN0IG5ld05hbWUgPSBuZXdQYXRoLnNsaWNlKG5ld1BhdGgubGFzdEluZGV4T2YoJy8nKSArIDEpO1xuICBjb25zdCBjYW5kaWRhdGVTb3VyY2VQYXRocyA9IG5ldyBTZXQ8c3RyaW5nPihbZmlsZS5wYXRoXSk7XG4gIGZvciAoY29uc3QgbmFtZUtleSBvZiBbLi4uZ2V0VGFyZ2V0TmFtZUtleXMoZmlsZS5uYW1lKSwgLi4uZ2V0VGFyZ2V0TmFtZUtleXMobmV3TmFtZSldKSB7XG4gICAgZm9yIChjb25zdCBzb3VyY2VQYXRoIG9mIGRhdGEubmFtZUtleVNvdXJjZVBhdGhzLmdldChuYW1lS2V5KSA/PyBbXSkge1xuICAgICAgY2FuZGlkYXRlU291cmNlUGF0aHMuYWRkKHNvdXJjZVBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3Qgc291cmNlUGF0aCBvZiBjYW5kaWRhdGVTb3VyY2VQYXRocykge1xuICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGdldENhY2hlUmVmZXJlbmNlcyhnZXRDYWNoZWRNZXRhZGF0YShhcHAsIHNvdXJjZVBhdGgpKSkge1xuICAgICAgaWYgKGNhbGxiYWNrKHNvdXJjZVBhdGgsIHJlZmVyZW5jZSkgPT09IHRydWUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBsaW5rVXBkYXRlciBvZiBPYmplY3QudmFsdWVzKGFwcC5tZXRhZGF0YUNhY2hlLmxpbmtVcGRhdGVycykpIHtcbiAgICBsaW5rVXBkYXRlcj8uaXRlcmF0ZVJlZmVyZW5jZXMoY2FsbGJhY2spO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJhY2tsaW5rSW5kZXhEYXRhKCk6IEJhY2tsaW5rSW5kZXhEYXRhIHtcbiAgcmV0dXJuIGdldE9ic2lkaWFuTGliU3RhdGU8QmFja2xpbmtJbmRleERhdGE+KCdiYWNrbGlua0luZGV4VjEnLCB7XG4gICAgaW5kZXhlZEhhc2hlczogbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKSxcbiAgICBuYW1lS2V5U291cmNlUGF0aHM6IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oKSxcbiAgICBzb3VyY2VQYXRoTmFtZUtleXM6IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oKVxuICB9KS52YWx1ZTtcbn1cbmZ1bmN0aW9uIGdldENhY2hlZE1ldGFkYXRhKGFwcDogQXBwLCBzb3VyY2VQYXRoOiBzdHJpbmcpOiBDYWNoZWRNZXRhZGF0YSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGhhc2ggPSBhcHAubWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVbc291cmNlUGF0aF0/Lmhhc2g7XG4gIHJldHVybiBoYXNoID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBhcHAubWV0YWRhdGFDYWNoZS5tZXRhZGF0YUNhY2hlW2hhc2hdO1xufVxuXG4vKipcbiAqIExpc3RzIGEgY2FjaGVkIG5vdGUncyByZWZlcmVuY2VzIGluIHRoZSBvcmRlciBPYnNpZGlhbidzIG93biB3YWxrIHZpc2l0cyB0aGVtOiBgZnJvbnRtYXR0ZXJMaW5rc2AsIHRoZW5cbiAqIGBsaW5rc2AsIHRoZW4gYGVtYmVkc2AuXG4gKlxuICogQHBhcmFtIGNhY2hlIC0gVGhlIG5vdGUncyBjYWNoZWQgbWV0YWRhdGEuXG4gKiBAcmV0dXJucyBUaGUgbm90ZSdzIHJlZmVyZW5jZXMuXG4gKi9cbmZ1bmN0aW9uIGdldENhY2hlUmVmZXJlbmNlcyhjYWNoZTogQ2FjaGVkTWV0YWRhdGEgfCB1bmRlZmluZWQpOiBSZWZlcmVuY2VbXSB7XG4gIHJldHVybiBjYWNoZSA/IFsuLi5jYWNoZS5mcm9udG1hdHRlckxpbmtzID8/IFtdLCAuLi5jYWNoZS5saW5rcyA/PyBbXSwgLi4uY2FjaGUuZW1iZWRzID8/IFtdXSA6IFtdO1xufVxuXG4vKipcbiAqIFN0cmlwcyB0aGUgc3VicGF0aCBmcm9tIGEgbGluaywgdGhlIHdheSBPYnNpZGlhbidzIGBnZXRMaW5rcGF0aGAgZG9lcy5cbiAqXG4gKiBAcGFyYW0gbGluayAtIFRoZSBsaW5rIHRleHQsIHN1Y2ggYXMgYGZvbGRlci9Ob3RlI0hlYWRpbmdgLlxuICogQHJldHVybnMgVGhlIGxpbmtwYXRoLCBzdWNoIGFzIGBmb2xkZXIvTm90ZWAuXG4gKi9cbmZ1bmN0aW9uIGdldExpbmtwYXRoKGxpbms6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGhhc2hJbmRleCA9IGxpbmsuaW5kZXhPZignIycpO1xuICByZXR1cm4gaGFzaEluZGV4ID09PSAtMSA/IGxpbmsgOiBsaW5rLnNsaWNlKDAsIGhhc2hJbmRleCk7XG59XG5cbi8qKlxuICogVGhlIGtleSBhIHJlZmVyZW5jZSBpcyBpbmRleGVkIHVuZGVyOiB0aGUgbG93ZXJjYXNlZCBsYXN0IGAvYCBzZWdtZW50IG9mIGl0cyBsaW5rcGF0aC5cbiAqXG4gKiBAcGFyYW0gbGluayAtIFRoZSByZWZlcmVuY2UncyBsaW5rIHRleHQuXG4gKiBAcmV0dXJucyBUaGUga2V5LlxuICovXG5mdW5jdGlvbiBnZXRSZWZlcmVuY2VOYW1lS2V5KGxpbms6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmtwYXRoID0gZ2V0TGlua3BhdGgobGluaykudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGxpbmtwYXRoLnNsaWNlKGxpbmtwYXRoLmxhc3RJbmRleE9mKCcvJykgKyAxKTtcbn1cblxuLyoqXG4gKiBUaGUga2V5cyB1bmRlciB3aGljaCBhIHJlZmVyZW5jZSB0byBhIGZpbGUgd2l0aCB0aGlzIG5hbWUgY2FuIGJlIGluZGV4ZWQuIGBnZXRMaW5rcGF0aERlc3RgIG1hdGNoZXMgYVxuICogc2VnbWVudCBhZ2FpbnN0IHRoZSBmaWxlJ3MgbmFtZSwgYW5kIGFnYWluc3QgdGhlIG5hbWUgd2l0aCBgLm1kYCBhcHBlbmRlZCwgc28gYSBub3RlIG5hbWVkIGBOb3RlLm1kYCBpc1xuICogcmVhY2hhYmxlIGZyb20gYm90aCBgbm90ZS5tZGAgYW5kIGBub3RlYC5cbiAqXG4gKiBAcGFyYW0gZmlsZU5hbWUgLSBUaGUgZmlsZSdzIG5hbWUsIGV4dGVuc2lvbiBpbmNsdWRlZC5cbiAqIEByZXR1cm5zIFRoZSBrZXlzLlxuICovXG5mdW5jdGlvbiBnZXRUYXJnZXROYW1lS2V5cyhmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCBuYW1lS2V5ID0gZmlsZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIG5hbWVLZXkuZW5kc1dpdGgoTUFSS0RPV05fU1VGRklYKSA/IFtuYW1lS2V5LCBuYW1lS2V5LnNsaWNlKDAsIC1NQVJLRE9XTl9TVUZGSVgubGVuZ3RoKV0gOiBbbmFtZUtleV07XG59XG5cbmZ1bmN0aW9uIGluZGV4U291cmNlKGFwcDogQXBwLCBkYXRhOiBCYWNrbGlua0luZGV4RGF0YSwgc291cmNlUGF0aDogc3RyaW5nLCBoYXNoOiBzdHJpbmcpOiB2b2lkIHtcbiAgcmVtb3ZlU291cmNlKGRhdGEsIHNvdXJjZVBhdGgpO1xuICBjb25zdCBjYWNoZSA9IGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbaGFzaF07XG4gIC8qXG4gICAqIEEgbm90ZSdzIGBmaWxlQ2FjaGVgIGVudHJ5IGNhbiBjYXJyeSBpdHMgbmV3IGhhc2ggYmVmb3JlIHRoZSBtZXRhZGF0YSBmb3IgdGhhdCBoYXNoIGlzIHN0b3JlZC4gUmVjb3JkaW5nXG4gICAqIHRoZSBoYXNoIHRoZW4gd291bGQgcGluIHRoZSBub3RlIGF0IFwibm8gcmVmZXJlbmNlc1wiIHVudGlsIGl0cyBjb250ZW50IGNoYW5nZWQgYWdhaW4sIHNvIGxlYXZlIGl0XG4gICAqIHVucmVjb3JkZWQgYW5kIGxldCB0aGUgbmV4dCBxdWVyeSBsb29rIGFnYWluLlxuICAgKi9cbiAgaWYgKCFjYWNoZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG5hbWVLZXlzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGdldENhY2hlUmVmZXJlbmNlcyhjYWNoZSkpIHtcbiAgICBuYW1lS2V5cy5hZGQoZ2V0UmVmZXJlbmNlTmFtZUtleShyZWZlcmVuY2UubGluaykpO1xuICB9XG4gIGZvciAoY29uc3QgbmFtZUtleSBvZiBuYW1lS2V5cykge1xuICAgIGxldCBzb3VyY2VQYXRocyA9IGRhdGEubmFtZUtleVNvdXJjZVBhdGhzLmdldChuYW1lS2V5KTtcbiAgICBpZiAoIXNvdXJjZVBhdGhzKSB7XG4gICAgICBzb3VyY2VQYXRocyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgZGF0YS5uYW1lS2V5U291cmNlUGF0aHMuc2V0KG5hbWVLZXksIHNvdXJjZVBhdGhzKTtcbiAgICB9XG4gICAgc291cmNlUGF0aHMuYWRkKHNvdXJjZVBhdGgpO1xuICB9XG4gIGRhdGEuc291cmNlUGF0aE5hbWVLZXlzLnNldChzb3VyY2VQYXRoLCBuYW1lS2V5cyk7XG4gIGRhdGEuaW5kZXhlZEhhc2hlcy5zZXQoc291cmNlUGF0aCwgaGFzaCk7XG59XG5cbi8qKlxuICogQnJpbmdzIHRoZSBpbmRleCBpbiBsaW5lIHdpdGggYG1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlYC4gSXQgcnVucyBvbiBldmVyeSBxdWVyeSwgc28gaXQgaXMgb25lIHBhc3Mgb3ZlclxuICogYGZpbGVDYWNoZWAgd2l0aCBubyBhbGxvY2F0aW9uIHBlciBub3RlIChhIHJlbmFtZSBpbiBhIGxhcmdlIHZhdWx0IHF1ZXJpZXMgc2V2ZXJhbCB0aW1lcyksIGFuZCB0aGUgcGFzcyBvdmVyIHRoZVxuICogaW5kZXggdGhhdCBmaW5kcyBub3RlcyBnb25lIGZyb20gYGZpbGVDYWNoZWAgcnVucyBvbmx5IHdoZW4gdGhhdCBmaXJzdCBwYXNzIGRpZCBub3Qgc2VlIGV2ZXJ5IGluZGV4ZWQgbm90ZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBkYXRhIC0gVGhlIGluZGV4LlxuICovXG5mdW5jdGlvbiByZWZyZXNoKGFwcDogQXBwLCBkYXRhOiBCYWNrbGlua0luZGV4RGF0YSk6IHZvaWQge1xuICBjb25zdCBmaWxlQ2FjaGUgPSBhcHAubWV0YWRhdGFDYWNoZS5maWxlQ2FjaGU7XG4gIGNvbnN0IGluZGV4ZWRDb3VudEJlZm9yZSA9IGRhdGEuaW5kZXhlZEhhc2hlcy5zaXplO1xuICBsZXQgc2VlbkluZGV4ZWRDb3VudCA9IDA7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGd1YXJkLWZvci1pbiAtLSBgT2JqZWN0Lmhhc093bmAgYmVsb3cgaXMgdGhlIGd1YXJkOyBgZm9yLi4uaW5gIGF2b2lkcyBhbiBlbnRyeSBhcnJheSBwZXIgbm90ZS5cbiAgZm9yIChjb25zdCBzb3VyY2VQYXRoIGluIGZpbGVDYWNoZSkge1xuICAgIGNvbnN0IGVudHJ5ID0gT2JqZWN0Lmhhc093bihmaWxlQ2FjaGUsIHNvdXJjZVBhdGgpID8gZmlsZUNhY2hlW3NvdXJjZVBhdGhdIDogdW5kZWZpbmVkO1xuICAgIGlmICghZW50cnkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBpbmRleGVkSGFzaCA9IGRhdGEuaW5kZXhlZEhhc2hlcy5nZXQoc291cmNlUGF0aCk7XG4gICAgaWYgKGluZGV4ZWRIYXNoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNlZW5JbmRleGVkQ291bnQrKztcbiAgICB9XG4gICAgaWYgKGluZGV4ZWRIYXNoICE9PSBlbnRyeS5oYXNoKSB7XG4gICAgICBpbmRleFNvdXJjZShhcHAsIGRhdGEsIHNvdXJjZVBhdGgsIGVudHJ5Lmhhc2gpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzZWVuSW5kZXhlZENvdW50ID09PSBpbmRleGVkQ291bnRCZWZvcmUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKGNvbnN0IHNvdXJjZVBhdGggb2YgZGF0YS5zb3VyY2VQYXRoTmFtZUtleXMua2V5cygpKSB7XG4gICAgaWYgKCFPYmplY3QuaGFzT3duKGZpbGVDYWNoZSwgc291cmNlUGF0aCkpIHtcbiAgICAgIHJlbW92ZVNvdXJjZShkYXRhLCBzb3VyY2VQYXRoKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlU291cmNlKGRhdGE6IEJhY2tsaW5rSW5kZXhEYXRhLCBzb3VyY2VQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgZm9yIChjb25zdCBuYW1lS2V5IG9mIGRhdGEuc291cmNlUGF0aE5hbWVLZXlzLmdldChzb3VyY2VQYXRoKSA/PyBbXSkge1xuICAgIGNvbnN0IHNvdXJjZVBhdGhzID0gZW5zdXJlTm9uTnVsbGFibGUoZGF0YS5uYW1lS2V5U291cmNlUGF0aHMuZ2V0KG5hbWVLZXkpKTtcbiAgICBzb3VyY2VQYXRocy5kZWxldGUoc291cmNlUGF0aCk7XG4gICAgaWYgKHNvdXJjZVBhdGhzLnNpemUgPT09IDApIHtcbiAgICAgIGRhdGEubmFtZUtleVNvdXJjZVBhdGhzLmRlbGV0ZShuYW1lS2V5KTtcbiAgICB9XG4gIH1cbiAgZGF0YS5zb3VyY2VQYXRoTmFtZUtleXMuZGVsZXRlKHNvdXJjZVBhdGgpO1xuICBkYXRhLmluZGV4ZWRIYXNoZXMuZGVsZXRlKHNvdXJjZVBhdGgpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnREEseUJBQWtDO0FBQ2xDLDZCQUFvQztBQUVwQyxnQ0FBb0M7QUFhcEMsTUFBTSxrQkFBa0I7QUFVakIsU0FBUywyQkFBMkIsS0FBVSxNQUF5QztBQUM1RixRQUFNLE9BQU8scUJBQXFCO0FBQ2xDLFVBQVEsS0FBSyxJQUFJO0FBRWpCLFFBQU0sZ0JBQWdCLElBQUk7QUFDMUIsUUFBTSxZQUFZLElBQUksMkNBQStCO0FBR3JELFFBQU0sdUJBQXVCLG9CQUFJLElBQVksQ0FBQyxLQUFLLElBQUksQ0FBQztBQUN4RCxhQUFXLFdBQVcsa0JBQWtCLEtBQUss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
|