@mnaoumov/obsidian-lib 3.0.0 → 3.1.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/dist/lib/cjs/__merged.cjs +3 -1
- package/dist/lib/cjs/__merged.d.cts +1 -1
- package/dist/lib/cjs/attachment-path.cjs +8 -5
- package/dist/lib/cjs/attachment-path.d.cts +4 -4
- package/dist/lib/cjs/attachment-unit-folder.cjs +1 -1
- package/dist/lib/cjs/attachment-unit-folder.d.cts +3 -3
- package/dist/lib/cjs/callout.cjs +1 -1
- package/dist/lib/cjs/callout.d.cts +2 -2
- package/dist/lib/cjs/canvas.cjs +1 -1
- package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +9 -9
- package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.d.cts +14 -14
- package/dist/lib/cjs/components/plugin-gate-component.cjs +3 -3
- package/dist/lib/cjs/components/plugin-gate-component.d.cts +8 -2
- package/dist/lib/cjs/components/plugin-suggestion-component.cjs +4 -3
- package/dist/lib/cjs/components/plugin-suggestion-component.d.cts +5 -1
- package/dist/lib/cjs/components/rename-delete-handler-component.cjs +1 -1
- package/dist/lib/cjs/dataview-link.cjs +1 -1
- package/dist/lib/cjs/dataview-link.d.cts +1 -1
- package/dist/lib/cjs/dataview.cjs +1 -1
- package/dist/lib/cjs/dataview.d.cts +8 -8
- package/dist/lib/cjs/demo-vault-helper-settings.cjs +1 -1
- package/dist/lib/cjs/demo-vault-helper-settings.d.cts +1 -1
- package/dist/lib/cjs/demo-vault-helper.cjs +1 -1
- package/dist/lib/cjs/demo-vault-helper.d.cts +11 -11
- package/dist/lib/cjs/file-system.cjs +1 -1
- package/dist/lib/cjs/file-system.d.cts +2 -2
- package/dist/lib/cjs/folder-note.cjs +1 -1
- package/dist/lib/cjs/generated-during-build.cjs +1 -1
- package/dist/lib/cjs/html-element.cjs +6 -1
- package/dist/lib/cjs/html-element.d.cts +11 -0
- package/dist/lib/cjs/metadata-cache.cjs +2 -2
- package/dist/lib/cjs/metadata-cache.d.cts +6 -6
- package/dist/lib/cjs/note-priority.cjs +1 -1
- package/dist/lib/cjs/note-priority.d.cts +1 -1
- package/dist/lib/cjs/notebook-navigator.cjs +1 -1
- package/dist/lib/cjs/notebook-navigator.d.cts +12 -12
- package/dist/lib/cjs/plugin/plugin.cjs +2 -2
- package/dist/lib/cjs/plugin/plugin.d.cts +1 -1
- package/dist/lib/cjs/templater.cjs +4 -4
- package/dist/lib/cjs/templater.d.cts +35 -35
- package/dist/lib/esm/__merged.d.mts +1 -1
- package/dist/lib/esm/__merged.mjs +3 -1
- package/dist/lib/esm/attachment-path.d.mts +4 -4
- package/dist/lib/esm/attachment-path.mjs +8 -5
- package/dist/lib/esm/attachment-unit-folder.d.mts +3 -3
- package/dist/lib/esm/attachment-unit-folder.mjs +1 -1
- package/dist/lib/esm/callout.d.mts +2 -2
- package/dist/lib/esm/callout.mjs +1 -1
- package/dist/lib/esm/canvas.mjs +1 -1
- package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.d.mts +14 -14
- package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.mjs +9 -9
- package/dist/lib/esm/components/plugin-gate-component.d.mts +8 -2
- package/dist/lib/esm/components/plugin-gate-component.mjs +4 -3
- package/dist/lib/esm/components/plugin-suggestion-component.d.mts +5 -1
- package/dist/lib/esm/components/plugin-suggestion-component.mjs +4 -3
- package/dist/lib/esm/components/rename-delete-handler-component.mjs +1 -1
- package/dist/lib/esm/dataview-link.d.mts +1 -1
- package/dist/lib/esm/dataview-link.mjs +1 -1
- package/dist/lib/esm/dataview.d.mts +8 -8
- package/dist/lib/esm/dataview.mjs +1 -1
- package/dist/lib/esm/demo-vault-helper-settings.d.mts +1 -1
- package/dist/lib/esm/demo-vault-helper.d.mts +11 -11
- package/dist/lib/esm/demo-vault-helper.mjs +1 -1
- package/dist/lib/esm/file-system.d.mts +2 -2
- package/dist/lib/esm/file-system.mjs +1 -1
- package/dist/lib/esm/folder-note.mjs +1 -1
- package/dist/lib/esm/generated-during-build.mjs +1 -1
- package/dist/lib/esm/html-element.d.mts +11 -0
- package/dist/lib/esm/html-element.mjs +5 -1
- package/dist/lib/esm/metadata-cache.d.mts +6 -6
- package/dist/lib/esm/metadata-cache.mjs +2 -2
- package/dist/lib/esm/note-priority.d.mts +1 -1
- package/dist/lib/esm/note-priority.mjs +1 -1
- package/dist/lib/esm/notebook-navigator.d.mts +12 -12
- package/dist/lib/esm/notebook-navigator.mjs +1 -1
- package/dist/lib/esm/plugin/plugin.d.mts +1 -1
- package/dist/lib/esm/plugin/plugin.mjs +2 -2
- package/dist/lib/esm/templater.d.mts +35 -35
- package/dist/lib/esm/templater.mjs +4 -4
- package/package.json +1 -1
|
@@ -509,7 +509,7 @@ function getRegisteredFilesCounts() {
|
|
|
509
509
|
return (0, import_obsidian_dev_utils_state.getObsidianDevUtilsState)("registeredFilesCounts", /* @__PURE__ */ new Map()).value;
|
|
510
510
|
}
|
|
511
511
|
function isNullableBacklinksDict(value) {
|
|
512
|
-
return value === null || typeof value === "object" && typeof Reflect.get(value, "get") === "function" && typeof Reflect.get(value, "keys") === "function";
|
|
512
|
+
return value === null || typeof value === "object" && Reflect.get(value, "data") instanceof Map && typeof Reflect.get(value, "get") === "function" && typeof Reflect.get(value, "keys") === "function";
|
|
513
513
|
}
|
|
514
514
|
function parseExternalBodyLinks(content, cache) {
|
|
515
515
|
const frontmatterEndOffset = cache.frontmatterPosition?.end.offset ?? 0;
|
|
@@ -559,4 +559,4 @@ function toParsedCachedMetadataEx(params) {
|
|
|
559
559
|
unregisterFileCacheForNonExistingFile,
|
|
560
560
|
unregisterFiles
|
|
561
561
|
});
|
|
562
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL21ldGFkYXRhLWNhY2hlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgbWV0YWRhdGEgY2FjaGUgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSZXRyeU9wdGlvbnMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0JztcbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBDYWNoZWRNZXRhZGF0YSxcbiAgUmVmZXJlbmNlLFxuICBUQWJzdHJhY3RGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgQ2FsbGJhY2tEaXNwb3NhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Rpc3Bvc2FibGUnO1xuaW1wb3J0IHsgZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9vYmplY3QtdXRpbHMnO1xuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuaW1wb3J0IHtcbiAgQ3VzdG9tQXJyYXlEaWN0SW1wbCxcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgaXNSZWZlcmVuY2VDYWNoZSxcbiAgcGFyZW50Rm9sZGVyUGF0aFxufSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZEZyb250bWF0dGVyIH0gZnJvbSAnLi9mcm9udG1hdHRlci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlLFxuICBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZVdpdGhPZmZzZXRzLFxuICBQYXJzZUxpbmtSZWZlcmVuY2Vcbn0gZnJvbSAnLi9wYXJzZS1saW5rLnRzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luQXBpQ29udHJhY3QgfSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcblxuaW1wb3J0IHsgcmV0cnlXaXRoVGltZW91dE5vdGljZSB9IGZyb20gJy4vYXN5bmMtd2l0aC1ub3RpY2UudHMnO1xuaW1wb3J0IHsgZ2V0SW5kZXhlZEJhY2tsaW5rc0ZvckZpbGUgfSBmcm9tICcuL2JhY2tsaW5rLWluZGV4LnRzJztcbmltcG9ydCB7XG4gIGdldEZpbGUsXG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZvbGRlcixcbiAgZ2V0UGF0aCxcbiAgaXNDYW52YXNGaWxlLFxuICBpc0ZpbGUsXG4gIGlzUGF0aE9yRmlsZVxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7XG4gIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyxcbiAgdG9Gcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzXG59IGZyb20gJy4vZnJvbnRtYXR0ZXItbGluay1jYWNoZS13aXRoLW9mZnNldHMudHMnO1xuaW1wb3J0IHsgcGFyc2VGcm9udG1hdHRlciB9IGZyb20gJy4vZnJvbnRtYXR0ZXIudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4vaTE4bi9pMThuLnRzJztcbmltcG9ydCB7IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSB9IGZyb20gJy4vb2JzaWRpYW4tZGV2LXV0aWxzLXN0YXRlLnRzJztcbmltcG9ydCB7XG4gIHBhcnNlRnJvbnRtYXR0ZXJMaW5rcyxcbiAgcGFyc2VMaW5rcyxcbiAgdG9QYXJzZUxpbmtSZWZlcmVuY2Vcbn0gZnJvbSAnLi9wYXJzZS1saW5rLnRzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUFyZ3VtZW50c1NjaGVtYSxcbiAgY3JlYXRlVHlwZUd1YXJkU2NoZW1hXG59IGZyb20gJy4vcGx1Z2luL3BsdWdpbi1hcGktc2NoZW1hLnRzJztcbmltcG9ydCB7IGZpbmRQbHVnaW5BcGkgfSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcbmltcG9ydCB7IHNvcnRSZWZlcmVuY2VzIH0gZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuaW1wb3J0IHtcbiAgcmVhZFNhZmUsXG4gIHNhdmVOb3RlXG59IGZyb20gJy4vdmF1bHQudHMnO1xuXG4vKipcbiAqIEEgcGFyc2luZyBmZWF0dXJlIHRoYXQgd2FzIGFwcGxpZWQgd2hlbiBjb21wdXRpbmcgYSB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeH0uXG4gKi9cbmV4cG9ydCBlbnVtIENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlIHtcbiAgLyoqXG4gICAqIFRoZSBleHRlcm5hbCBsaW5rcyBwYXJzZWQgZnJvbSB0aGUgbm90ZSBjb250ZW50IGJvZHkuXG4gICAqL1xuICBFeHRlcm5hbExpbmtzID0gJ0V4dGVybmFsTGlua3MnLFxuXG4gIC8qKlxuICAgKiBUaGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gc2luZ2xlLWxpbmsgbm90ZSBmcm9udG1hdHRlciB2YWx1ZXMuXG4gICAqL1xuICBGcm9udG1hdHRlckV4dGVybmFsTGlua3MgPSAnRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzJyxcblxuICAvKipcbiAgICogVGhlIGV4dGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIG11bHRpLWxpbmsgbm90ZSBmcm9udG1hdHRlciB2YWx1ZXMuXG4gICAqL1xuICBNdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzID0gJ011bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3MnLFxuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gbXVsdGktbGluayBub3RlIGZyb250bWF0dGVyIHZhbHVlcywgd2hpY2ggT2JzaWRpYW4gZG9lcyBub3QgbmF0aXZlbHkgY2FjaGUuXG4gICAqL1xuICBNdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcyA9ICdNdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcycsXG5cbiAgLyoqXG4gICAqIE9ic2lkaWFuJ3MgbmF0aXZlIG1ldGFkYXRhIHBhcnNpbmcgKGludGVybmFsIGxpbmtzLCBlbWJlZHMsIGZyb250bWF0dGVyIGxpbmtzKS5cbiAgICovXG4gIE5hdGl2ZSA9ICdOYXRpdmUnXG59XG5cbi8qKlxuICogQW4gZXh0ZW5kZWQge0BsaW5rIENhY2hlZE1ldGFkYXRhfSB0aGF0IHJlY29yZHMgd2hpY2ggcGFyc2luZyB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmV9cyB3ZXJlXG4gKiBhcHBsaWVkICh2aWEge0BsaW5rIENhY2hlZE1ldGFkYXRhRXguZmVhdHVyZXN9KSBhbmQgY2FycmllcyB0aGUgcmVzdWx0aW5nIGV4dGVybmFsIGxpbmtzLiBFYWNoIGxpbmtzXG4gKiBhcnJheSBpcyBwb3B1bGF0ZWQgb25seSB3aGVuIGl0cyBjb3JyZXNwb25kaW5nIGZlYXR1cmUgaXMgcHJlc2VudCBpbiB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeC5mZWF0dXJlc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVkTWV0YWRhdGFFeCBleHRlbmRzIENhY2hlZE1ldGFkYXRhIHtcbiAgLyoqXG4gICAqIFRoZSBleHRlcm5hbCBsaW5rcyBwYXJzZWQgZnJvbSB0aGUgbm90ZSBjb250ZW50IGJvZHkuIFBvcHVsYXRlZCBvbmx5IHdoZW5cbiAgICoge0BsaW5rIENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLkV4dGVybmFsTGlua3N9IGlzIGFwcGxpZWQuXG4gICAqL1xuICBleHRlcm5hbExpbmtzPzogUGFyc2VMaW5rUmVmZXJlbmNlW107XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJzaW5nIGZlYXR1cmVzIHRoYXQgd2VyZSBhcHBsaWVkIHdoZW4gY29tcHV0aW5nIHRoaXMgY2FjaGUuXG4gICAqL1xuICByZWFkb25seSBmZWF0dXJlczogQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmVbXTtcblxuICAvKipcbiAgICogVGhlIGV4dGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIHNpbmdsZS1saW5rIChzaW5nbGUtdmFsdWUpIG5vdGUgZnJvbnRtYXR0ZXIgdmFsdWVzLiBQb3B1bGF0ZWQgb25seVxuICAgKiB3aGVuIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5Gcm9udG1hdHRlckV4dGVybmFsTGlua3N9IGlzIGFwcGxpZWQuXG4gICAqL1xuICBmcm9udG1hdHRlckV4dGVybmFsTGlua3M/OiBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gbXVsdGktbGluayAobXVsdGktdmFsdWUpIG5vdGUgZnJvbnRtYXR0ZXIgdmFsdWVzLiBQb3B1bGF0ZWQgb25seSB3aGVuXG4gICAqIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5NdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzfSBpcyBhcHBsaWVkLlxuICAgKi9cbiAgbXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcz86IFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlV2l0aE9mZnNldHNbXTtcblxuICAvKipcbiAgICogVGhlIGludGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIG11bHRpLWxpbmsgKG11bHRpLXZhbHVlKSBub3RlIGZyb250bWF0dGVyIHZhbHVlcy4gUG9wdWxhdGVkIG9ubHkgd2hlblxuICAgKiB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuTXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3N9IGlzIGFwcGxpZWQuXG4gICAqL1xuICBtdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcz86IFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlV2l0aE9mZnNldHNbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlT3B0aW9ucyBleHRlbmRzIFJldHJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSB0aW1lb3V0IG5vdGljZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93VGltZW91dE5vdGljZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRCYWNrbGlua3NGb3JGaWxlU2FmZVBhcmFtcyBleHRlbmRzIEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSBvYmplY3QuXG4gICAqL1xuICByZWFkb25seSBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBnZXRDYWNoZVNhZmV9LlxuICovXG5leHBvcnQgdHlwZSBHZXRDYWNoZVNhZmVPcHRpb25zID0gUGFyc2VDYWNoZU9wdGlvbnM7XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgZ2V0TGlua3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldExpbmtzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjYWNoZWQgbWV0YWRhdGEgdG8gcmV0cmlldmUgdGhlIGxpbmtzIGZyb20uXG4gICAqL1xuICByZWFkb25seSBjYWNoZTogQ2FjaGVkTWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgZW1iZWRzIChgY2FjaGUuZW1iZWRzYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZUVtYmVkcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gdGhlIG5vdGUgYm9keS4gUmVxdWlyZXMgdGhlIGNhY2hlIHRvIGJlIGFcbiAgICoge0BsaW5rIENhY2hlZE1ldGFkYXRhRXh9LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRXh0ZXJuYWxMaW5rcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gc2luZ2xlLWxpbmsgKHNpbmdsZS12YWx1ZSkgbm90ZSBmcm9udG1hdHRlclxuICAgKiB2YWx1ZXMuIFJlcXVpcmVzIHRoZSBjYWNoZSB0byBiZSBhIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4fS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgZnJvbnRtYXR0ZXIgbGlua3MgKGBjYWNoZS5mcm9udG1hdHRlckxpbmtzYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZUZyb250bWF0dGVyTGlua3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIGV4dGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIG11bHRpLWxpbmsgKG11bHRpLXZhbHVlKSBub3RlIGZyb250bWF0dGVyIHZhbHVlcyxcbiAgICogaS5lLiB0aGUgb2Zmc2V0LWNhcnJ5aW5nIGZyb250bWF0dGVyIGV4dGVybmFsIGxpbmtzIChuYXJyb3dlZCB2aWFcbiAgICoge0BsaW5rIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0c30pLiBSZXF1aXJlcyB0aGUgY2FjaGUgdG8gYmUgYSB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeH0uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVNdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHRoZSBpbnRlcm5hbCBsaW5rcyBwYXJzZWQgZnJvbSBtdWx0aS1saW5rIChtdWx0aS12YWx1ZSkgbm90ZSBmcm9udG1hdHRlciB2YWx1ZXMuXG4gICAqIFJlcXVpcmVzIHRoZSBjYWNoZSB0byBiZSBhIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4fS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZU11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHRoZSByZWZlcmVuY2UgbGlua3MgKGBjYWNoZS5saW5rc2ApLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVSZWZlcmVuY2VzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgcGFyc2luZyBwZXJmb3JtZWQgYnkge0BsaW5rIGdldENhY2hlU2FmZX0gYW5kIHtAbGluayBwYXJzZU1ldGFkYXRhfSBiZXlvbmQgT2JzaWRpYW4nc1xuICogbmF0aXZlIG1ldGFkYXRhIHBhcnNpbmcuIEVhY2ggb3B0aW9uIGlzIG9wdC1pbjsgZW5hYmxpbmcgaXQgYWRkcyB0aGUgY29ycmVzcG9uZGluZ1xuICoge0BsaW5rIENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlfSBhbmQgcG9wdWxhdGVzIHRoZSBtYXRjaGluZyBsaW5rcyBhcnJheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZUNhY2hlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBhcnNlIHRoZSBleHRlcm5hbCBsaW5rcyBmcm9tIHRoZSBub3RlIGNvbnRlbnQgYm9keS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUGFyc2VFeHRlcm5hbExpbmtzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBwYXJzZSB0aGUgZXh0ZXJuYWwgbGlua3MgZnJvbSBzaW5nbGUtbGluayAoc2luZ2xlLXZhbHVlKSBub3RlIGZyb250bWF0dGVyIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUGFyc2VGcm9udG1hdHRlckV4dGVybmFsTGlua3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBhcnNlIHRoZSBleHRlcm5hbCBsaW5rcyBmcm9tIG11bHRpLWxpbmsgKG11bHRpLXZhbHVlKSBub3RlIGZyb250bWF0dGVyIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUGFyc2VNdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBwYXJzZSB0aGUgaW50ZXJuYWwgbGlua3MgZnJvbSBtdWx0aS1saW5rIChtdWx0aS12YWx1ZSkgbm90ZSBmcm9udG1hdHRlciB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFBhcnNlTXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3M/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBwYXJzZU1ldGFkYXRhfS5cbiAqL1xuZXhwb3J0IHR5cGUgUGFyc2VNZXRhZGF0YU9wdGlvbnMgPSBQYXJzZUNhY2hlT3B0aW9ucztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGZpbGUgY2FjaGUgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICByZWFkb25seSBjYWNoZTogQ2FjaGVkTWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZpbGUgdG8gcmVnaXN0ZXIgdGhlIGZpbGUgY2FjaGUgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcbn1cblxuLyoqXG4gKiBUaGUgc2xpY2Ugb2YgQWR2YW5jZWQgTWV0YWRhdGEgQ2FjaGUncyBwdWJsaXNoZWQgQVBJIHRoaXMgbW9kdWxlIGNhbGxzLCBkZWNsYXJlZCBoZXJlIHJhdGhlciB0aGFuIGltcG9ydGVkLFxuICogYmVjYXVzZSB0aGF0IHBsdWdpbiBpcyBub3QgYSBkZXBlbmRlbmN5IChydWxlIEw5IGluIGBBR0VOVFMubWRgKS4gSXRzIGBhcGkuZC50c2AgZGVjbGFyZXMgdGhlIHdob2xlIG9mIGl0LlxuICovXG5pbnRlcmZhY2UgQWR2YW5jZWRNZXRhZGF0YUNhY2hlQmFja2xpbmtzQXBpIHtcbiAgLyoqXG4gICAqIEFuc3dlcnMgZnJvbSB0aGUgcGx1Z2luJ3MgYmFja2xpbmsgY2FjaGUuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSBvYmplY3QuXG4gICAqIEByZXR1cm5zIFRoZSBiYWNrbGlua3MsIG9yIGBudWxsYCB3aGlsZSB0aGUgcGx1Z2luJ3MgYEJhY2tsaW5rc2AgbW9kdWxlIGlzIG9mZi5cbiAgICovXG4gIGdldEJhY2tsaW5rc0ZvckZpbGU6IChwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKSA9PiBDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPiB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEFuc3dlcnMgZnJvbSB0aGUgcGx1Z2luJ3MgYmFja2xpbmsgY2FjaGUgb25jZSB0aGUgcGVuZGluZyBmaWxlIGNoYW5nZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYmFja2xpbmtzLCBvciB0byBgbnVsbGAgd2hpbGUgdGhlIHBsdWdpbidzIGBCYWNrbGlua3NgXG4gICAqICAgbW9kdWxlIGlzIG9mZi5cbiAgICovXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlOiAocGF0aE9yRmlsZTogUGF0aE9yRmlsZSkgPT4gUHJvbWlzZTxDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPiB8IG51bGw+O1xufVxuXG4vKipcbiAqIEEgc2VsZWN0b3IgZm9yIGEgZmVhdHVyZS1nYXRlZCBsaW5rIGNhdGVnb3J5IGluIHtAbGluayBnZXRMaW5rc30uXG4gKi9cbmludGVyZmFjZSBGZWF0dXJlTGlua1NlbGVjdG9yIHtcbiAgLyoqXG4gICAqIEEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIGxpbmsgY2F0ZWdvcnksIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXMuXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZmVhdHVyZSB0aGF0IG11c3QgYmUgcHJlc2VudCBpbiB0aGUgY2FjaGUgZm9yIHRoaXMgY2F0ZWdvcnkgdG8gYmUgYXZhaWxhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgZmVhdHVyZTogQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmU7XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgdGhlIGxpbmtzIGZvciB0aGlzIGNhdGVnb3J5IGZyb20gdGhlIGNhY2hlLlxuICAgKi9cbiAgc2VsZWN0OiAoY2FjaGU6IENhY2hlZE1ldGFkYXRhRXgpID0+IFJlZmVyZW5jZVtdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgdGhpcyBjYXRlZ29yeS5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgdG9QYXJzZWRDYWNoZWRNZXRhZGF0YUV4fS5cbiAqL1xuaW50ZXJmYWNlIFRvUGFyc2VkQ2FjaGVkTWV0YWRhdGFFeFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgcGxhaW4gY2FjaGVkIG1ldGFkYXRhIHRvIHdyYXAuXG4gICAqL1xuICByZWFkb25seSBjYWNoZTogQ2FjaGVkTWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIFRoZSBub3RlIGNvbnRlbnQgdGhlIG9mZnNldHMgaW5kZXggaW50bywgdXNlZCBmb3IgYm9keSBleHRlcm5hbC1saW5rIHBhcnNpbmcuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJzZSBvcHRpb25zIGNvbnRyb2xsaW5nIHdoaWNoIGxpbmtzIHRvIHBhcnNlLlxuICAgKi9cbiAgcmVhZG9ubHkgb3B0aW9uczogUGFyc2VDYWNoZU9wdGlvbnM7XG59XG5cbi8qKlxuICogVGhlIHBsdWdpbiBpZCBvZiB0aGUgQWR2YW5jZWQgTWV0YWRhdGEgQ2FjaGUgcGx1Z2luLCB0aGUgc3VjY2Vzc29yIHRvIEJhY2tsaW5rIENhY2hlLlxuICpcbiAqIFVzZWQgYnkge0BsaW5rIGhhc0JhY2tsaW5rQ2FjaGVQbHVnaW59LCBhbmQgYXMgdGhlIHByb3ZpZGVyIGlkIHVuZGVyIHdoaWNoIHtAbGluayBnZXRCYWNrbGlua3NGb3JGaWxlT3JQYXRofSBhbmQge0BsaW5rIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlfSBsb29rIHVwIHRoZSBwbHVnaW4ncyBwdWJsaXNoZWQgQVBJLlxuICovXG5leHBvcnQgY29uc3QgQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfUExVR0lOX0lEID0gJ2FkdmFuY2VkLW1ldGFkYXRhLWNhY2hlJztcblxuLyoqXG4gKiBUaGUgY29udHJhY3QgdmVyc2lvbnMgb2YgQWR2YW5jZWQgTWV0YWRhdGEgQ2FjaGUncyBBUEkgdGhpcyBtb2R1bGUgY29tcGlsZWQgYWdhaW5zdC4gYDEuMy4wYCBpcyB0aGUgZmlyc3QgdG8gY2FycnkgdGhlIHR3byBiYWNrbGluayBtZXRob2RzLlxuICovXG5jb25zdCBBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9CQUNLTElOS1NfQVBJX1ZFUlNJT05fUkFOR0UgPSAnXjEuMy4wJztcblxuLyoqXG4gKiBUaGUgc2NoZW1hcyBvZiBhIGJhY2tsaW5rIG1ldGhvZCdzIHBheWxvYWRzOiB0aGUgb25lIHBhdGgtb3ItZmlsZSBhcmd1bWVudCwgYW5kIHRoZSBiYWNrbGlua3Mgb3IgYG51bGxgLlxuICovXG5jb25zdCBBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9CQUNLTElOS1NfTUVUSE9EX0NPTlRSQUNUID0ge1xuICBpbnB1dDogY3JlYXRlQXJndW1lbnRzU2NoZW1hPFtwYXRoT3JGaWxlOiBQYXRoT3JGaWxlXT4oW3sgZXhwZWN0ZWQ6ICdhIHBhdGggb3IgYSBmaWxlJywgdHlwZUd1YXJkOiBpc1BhdGhPckZpbGUgfV0pLFxuICBvdXRwdXQ6IGNyZWF0ZVR5cGVHdWFyZFNjaGVtYSh7IGV4cGVjdGVkOiAnYSBiYWNrbGlua3MgZGljdGlvbmFyeSBvciBudWxsJywgdHlwZUd1YXJkOiBpc051bGxhYmxlQmFja2xpbmtzRGljdCB9KVxufTtcblxuLyoqXG4gKiBUaGUgY29udHJhY3Qgb2YgdGhlIG1lbWJlcnMgb2YgQWR2YW5jZWQgTWV0YWRhdGEgQ2FjaGUncyBBUEkgdGhpcyBtb2R1bGUgY2FsbHMsIHNvIGEgcmVjb3JkIHRoYXQgbGFja3MgZWl0aGVyIGlzIHBhc3NlZCBvdmVyLCBhbmQgYSBwYXlsb2FkIHRoYXQgYnJlYWtzIGl0cyBzaWduYXR1cmUgaXMgcmVwb3J0ZWQgd2hpbGUgdGhlIGBQbHVnaW5BcGlgIGRlYnVnZ2VyIGlzIG9uLlxuICovXG5jb25zdCBBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9CQUNLTElOS1NfQVBJX0NPTlRSQUNUOiBQbHVnaW5BcGlDb250cmFjdDxBZHZhbmNlZE1ldGFkYXRhQ2FjaGVCYWNrbGlua3NBcGk+ID0ge1xuICBnZXRCYWNrbGlua3NGb3JGaWxlOiBBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9CQUNLTElOS1NfTUVUSE9EX0NPTlRSQUNULFxuICBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZTogQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfQkFDS0xJTktTX01FVEhPRF9DT05UUkFDVFxufTtcblxuLyoqXG4gKiBUaGUgcGx1Z2luIGlkIG9mIHRoZSByZXRpcmVkIEJhY2tsaW5rIENhY2hlIHBsdWdpbiwgc3VwZXJzZWRlZCBieSB7QGxpbmsgQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfUExVR0lOX0lEfS5cbiAqXG4gKiBTdGlsbCByZWNvZ25pemVkIGJ5IHtAbGluayBoYXNCYWNrbGlua0NhY2hlUGx1Z2lufSwgZGVsaWJlcmF0ZWx5LiBSZW1vdmluZyBhIHBsdWdpbiBmcm9tIHRoZSBjb21tdW5pdHkgcmVnaXN0cnkgYmxvY2tzIG5ldyBpbnN0YWxsczsgaXQgdW5pbnN0YWxscyBub3RoaW5nLCBzbyBldmVyeSBleGlzdGluZyB1c2VyIGtlZXBzIGl0IHVudGlsIHRoZXkgbWlncmF0ZSBieSBoYW5kLlxuICpcbiAqIEl0IG1heSBiZSBkcm9wcGVkIHdoZW4gYWxsIHRocmVlIG9mIHRoZSBmb2xsb3dpbmcgaG9sZCwgYW5kIG5vdCBiZWZvcmU6IEFkdmFuY2VkIE1ldGFkYXRhIENhY2hlIGlzIGxpc3RlZCBpbiB0aGUgY29tbXVuaXR5IHJlZ2lzdHJ5LCBzbyBtaWdyYXRpbmcgaXMgcG9zc2libGUgYXQgYWxsOyB0aGUgZmluYWwgQmFja2xpbmsgQ2FjaGUgaGFuZG92ZXIgcmVsZWFzZSBoYXMgYmVlbiBvdXQgZm9yIGF0IGxlYXN0IHR3ZWx2ZSBtb250aHM7IGFuZCB0aGlzIGxpYnJhcnkgaXMgY3V0dGluZyBhIG1ham9yIHJlbGVhc2UgYW55d2F5LCBiZWNhdXNlIGRyb3BwaW5nIHRoZSBpZCBzaWxlbnRseSB1bi1nYXRlcyBjYW52YXMgbGluayBoYW5kbGluZyBmb3IgYW55b25lIHdobyBoYXMgbm90IG1pZ3JhdGVkLiBUaGVyZSBpcyBubyBjb3N0IHByZXNzdXJlIHRvIGRyb3AgaXQgZWFybGllciAtIHJlY29nbml6aW5nIGEgZGVhZCBpZCBpcyBvbmUgc3RyaW5nIGNvbXBhcmlzb24gb24gYSBwYXRoIHRoYXQgYWxyZWFkeSByZWFkcyBhIHBsdWdpbiByZWdpc3RyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IEJBQ0tMSU5LX0NBQ0hFX1BMVUdJTl9JRCA9ICdiYWNrbGluay1jYWNoZSc7XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IHRoZSBtZXRhZGF0YSBjYWNoZSBpcyByZWFkeSBmb3IgYWxsIGZpbGVzLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBtZXRhZGF0YSBjYWNoZSBpcyByZWFkeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZU1ldGFkYXRhQ2FjaGVSZWFkeShhcHA6IEFwcCk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGFwcC5tZXRhZGF0YUNhY2hlLm9uQ2xlYW5DYWNoZShyZXNvbHZlKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBiYWNrbGlua3MgZm9yIGEgZmlsZSBvciBwYXRoLlxuICogTk9URTogVGhlIGZpbGUgbWF5IGJlIG5vbi1leGlzdGVudC5cbiAqXG4gKiBXaGVuIEFkdmFuY2VkIE1ldGFkYXRhIENhY2hlIHB1Ymxpc2hlcyBpdHMgYmFja2xpbmtzIEFQSSBhbmQgaXRzIGBCYWNrbGlua3NgIG1vZHVsZSBpcyBvbiwgaXRzIGNhY2hlIGFuc3dlcnMuXG4gKiBPdGhlcndpc2UgdGhlIGFuc3dlciBjb21lcyBmcm9tIGEgYmFja2xpbmsgaW5kZXggd2hvc2UgY29zdCBpcyBwcm9wb3J0aW9uYWwgdG8gdGhlIGNhbmRpZGF0ZSBub3RlcyByYXRoZXIgdGhhblxuICogdG8gZXZlcnkgcmVmZXJlbmNlIGluIHRoZSB2YXVsdCwgYW5kIHdoaWNoIGdpdmVzIHRoZSBzYW1lIHJlZmVyZW5jZXMgT2JzaWRpYW4ncyBvd24gYGdldEJhY2tsaW5rc0ZvckZpbGVgIGdpdmVzLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgb2JqZWN0LlxuICogQHJldHVybnMgVGhlIGJhY2tsaW5rcyBmb3IgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYWNrbGlua3NGb3JGaWxlT3JQYXRoKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZSh7IGFwcCwgcGF0aE9yRmlsZSwgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nOiB0cnVlIH0pO1xuICB1c2luZyBfcmVnaXN0cmF0aW9uID0gcmVnaXN0ZXJGaWxlcyhhcHAsIFtmaWxlXSk7XG4gIHJldHVybiBmaW5kQWR2YW5jZWRNZXRhZGF0YUNhY2hlQmFja2xpbmtzQXBpKCk/LmdldEJhY2tsaW5rc0ZvckZpbGUoZmlsZSkgPz8gZ2V0SW5kZXhlZEJhY2tsaW5rc0ZvckZpbGUoYXBwLCBmaWxlKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGJhY2tsaW5rcyBmb3IgYSBmaWxlIHNhZmVseS5cbiAqXG4gKiBXaGVuIEFkdmFuY2VkIE1ldGFkYXRhIENhY2hlIHB1Ymxpc2hlcyBpdHMgYmFja2xpbmtzIEFQSSBhbmQgaXRzIGBCYWNrbGlua3NgIG1vZHVsZSBpcyBvbiwgdGhhdCBBUEkgYW5zd2Vycy5cbiAqXG4gKiBPdGhlcndpc2UgdGhpcyBpcyBOT1QgYSBwdXJlIHJlYWQuIEl0IHZlcmlmaWVzXG4gKiBlYWNoIGJhY2tsaW5rIGFnYWluc3QgdGhlIG5vdGUncyBjdXJyZW50IHRleHQsIGFuZCB0byBkbyB0aGF0IGl0IGNhbGxzIHtAbGluayBzYXZlTm90ZX0gb24gZXZlcnlcbiAqIG5vdGUgdGhhdCBsaW5rcyB0byB0aGUgZmlsZSwgd2hpY2ggc2F2ZXMgYW55IG9wZW4gZWRpdG9yIHZpZXcgb2YgdGhvc2Ugbm90ZXMgdGhhdCBoYXMgdW5zYXZlZFxuICogY2hhbmdlcy4gQ2FsbCBpdCBmcm9tIGFuIGV4cGxpY2l0IHVzZXIgYWN0aW9uLiBEbyBub3QgY2FsbCBpdCBmcm9tIGFuIGF1dG9tYXRpYyB0cmlnZ2VyIChhIHZhdWx0IG9yXG4gKiBtZXRhZGF0YSBldmVudCwgYSBzYXZlIG9yIHJlbmRlciBwYXRjaCkgdGhhdCBvbmx5IGRlY2lkZXMgd2hldGhlciB0byBhY3QuIFRoZXJlLCBhIGZvcmNlZCBzYXZlIGNhblxuICogcmFjZSBhbm90aGVyIHBsdWdpbidzIGluLWZsaWdodCBlZGl0b3IgY2hhbmdlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmV0cmlldmluZyB0aGUgYmFja2xpbmtzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBkaWN0aW9uYXJ5IG9mIGJhY2tsaW5rcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKHBhcmFtczogR2V0QmFja2xpbmtzRm9yRmlsZVNhZmVQYXJhbXMpOiBQcm9taXNlPEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+PiB7XG4gIGNvbnN0IHsgYXBwLCBwYXRoT3JGaWxlLCAuLi5vcHRpb25zIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGNhY2hlZEJhY2tsaW5rcyA9IGF3YWl0IGZpbmRBZHZhbmNlZE1ldGFkYXRhQ2FjaGVCYWNrbGlua3NBcGkoKT8uZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUocGF0aE9yRmlsZSk7XG4gIGlmIChjYWNoZWRCYWNrbGlua3MpIHtcbiAgICByZXR1cm4gY2FjaGVkQmFja2xpbmtzO1xuICB9XG5cbiAgbGV0IGJhY2tsaW5rczogQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4gPSBuZXcgQ3VzdG9tQXJyYXlEaWN0SW1wbDxSZWZlcmVuY2U+KCk7XG4gIGF3YWl0IHJldHJ5V2l0aFRpbWVvdXROb3RpY2Uoe1xuICAgIGFzeW5jIG9wZXJhdGlvbkZ1bmN0aW9uKGFib3J0U2lnbmFsKSB7XG4gICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgY29uc3QgZmlsZSA9IGdldEZpbGUoeyBhcHAsIHBhdGhPckZpbGUgfSk7XG4gICAgICBhd2FpdCBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwKTtcbiAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICBiYWNrbGlua3MgPSBnZXRCYWNrbGlua3NGb3JGaWxlT3JQYXRoKGFwcCwgZmlsZSk7XG4gICAgICBmb3IgKGNvbnN0IG5vdGVQYXRoIG9mIGJhY2tsaW5rcy5rZXlzKCkpIHtcbiAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgY29uc3Qgbm90ZSA9IGdldEZpbGVPck51bGwoeyBhcHAsIHBhdGhPckZpbGU6IG5vdGVQYXRoIH0pO1xuICAgICAgICBpZiAoIW5vdGUpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBIGNhbnZhcyBob2xkZXIgY2Fubm90IGJlIGNoZWNrZWQgYWdhaW5zdCBpdHMgdGV4dC4gSXRzIGZpbGUtbm9kZSByZWZlcmVuY2VzIGNhcnJ5IG5vIHBvc2l0aW9uLCBhbmRcbiAgICAgICAgLy8gT2JzaWRpYW4gcmVwb3J0cyBhIHRleHQtbm9kZSBlbWJlZCB3aXRoIGEgcG9zaXRpb24gaW50byB0aGF0IG5vZGUncyBvd24gdGV4dCwgbm90IGludG8gdGhlIGNhbnZhcyBKU09OLFxuICAgICAgICAvLyBzbyBzbGljaW5nIHRoZSBmaWxlIGF0IGl0IG5ldmVyIGdpdmVzIHRoZSBsaW5rIGJhY2sgYW5kIHRoZSByZXRyeSB3b3VsZCBuZXZlciBlbmQuXG4gICAgICAgIGlmIChpc0NhbnZhc0ZpbGUobm90ZSkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHNhdmVOb3RlKGFwcCwgbm90ZSk7XG4gICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRTYWZlKGFwcCwgbm90ZSk7XG4gICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIGlmICghY29udGVudCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmcm9udG1hdHRlciA9IHBhcnNlRnJvbnRtYXR0ZXIoY29udGVudCk7XG4gICAgICAgIGNvbnN0IGxpbmtzID0gYmFja2xpbmtzLmdldChub3RlUGF0aCk7XG4gICAgICAgIGlmICghbGlua3MpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgICAgICBsZXQgYWN0dWFsTGluazogc3RyaW5nO1xuICAgICAgICAgIGlmIChpc1JlZmVyZW5jZUNhY2hlKGxpbmspKSB7XG4gICAgICAgICAgICBhY3R1YWxMaW5rID0gY29udGVudC5zbGljZShsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgbGluay5wb3NpdGlvbi5lbmQub2Zmc2V0KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUobGluaykpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5VmFsdWUgPSBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKGZyb250bWF0dGVyLCBsaW5rLmtleSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5VmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbGlua1dpdGhPZmZzZXRzID0gdG9Gcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspO1xuICAgICAgICAgICAgYWN0dWFsTGluayA9IHByb3BlcnR5VmFsdWUuc2xpY2UobGlua1dpdGhPZmZzZXRzLnN0YXJ0T2Zmc2V0LCBsaW5rV2l0aE9mZnNldHMuZW5kT2Zmc2V0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhY3R1YWxMaW5rICE9PSBsaW5rLm9yaWdpbmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgb3BlcmF0aW9uTmFtZTogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLm1ldGFkYXRhQ2FjaGUuZ2V0QmFja2xpbmtzRm9yRmlsZVBhdGgsIHsgZmlsZVBhdGg6IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKSB9KSxcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IG51bGwsXG4gICAgcmV0cnlPcHRpb25zOiBvcHRpb25zLFxuICAgIHNob3VsZFNob3dUaW1lb3V0Tm90aWNlOiBvcHRpb25zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlID8/IHRydWVcbiAgfSk7XG5cbiAgcmV0dXJuIGJhY2tsaW5rcztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGNhY2hlZCBtZXRhZGF0YSBmb3IgYSBnaXZlbiBmaWxlIG9yIHBhdGguXG4gKlxuICogVGhpcyBpcyBOT1QgYSBwdXJlIHJlYWQ6IGJlZm9yZSBpdCByZWFkcyB0aGUgY2FjaGUsIGl0IGNhbGxzIHtAbGluayBzYXZlTm90ZX0sIHdoaWNoIHNhdmVzIGFueVxuICogb3BlbiBlZGl0b3IgdmlldyBvZiB0aGUgbm90ZSB0aGF0IGhhcyB1bnNhdmVkIGNoYW5nZXMuIFRoYXQgc2F2ZSBpcyB3aHkgdGhlIGNhY2hlIG1hdGNoZXMgd2hhdCB0aGVcbiAqIHVzZXIgc2VlcywgYW5kIHdoeSBhIGNvbW1hbmQgdGhhdCByZXdyaXRlcyB0aGUgbm90ZSBjYW4gdXNlIHRoaXMgc2FmZWx5IHdpdGhvdXQgaXRzIHJld3JpdGUgYmVpbmdcbiAqIGNsb2JiZXJlZC4gSXQgaXMgYWxzbyBhIHdyaXRlIG9uIHRoZSBub3RlLiBTbyBkbyBub3QgY2FsbCB0aGlzIGZyb20gYW4gYXV0b21hdGljIHRyaWdnZXIgKGEgdmF1bHRcbiAqIG9yIG1ldGFkYXRhIGV2ZW50LCBhIHNhdmUgb3IgcmVuZGVyIHBhdGNoLCBhIGxheW91dCBob29rKSB0aGF0IG9ubHkgZGVjaWRlcyB3aGV0aGVyIHRvIGFjdDogYVxuICogZm9yY2VkIHNhdmUgb25lIHRpY2sgYWZ0ZXIgYW5vdGhlciBwbHVnaW4gaGFzIGRpc3BhdGNoZWQgYSBjaGFuZ2UgaW50byB0aGUgZWRpdG9yIGNhbiBsZWF2ZVxuICogT2JzaWRpYW4ncyBlZGl0b3IgcmVuZGVyaW5nIHN0YWxlIHN0YXRlLiBBIHJlYWQtb25seSBwcm9iZSBvbiB0aGUgbm90ZSdzIGN1cnJlbnQgdGV4dCBzaG91bGQgdXNlXG4gKiB7QGxpbmsgcGFyc2VNZXRhZGF0YX0gb24gdGhhdCB0ZXh0IGluc3RlYWQuIEl0IG5lZWRzIG5vIHZpZXcsIG5vIGNhY2hlIGFuZCBubyBzYXZlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGVPclBhdGggLSBUaGUgZmlsZSBvciBwYXRoIHRvIHJldHJpZXZlIHRoZSBtZXRhZGF0YSBmb3IuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJzZSBvcHRpb25zIGNvbnRyb2xsaW5nIHdoaWNoIGFkZGl0aW9uYWwgbGlua3MgdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgY2FjaGVkIG1ldGFkYXRhIGZvciB0aGUgZmlsZSwgb3IgYG51bGxgIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDYWNoZVNhZmUoYXBwOiBBcHAsIGZpbGVPclBhdGg6IFBhdGhPckZpbGUsIG9wdGlvbnM6IEdldENhY2hlU2FmZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8Q2FjaGVkTWV0YWRhdGFFeCB8IG51bGw+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGVPck51bGwoeyBhcHAsIHBhdGhPckZpbGU6IGZpbGVPclBhdGggfSk7XG5cbiAgdHJ5IHtcbiAgICBpZiAoIWZpbGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBjYWNoZTogQ2FjaGVkTWV0YWRhdGEgfCBudWxsO1xuICAgIGlmIChmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIGNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBzYXZlTm90ZShhcHAsIGZpbGUpO1xuXG4gICAgICBjb25zdCBmaWxlQ2FjaGVFbnRyeSA9IGFwcC5tZXRhZGF0YUNhY2hlLmZpbGVDYWNoZVtmaWxlLnBhdGhdO1xuICAgICAgY29uc3QgaXNVcFRvRGF0ZSA9IGZpbGVDYWNoZUVudHJ5Py5tdGltZSA9PT0gZmlsZS5zdGF0Lm10aW1lXG4gICAgICAgICYmIGZpbGVDYWNoZUVudHJ5LnNpemUgPT09IGZpbGUuc3RhdC5zaXplXG4gICAgICAgICYmIE9iamVjdC5oYXNPd24oYXBwLm1ldGFkYXRhQ2FjaGUubWV0YWRhdGFDYWNoZSwgZmlsZUNhY2hlRW50cnkuaGFzaCk7XG4gICAgICBpZiAoIWlzVXBUb0RhdGUpIHtcbiAgICAgICAgYXdhaXQgYXBwLm1ldGFkYXRhQ2FjaGUuY29tcHV0ZUZpbGVNZXRhZGF0YUFzeW5jKGZpbGUpO1xuICAgICAgICBhd2FpdCBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwKTtcbiAgICAgIH1cbiAgICAgIGNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xuICAgIH1cblxuICAgIGlmIChjYWNoZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gT25seSB0aGUgYm9keS1leHRlcm5hbCBwYXJzZSBuZWVkcyB0aGUgZmlsZSBjb250ZW50OyBmcm9udG1hdHRlciBwYXJzaW5nIHVzZXMgdGhlIGNhY2hlZFxuICAgIC8vIGZyb250bWF0dGVyLCBzbyBhdm9pZCByZWFkaW5nIHRoZSBjb250ZW50IHVubGVzcyBpdCBpcyBhY3R1YWxseSBuZWVkZWQuXG4gICAgY29uc3QgY29udGVudCA9IG9wdGlvbnMuc2hvdWxkUGFyc2VFeHRlcm5hbExpbmtzID8gYXdhaXQgYXBwLnZhdWx0LmNhY2hlZFJlYWQoZmlsZSkgOiAnJztcbiAgICByZXR1cm4gdG9QYXJzZWRDYWNoZWRNZXRhZGF0YUV4KHsgY2FjaGUsIGNvbnRlbnQsIG9wdGlvbnMgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGZyb250IG1hdHRlciBmcm9tIHRoZSBtZXRhZGF0YSBjYWNoZSBzYWZlbHkuXG4gKlxuICogSXQgcmVhZHMgdGhyb3VnaCB7QGxpbmsgZ2V0Q2FjaGVTYWZlfSwgc28gaXQgc2F2ZXMgYW55IG9wZW4gZWRpdG9yIHZpZXcgb2YgdGhlIG5vdGUgdGhhdCBoYXNcbiAqIHVuc2F2ZWQgY2hhbmdlcy4gU2VlIHtAbGluayBnZXRDYWNoZVNhZmV9IGZvciB3aGVuIHRoYXQgc2F2ZSBtYXR0ZXJzIGFuZCB3aGF0IHRvIHVzZSBpbnN0ZWFkLlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tRnJvbnRtYXR0ZXIgLSBUaGUgdHlwZSBvZiBjdXN0b20gZnJvbnQgbWF0dGVyLlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gcmV0cmlldmUgdGhlIGZyb250IG1hdHRlciBmcm9tLlxuICogQHJldHVybnMgVGhlIGNvbWJpbmVkIGZyb250IG1hdHRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZyb250bWF0dGVyU2FmZTxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+KGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogUHJvbWlzZTxDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPj4ge1xuICBjb25zdCBjYWNoZSA9IGF3YWl0IGdldENhY2hlU2FmZShhcHAsIHBhdGhPckZpbGUpO1xuICByZXR1cm4gKGNhY2hlPy5mcm9udG1hdHRlciA/PyB7fSkgYXMgQ29tYmluZWRGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj47XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBzZWxlY3RlZCBsaW5rcyBmcm9tIHRoZSBwcm92aWRlZCBjYWNoZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJldHJpZXZpbmcgdGhlIGxpbmtzLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVmZXJlbmNlcyByZXByZXNlbnRpbmcgdGhlIHNlbGVjdGVkIGxpbmtzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGlua3MocGFyYW1zOiBHZXRMaW5rc1BhcmFtcyk6IFJlZmVyZW5jZVtdIHtcbiAgY29uc3Qge1xuICAgIGNhY2hlLFxuICAgIHNob3VsZEluY2x1ZGVFbWJlZHMgPSB0cnVlLFxuICAgIHNob3VsZEluY2x1ZGVFeHRlcm5hbExpbmtzID0gZmFsc2UsXG4gICAgc2hvdWxkSW5jbHVkZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyA9IGZhbHNlLFxuICAgIHNob3VsZEluY2x1ZGVGcm9udG1hdHRlckxpbmtzID0gdHJ1ZSxcbiAgICBzaG91bGRJbmNsdWRlTXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyA9IGZhbHNlLFxuICAgIHNob3VsZEluY2x1ZGVNdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcyA9IGZhbHNlLFxuICAgIHNob3VsZEluY2x1ZGVSZWZlcmVuY2VzID0gdHJ1ZVxuICB9ID0gcGFyYW1zO1xuXG4gIGxldCBsaW5rczogUmVmZXJlbmNlW10gPSBbXG4gICAgLi4uKHNob3VsZEluY2x1ZGVSZWZlcmVuY2VzID8gY2FjaGUubGlua3MgPz8gW10gOiBbXSksXG4gICAgLi4uKHNob3VsZEluY2x1ZGVFbWJlZHMgPyBjYWNoZS5lbWJlZHMgPz8gW10gOiBbXSksXG4gICAgLi4uKHNob3VsZEluY2x1ZGVGcm9udG1hdHRlckxpbmtzID8gY2FjaGUuZnJvbnRtYXR0ZXJMaW5rcyA/PyBbXSA6IFtdKVxuICBdO1xuXG4gIGNvbnN0IGZlYXR1cmVMaW5rU2VsZWN0b3JzOiBGZWF0dXJlTGlua1NlbGVjdG9yW10gPSBbXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246ICdib2R5IGV4dGVybmFsIGxpbmtzJyxcbiAgICAgIGZlYXR1cmU6IENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLkV4dGVybmFsTGlua3MsXG4gICAgICBzZWxlY3Q6IChjYWNoZUV4KSA9PiBjYWNoZUV4LmV4dGVybmFsTGlua3MsXG4gICAgICBzaG91bGRJbmNsdWRlOiBzaG91bGRJbmNsdWRlRXh0ZXJuYWxMaW5rc1xuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246ICdmcm9udG1hdHRlciBleHRlcm5hbCBsaW5rcycsXG4gICAgICBmZWF0dXJlOiBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5Gcm9udG1hdHRlckV4dGVybmFsTGlua3MsXG4gICAgICBzZWxlY3Q6IChjYWNoZUV4KSA9PiBjYWNoZUV4LmZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyxcbiAgICAgIHNob3VsZEluY2x1ZGU6IHNob3VsZEluY2x1ZGVGcm9udG1hdHRlckV4dGVybmFsTGlua3NcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnbXVsdGktdmFsdWUgZnJvbnRtYXR0ZXIgZXh0ZXJuYWwgbGlua3MnLFxuICAgICAgZmVhdHVyZTogQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuTXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyxcbiAgICAgIHNlbGVjdDogKGNhY2hlRXgpID0+IGNhY2hlRXgubXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyxcbiAgICAgIHNob3VsZEluY2x1ZGU6IHNob3VsZEluY2x1ZGVNdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogJ211bHRpLXZhbHVlIGZyb250bWF0dGVyIGxpbmtzJyxcbiAgICAgIGZlYXR1cmU6IENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLk11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzLFxuICAgICAgc2VsZWN0OiAoY2FjaGVFeCkgPT4gY2FjaGVFeC5tdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcyxcbiAgICAgIHNob3VsZEluY2x1ZGU6IHNob3VsZEluY2x1ZGVNdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rc1xuICAgIH1cbiAgXTtcblxuICBmb3IgKGNvbnN0IGZlYXR1cmVMaW5rU2VsZWN0b3Igb2YgZmVhdHVyZUxpbmtTZWxlY3RvcnMpIHtcbiAgICBpZiAoIWZlYXR1cmVMaW5rU2VsZWN0b3Iuc2hvdWxkSW5jbHVkZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKCFpc0NhY2hlZE1ldGFkYXRhRXgoY2FjaGUpIHx8ICFjYWNoZS5mZWF0dXJlcy5pbmNsdWRlcyhmZWF0dXJlTGlua1NlbGVjdG9yLmZlYXR1cmUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBpbmNsdWRlICR7ZmVhdHVyZUxpbmtTZWxlY3Rvci5kZXNjcmlwdGlvbn06IHRoZSBjYWNoZSB3YXMgbm90IGNvbXB1dGVkIHdpdGggdGhlICR7ZmVhdHVyZUxpbmtTZWxlY3Rvci5mZWF0dXJlfSBmZWF0dXJlLmApO1xuICAgIH1cblxuICAgIGxpbmtzLnB1c2goLi4uZW5zdXJlTm9uTnVsbGFibGUoZmVhdHVyZUxpbmtTZWxlY3Rvci5zZWxlY3QoY2FjaGUpKSk7XG4gIH1cblxuICBzb3J0UmVmZXJlbmNlcyhsaW5rcyk7XG5cbiAgLy8gQlVHOiBodHRwczovL2ZvcnVtLm9ic2lkaWFuLm1kL3QvYnVnLWR1cGxpY2F0ZWQtbGlua3MtaW4tbWV0YWRhdGFjYWNoZS1pbnNpZGUtZm9vdG5vdGVzLzg1NTUxXG4gIGxpbmtzID0gbGlua3MuZmlsdGVyKChsaW5rLCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNMaW5rID0gZW5zdXJlTm9uTnVsbGFibGUobGlua3NbaW5kZXggLSAxXSk7XG5cbiAgICBpZiAoaXNSZWZlcmVuY2VDYWNoZShsaW5rKSAmJiBpc1JlZmVyZW5jZUNhY2hlKHByZXZpb3VzTGluaykpIHtcbiAgICAgIHJldHVybiBsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCAhPT0gcHJldmlvdXNMaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAoaXNGcm9udG1hdHRlckxpbmtDYWNoZShsaW5rKSAmJiBpc0Zyb250bWF0dGVyTGlua0NhY2hlKHByZXZpb3VzTGluaykpIHtcbiAgICAgIGNvbnN0IGxpbmtTdGFydE9mZnNldCA9IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhsaW5rKSA/IGxpbmsuc3RhcnRPZmZzZXQgOiAwO1xuICAgICAgY29uc3QgcHJldmlvdXNMaW5rU3RhcnRPZmZzZXQgPSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocHJldmlvdXNMaW5rKSA/IHByZXZpb3VzTGluay5zdGFydE9mZnNldCA6IDA7XG4gICAgICByZXR1cm4gbGluay5rZXkgIT09IHByZXZpb3VzTGluay5rZXkgfHwgaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspICE9PSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocHJldmlvdXNMaW5rKVxuICAgICAgICB8fCBsaW5rU3RhcnRPZmZzZXQgIT09IHByZXZpb3VzTGlua1N0YXJ0T2Zmc2V0O1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gbGlua3M7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgYmFja2xpbmsgY2FjaGUgcGx1Z2luIGlzIGN1cnJlbnRseSBsb2FkZWQgLSBlaXRoZXIgQWR2YW5jZWQgTWV0YWRhdGEgQ2FjaGUgKHtAbGluayBBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9QTFVHSU5fSUR9KSBvciBpdHMgcmV0aXJlZCBwcmVkZWNlc3NvciBCYWNrbGluayBDYWNoZSAoe0BsaW5rIEJBQ0tMSU5LX0NBQ0hFX1BMVUdJTl9JRH0pLlxuICpcbiAqIFN1Y2ggYSBwbHVnaW4ga2VlcHMgYSBkcmFpbi1vbi1yZWFkIGJhY2tsaW5rIGluZGV4IGFuZCBpbmRleGVzIGNhbnZhcyBtZXRhZGF0YSwgc28gYSBjYWxsZXIgdGhhdCBjb21wZW5zYXRlcyBmb3IgT2JzaWRpYW4ncyBvd24gZ2FwcyBjYW4gc3RhbmQgZG93biB3aGlsZSBvbmUgaXMgcHJlc2VudC4gQm90aCBpZHMgYXJlIHJlY29nbml6ZWQ7IHtAbGluayBCQUNLTElOS19DQUNIRV9QTFVHSU5fSUR9IHJlY29yZHMgd2hlbiB0aGUgcmV0aXJlZCBvbmUgbWF5IGJlIGRyb3BwZWQuXG4gKlxuICogVGhpcyByZWFkcyB0aGUgTE9BREVEIHBsdWdpbiBpbnN0YW5jZSByYXRoZXIgdGhhbiBgYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnNgLCBkZWxpYmVyYXRlbHk6IHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBwbHVnaW4ncyBwYXRjaGVzIGFyZSBpbiBwbGFjZSByaWdodCBub3csIGFuZCB0aGV5IGFyZSBub3QgdW50aWwgaXQgaGFzIGxvYWRlZC4gUGx1Z2lucyBsb2FkIGluIGFuIHVuc3BlY2lmaWVkIG9yZGVyLCBzbyBjYWxsIHRoaXMgZnJvbSBhIHVzZXItZHJpdmVuIHBhdGggcmF0aGVyIHRoYW4gZnJvbSBwbHVnaW4gbG9hZCAtIHNlZSBydWxlIEwyNSBpbiBgQUdFTlRTLm1kYC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBhIGJhY2tsaW5rIGNhY2hlIHBsdWdpbiBpcyBsb2FkZWQsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzQmFja2xpbmtDYWNoZVBsdWdpbihhcHA6IEFwcCk6IGJvb2xlYW4ge1xuICByZXR1cm4gYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX1BMVUdJTl9JRCkgIT09IG51bGwgfHwgYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKEJBQ0tMSU5LX0NBQ0hFX1BMVUdJTl9JRCkgIT09IG51bGw7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgY2FjaGUgaXMgYSB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeH0gKGkuZS4gaXQgd2FzIGNvbXB1dGVkIHdpdGggZXh0ZXJuYWwtbGlua1xuICogcGFyc2luZyBlbmFibGVkKS5cbiAqXG4gKiBAcGFyYW0gY2FjaGUgLSBUaGUgY2FjaGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGNhY2hlIGlzIGEge0BsaW5rIENhY2hlZE1ldGFkYXRhRXh9LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FjaGVkTWV0YWRhdGFFeChjYWNoZTogQ2FjaGVkTWV0YWRhdGEpOiBjYWNoZSBpcyBDYWNoZWRNZXRhZGF0YUV4IHtcbiAgcmV0dXJuICdmZWF0dXJlcycgaW4gY2FjaGU7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBtZXRhZGF0YSBmb3IgYSBnaXZlbiBzdHJpbmcuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gJHN0cmluZyAtIFRoZSBzdHJpbmcgdG8gcGFyc2UgdGhlIG1ldGFkYXRhIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcnNlIG9wdGlvbnMgY29udHJvbGxpbmcgd2hpY2ggYWRkaXRpb25hbCBsaW5rcyB0byBwYXJzZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJzZU1ldGFkYXRhKGFwcDogQXBwLCAkc3RyaW5nOiBzdHJpbmcsIG9wdGlvbnM6IFBhcnNlTWV0YWRhdGFPcHRpb25zID0ge30pOiBQcm9taXNlPENhY2hlZE1ldGFkYXRhRXg+IHtcbiAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICBjb25zdCBidWZmZXIgPSBlbmNvZGVyLmVuY29kZSgkc3RyaW5nKS5idWZmZXI7XG4gIGNvbnN0IGNhY2hlID0gYXdhaXQgYXBwLm1ldGFkYXRhQ2FjaGUuY29tcHV0ZU1ldGFkYXRhQXN5bmMoYnVmZmVyKSA/PyB7fTtcbiAgcmV0dXJuIHRvUGFyc2VkQ2FjaGVkTWV0YWRhdGFFeCh7IGNhY2hlLCBjb250ZW50OiAkc3RyaW5nLCBvcHRpb25zIH0pO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgZmlsZSBjYWNoZSBmb3IgYSBub24tZXhpc3RpbmcgZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlZ2lzdGVyaW5nIHRoZSBmaWxlIGNhY2hlLlxuICogQHJldHVybnMgQSB7QGxpbmsgRGlzcG9zYWJsZX0gdGhhdCB1bnJlZ2lzdGVycyB0aGUgZmlsZSBjYWNoZSB3aGVuIGRpc3Bvc2VkLCBmb3IgdXNlIHdpdGggYHVzaW5nYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlKHBhcmFtczogUmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGVQYXJhbXMpOiBEaXNwb3NhYmxlIHtcbiAgY29uc3QgeyBhcHAsIGNhY2hlLCBwYXRoT3JGaWxlIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKHsgYXBwLCBwYXRoT3JGaWxlLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWUgfSk7XG4gIGlmICghZmlsZS5kZWxldGVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlIGlzIGV4aXN0aW5nJyk7XG4gIH1cblxuICBhcHAubWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVbZmlsZS5wYXRoXSA9IHtcbiAgICBoYXNoOiBmaWxlLnBhdGgsXG4gICAgbXRpbWU6IDAsXG4gICAgc2l6ZTogMFxuICB9O1xuXG4gIGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbZmlsZS5wYXRoXSA9IGNhY2hlO1xuXG4gIHJldHVybiBuZXcgQ2FsbGJhY2tEaXNwb3NhYmxlKHtcbiAgICBjYWxsYmFjazogKCk6IHZvaWQgPT4ge1xuICAgICAgdW5yZWdpc3RlckZpbGVDYWNoZUZvck5vbkV4aXN0aW5nRmlsZShhcHAsIGZpbGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGZpbGVzIGluIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZXMgLSBUaGUgZmlsZXMgdG8gcmVnaXN0ZXIuXG4gKiBAcmV0dXJucyBBIHtAbGluayBEaXNwb3NhYmxlfSB0aGF0IHVucmVnaXN0ZXJzIHRoZSBmaWxlcyB3aGVuIGRpc3Bvc2VkLCBmb3IgdXNlIHdpdGggYHVzaW5nYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRmlsZXMoYXBwOiBBcHAsIGZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiBEaXNwb3NhYmxlIHtcbiAgY29uc3QgcmVnaXN0ZXJlZEZpbGVzQ291bnRzID0gZ2V0UmVnaXN0ZXJlZEZpbGVzQ291bnRzKCk7XG5cbiAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xuICAgIHdoaWxlIChmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIGxldCBjb3VudCA9IHJlZ2lzdGVyZWRGaWxlc0NvdW50cy5nZXQoZmlsZS5wYXRoKSA/PyAwO1xuICAgICAgY291bnQrKztcbiAgICAgIHJlZ2lzdGVyZWRGaWxlc0NvdW50cy5zZXQoZmlsZS5wYXRoLCBjb3VudCk7XG5cbiAgICAgIGFwcC52YXVsdC5maWxlTWFwW2ZpbGUucGF0aF0gPSBmaWxlO1xuXG4gICAgICBpZiAoaXNGaWxlKGZpbGUpKSB7XG4gICAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLnVuaXF1ZUZpbGVMb29rdXAuYWRkKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLCBmaWxlKTtcbiAgICAgIH1cblxuICAgICAgZmlsZSA9IGdldEZvbGRlcih7XG4gICAgICAgIGFwcCxcbiAgICAgICAgcGF0aE9yRm9sZGVyOiBwYXJlbnRGb2xkZXJQYXRoKGZpbGUucGF0aCksXG4gICAgICAgIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZzogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBDYWxsYmFja0Rpc3Bvc2FibGUoe1xuICAgIGNhbGxiYWNrOiAoKTogdm9pZCA9PiB7XG4gICAgICB1bnJlZ2lzdGVyRmlsZXMoYXBwLCBmaWxlcyk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBVbnJlZ2lzdGVycyB0aGUgZmlsZSBjYWNoZSBmb3IgYSBub24tZXhpc3RpbmcgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byB1bnJlZ2lzdGVyIHRoZSBmaWxlIGNhY2hlIGZvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVucmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiB2b2lkIHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoeyBhcHAsIHBhdGhPckZpbGUsIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZzogdHJ1ZSB9KTtcbiAgaWYgKCFmaWxlLmRlbGV0ZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpbGUgaXMgZXhpc3RpbmcnKTtcbiAgfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWR5bmFtaWMtZGVsZXRlIC0tIFdlIGhhdmUgbm8gb3RoZXIgd2F5IHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkuXG4gIGRlbGV0ZSBhcHAubWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVbZmlsZS5wYXRoXTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZSAtLSBXZSBoYXZlIG5vIG90aGVyIHdheSB0byBkZWxldGUgdGhlIHByb3BlcnR5LlxuICBkZWxldGUgYXBwLm1ldGFkYXRhQ2FjaGUubWV0YWRhdGFDYWNoZVtmaWxlLnBhdGhdO1xufVxuXG4vKipcbiAqIFVucmVnaXN0ZXJzIGZpbGVzIGZyb20gdGhlIE9ic2lkaWFuIGFwcC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlcyAtIFRoZSBmaWxlcyB0byB1bnJlZ2lzdGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5yZWdpc3RlckZpbGVzKGFwcDogQXBwLCBmaWxlczogVEFic3RyYWN0RmlsZVtdKTogdm9pZCB7XG4gIGNvbnN0IHJlZ2lzdGVyZWRGaWxlc0NvdW50cyA9IGdldFJlZ2lzdGVyZWRGaWxlc0NvdW50cygpO1xuXG4gIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICB3aGlsZSAoZmlsZS5kZWxldGVkKSB7XG4gICAgICBsZXQgY291bnQgPSByZWdpc3RlcmVkRmlsZXNDb3VudHMuZ2V0KGZpbGUucGF0aCkgPz8gMTtcbiAgICAgIGNvdW50LS07XG4gICAgICByZWdpc3RlcmVkRmlsZXNDb3VudHMuc2V0KGZpbGUucGF0aCwgY291bnQpO1xuICAgICAgaWYgKGNvdW50ID09PSAwKSB7XG4gICAgICAgIHJlZ2lzdGVyZWRGaWxlc0NvdW50cy5kZWxldGUoZmlsZS5wYXRoKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZSAtLSBXZSBoYXZlIG5vIG90aGVyIHdheSB0byBkZWxldGUgdGhlIHByb3BlcnR5LlxuICAgICAgICBkZWxldGUgYXBwLnZhdWx0LmZpbGVNYXBbZmlsZS5wYXRoXTtcblxuICAgICAgICBpZiAoaXNGaWxlKGZpbGUpKSB7XG4gICAgICAgICAgYXBwLm1ldGFkYXRhQ2FjaGUudW5pcXVlRmlsZUxvb2t1cC5yZW1vdmUoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCksIGZpbGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZpbGUgPSBnZXRGb2xkZXIoe1xuICAgICAgICBhcHAsXG4gICAgICAgIHBhdGhPckZvbGRlcjogcGFyZW50Rm9sZGVyUGF0aChmaWxlLnBhdGgpLFxuICAgICAgICBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kQWR2YW5jZWRNZXRhZGF0YUNhY2hlQmFja2xpbmtzQXBpKCk6IEFkdmFuY2VkTWV0YWRhdGFDYWNoZUJhY2tsaW5rc0FwaSB8IG51bGwge1xuICByZXR1cm4gZmluZFBsdWdpbkFwaTxBZHZhbmNlZE1ldGFkYXRhQ2FjaGVCYWNrbGlua3NBcGk+KHtcbiAgICBhcGlWZXJzaW9uUmFuZ2U6IEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX0JBQ0tMSU5LU19BUElfVkVSU0lPTl9SQU5HRSxcbiAgICBjb250cmFjdDogQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfQkFDS0xJTktTX0FQSV9DT05UUkFDVCxcbiAgICBwbHVnaW5JZDogQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfUExVR0lOX0lEXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRSZWdpc3RlcmVkRmlsZXNDb3VudHMoKTogTWFwPHN0cmluZywgbnVtYmVyPiB7XG4gIHJldHVybiBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUoJ3JlZ2lzdGVyZWRGaWxlc0NvdW50cycsIG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCkpLnZhbHVlO1xufVxuXG4vKipcbiAqIFN0cnVjdHVyYWxseSByZWNvZ25pemVzIHRoZSBiYWNrbGlua3MgZGljdGlvbmFyeSBhbm90aGVyIHBsdWdpbidzIGNvcHkgYnVpbHQsIG9yIGBudWxsYC4gVGhlIGNsYXNzIGl0IHdhcyBidWlsdCBmcm9tIGxpdmVzIGluIHRoYXQgY29weSwgc28gYGluc3RhbmNlb2ZgIGNhbm5vdCBiZSB1c2VkIChydWxlIEw5IGluIGBBR0VOVFMubWRgKS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBgbnVsbGAgb3IgcmVhZHMgYXMgYSBiYWNrbGlua3MgZGljdGlvbmFyeS5cbiAqL1xuZnVuY3Rpb24gaXNOdWxsYWJsZUJhY2tsaW5rc0RpY3QodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPiB8IG51bGwge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGxcbiAgICB8fCAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgJiYgdHlwZW9mIFJlZmxlY3QuZ2V0KHZhbHVlLCAnZ2V0JykgPT09ICdmdW5jdGlvbidcbiAgICAgICYmIHR5cGVvZiBSZWZsZWN0LmdldCh2YWx1ZSwgJ2tleXMnKSA9PT0gJ2Z1bmN0aW9uJyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRXh0ZXJuYWxCb2R5TGlua3MoY29udGVudDogc3RyaW5nLCBjYWNoZTogQ2FjaGVkTWV0YWRhdGEpOiBQYXJzZUxpbmtSZWZlcmVuY2VbXSB7XG4gIGNvbnN0IGZyb250bWF0dGVyRW5kT2Zmc2V0ID0gY2FjaGUuZnJvbnRtYXR0ZXJQb3NpdGlvbj8uZW5kLm9mZnNldCA/PyAwO1xuICByZXR1cm4gcGFyc2VMaW5rcyhjb250ZW50KVxuICAgIC5maWx0ZXIoKHBhcnNlTGlua1Jlc3VsdCkgPT4gcGFyc2VMaW5rUmVzdWx0LmlzRXh0ZXJuYWwgJiYgcGFyc2VMaW5rUmVzdWx0LnN0YXJ0T2Zmc2V0ID49IGZyb250bWF0dGVyRW5kT2Zmc2V0KVxuICAgIC5tYXAoKHBhcnNlTGlua1Jlc3VsdCkgPT4gdG9QYXJzZUxpbmtSZWZlcmVuY2UoeyBjb250ZW50LCBwYXJzZUxpbmtSZXN1bHQgfSkpO1xufVxuXG5mdW5jdGlvbiB0b1BhcnNlZENhY2hlZE1ldGFkYXRhRXgocGFyYW1zOiBUb1BhcnNlZENhY2hlZE1ldGFkYXRhRXhQYXJhbXMpOiBDYWNoZWRNZXRhZGF0YUV4IHtcbiAgY29uc3QgeyBjYWNoZSwgY29udGVudCwgb3B0aW9ucyB9ID0gcGFyYW1zO1xuICBjb25zdCBmZWF0dXJlczogQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmVbXSA9IFtDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5OYXRpdmVdO1xuICBjb25zdCByZXN1bHQ6IENhY2hlZE1ldGFkYXRhRXggPSB7IC4uLmNhY2hlLCBmZWF0dXJlcyB9O1xuXG4gIGlmIChvcHRpb25zLnNob3VsZFBhcnNlRXh0ZXJuYWxMaW5rcykge1xuICAgIHJlc3VsdC5leHRlcm5hbExpbmtzID0gcGFyc2VFeHRlcm5hbEJvZHlMaW5rcyhjb250ZW50LCBjYWNoZSk7XG4gICAgZmVhdHVyZXMucHVzaChDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5FeHRlcm5hbExpbmtzKTtcbiAgfVxuXG4gIGlmIChcbiAgICBvcHRpb25zLnNob3VsZFBhcnNlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzXG4gICAgfHwgb3B0aW9ucy5zaG91bGRQYXJzZU11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3NcbiAgICB8fCBvcHRpb25zLnNob3VsZFBhcnNlTXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3NcbiAgKSB7XG4gICAgY29uc3QgZnJvbnRtYXR0ZXJMaW5rcyA9IHBhcnNlRnJvbnRtYXR0ZXJMaW5rcyhjYWNoZS5mcm9udG1hdHRlcik7XG5cbiAgICBpZiAob3B0aW9ucy5zaG91bGRQYXJzZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcykge1xuICAgICAgcmVzdWx0LmZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyA9IGZyb250bWF0dGVyTGlua3MuZnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzO1xuICAgICAgZmVhdHVyZXMucHVzaChDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5Gcm9udG1hdHRlckV4dGVybmFsTGlua3MpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNob3VsZFBhcnNlTXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcykge1xuICAgICAgcmVzdWx0Lm11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3MgPSBmcm9udG1hdHRlckxpbmtzLm11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3M7XG4gICAgICBmZWF0dXJlcy5wdXNoKENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLk11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3MpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNob3VsZFBhcnNlTXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3MpIHtcbiAgICAgIHJlc3VsdC5tdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcyA9IGZyb250bWF0dGVyTGlua3MubXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3M7XG4gICAgICBmZWF0dXJlcy5wdXNoKENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLk11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWVBLHdCQUFtQztBQUNuQywwQkFBdUM7QUFDdkMseUJBQWtDO0FBQ2xDLDZCQUtPO0FBV1AsK0JBQXVDO0FB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
|
|
562
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL21ldGFkYXRhLWNhY2hlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgbWV0YWRhdGEgY2FjaGUgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSZXRyeU9wdGlvbnMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0JztcbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBDYWNoZWRNZXRhZGF0YSxcbiAgUmVmZXJlbmNlLFxuICBUQWJzdHJhY3RGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgQ2FsbGJhY2tEaXNwb3NhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Rpc3Bvc2FibGUnO1xuaW1wb3J0IHsgZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9vYmplY3QtdXRpbHMnO1xuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuaW1wb3J0IHtcbiAgQ3VzdG9tQXJyYXlEaWN0SW1wbCxcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgaXNSZWZlcmVuY2VDYWNoZSxcbiAgcGFyZW50Rm9sZGVyUGF0aFxufSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZEZyb250bWF0dGVyIH0gZnJvbSAnLi9mcm9udG1hdHRlci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlLFxuICBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZVdpdGhPZmZzZXRzLFxuICBQYXJzZUxpbmtSZWZlcmVuY2Vcbn0gZnJvbSAnLi9wYXJzZS1saW5rLnRzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luQXBpQ29udHJhY3QgfSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcblxuaW1wb3J0IHsgcmV0cnlXaXRoVGltZW91dE5vdGljZSB9IGZyb20gJy4vYXN5bmMtd2l0aC1ub3RpY2UudHMnO1xuaW1wb3J0IHsgZ2V0SW5kZXhlZEJhY2tsaW5rc0ZvckZpbGUgfSBmcm9tICcuL2JhY2tsaW5rLWluZGV4LnRzJztcbmltcG9ydCB7XG4gIGdldEZpbGUsXG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZvbGRlcixcbiAgZ2V0UGF0aCxcbiAgaXNDYW52YXNGaWxlLFxuICBpc0ZpbGUsXG4gIGlzUGF0aE9yRmlsZVxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7XG4gIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyxcbiAgdG9Gcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzXG59IGZyb20gJy4vZnJvbnRtYXR0ZXItbGluay1jYWNoZS13aXRoLW9mZnNldHMudHMnO1xuaW1wb3J0IHsgcGFyc2VGcm9udG1hdHRlciB9IGZyb20gJy4vZnJvbnRtYXR0ZXIudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4vaTE4bi9pMThuLnRzJztcbmltcG9ydCB7IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSB9IGZyb20gJy4vb2JzaWRpYW4tZGV2LXV0aWxzLXN0YXRlLnRzJztcbmltcG9ydCB7XG4gIHBhcnNlRnJvbnRtYXR0ZXJMaW5rcyxcbiAgcGFyc2VMaW5rcyxcbiAgdG9QYXJzZUxpbmtSZWZlcmVuY2Vcbn0gZnJvbSAnLi9wYXJzZS1saW5rLnRzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUFyZ3VtZW50c1NjaGVtYSxcbiAgY3JlYXRlVHlwZUd1YXJkU2NoZW1hXG59IGZyb20gJy4vcGx1Z2luL3BsdWdpbi1hcGktc2NoZW1hLnRzJztcbmltcG9ydCB7IGZpbmRQbHVnaW5BcGkgfSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcbmltcG9ydCB7IHNvcnRSZWZlcmVuY2VzIH0gZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuaW1wb3J0IHtcbiAgcmVhZFNhZmUsXG4gIHNhdmVOb3RlXG59IGZyb20gJy4vdmF1bHQudHMnO1xuXG4vKipcbiAqIEEgcGFyc2luZyBmZWF0dXJlIHRoYXQgd2FzIGFwcGxpZWQgd2hlbiBjb21wdXRpbmcgYSB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeH0uXG4gKi9cbmV4cG9ydCBlbnVtIENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlIHtcbiAgLyoqXG4gICAqIFRoZSBleHRlcm5hbCBsaW5rcyBwYXJzZWQgZnJvbSB0aGUgbm90ZSBjb250ZW50IGJvZHkuXG4gICAqL1xuICBFeHRlcm5hbExpbmtzID0gJ0V4dGVybmFsTGlua3MnLFxuXG4gIC8qKlxuICAgKiBUaGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gc2luZ2xlLWxpbmsgbm90ZSBmcm9udG1hdHRlciB2YWx1ZXMuXG4gICAqL1xuICBGcm9udG1hdHRlckV4dGVybmFsTGlua3MgPSAnRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzJyxcblxuICAvKipcbiAgICogVGhlIGV4dGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIG11bHRpLWxpbmsgbm90ZSBmcm9udG1hdHRlciB2YWx1ZXMuXG4gICAqL1xuICBNdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzID0gJ011bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3MnLFxuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gbXVsdGktbGluayBub3RlIGZyb250bWF0dGVyIHZhbHVlcywgd2hpY2ggT2JzaWRpYW4gZG9lcyBub3QgbmF0aXZlbHkgY2FjaGUuXG4gICAqL1xuICBNdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcyA9ICdNdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcycsXG5cbiAgLyoqXG4gICAqIE9ic2lkaWFuJ3MgbmF0aXZlIG1ldGFkYXRhIHBhcnNpbmcgKGludGVybmFsIGxpbmtzLCBlbWJlZHMsIGZyb250bWF0dGVyIGxpbmtzKS5cbiAgICovXG4gIE5hdGl2ZSA9ICdOYXRpdmUnXG59XG5cbi8qKlxuICogQW4gZXh0ZW5kZWQge0BsaW5rIENhY2hlZE1ldGFkYXRhfSB0aGF0IHJlY29yZHMgd2hpY2ggcGFyc2luZyB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmV9cyB3ZXJlXG4gKiBhcHBsaWVkICh2aWEge0BsaW5rIENhY2hlZE1ldGFkYXRhRXguZmVhdHVyZXN9KSBhbmQgY2FycmllcyB0aGUgcmVzdWx0aW5nIGV4dGVybmFsIGxpbmtzLiBFYWNoIGxpbmtzXG4gKiBhcnJheSBpcyBwb3B1bGF0ZWQgb25seSB3aGVuIGl0cyBjb3JyZXNwb25kaW5nIGZlYXR1cmUgaXMgcHJlc2VudCBpbiB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeC5mZWF0dXJlc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVkTWV0YWRhdGFFeCBleHRlbmRzIENhY2hlZE1ldGFkYXRhIHtcbiAgLyoqXG4gICAqIFRoZSBleHRlcm5hbCBsaW5rcyBwYXJzZWQgZnJvbSB0aGUgbm90ZSBjb250ZW50IGJvZHkuIFBvcHVsYXRlZCBvbmx5IHdoZW5cbiAgICoge0BsaW5rIENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLkV4dGVybmFsTGlua3N9IGlzIGFwcGxpZWQuXG4gICAqL1xuICBleHRlcm5hbExpbmtzPzogUGFyc2VMaW5rUmVmZXJlbmNlW107XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJzaW5nIGZlYXR1cmVzIHRoYXQgd2VyZSBhcHBsaWVkIHdoZW4gY29tcHV0aW5nIHRoaXMgY2FjaGUuXG4gICAqL1xuICByZWFkb25seSBmZWF0dXJlczogQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmVbXTtcblxuICAvKipcbiAgICogVGhlIGV4dGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIHNpbmdsZS1saW5rIChzaW5nbGUtdmFsdWUpIG5vdGUgZnJvbnRtYXR0ZXIgdmFsdWVzLiBQb3B1bGF0ZWQgb25seVxuICAgKiB3aGVuIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5Gcm9udG1hdHRlckV4dGVybmFsTGlua3N9IGlzIGFwcGxpZWQuXG4gICAqL1xuICBmcm9udG1hdHRlckV4dGVybmFsTGlua3M/OiBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gbXVsdGktbGluayAobXVsdGktdmFsdWUpIG5vdGUgZnJvbnRtYXR0ZXIgdmFsdWVzLiBQb3B1bGF0ZWQgb25seSB3aGVuXG4gICAqIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5NdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzfSBpcyBhcHBsaWVkLlxuICAgKi9cbiAgbXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcz86IFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlV2l0aE9mZnNldHNbXTtcblxuICAvKipcbiAgICogVGhlIGludGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIG11bHRpLWxpbmsgKG11bHRpLXZhbHVlKSBub3RlIGZyb250bWF0dGVyIHZhbHVlcy4gUG9wdWxhdGVkIG9ubHkgd2hlblxuICAgKiB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuTXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3N9IGlzIGFwcGxpZWQuXG4gICAqL1xuICBtdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcz86IFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlV2l0aE9mZnNldHNbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlT3B0aW9ucyBleHRlbmRzIFJldHJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSB0aW1lb3V0IG5vdGljZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93VGltZW91dE5vdGljZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRCYWNrbGlua3NGb3JGaWxlU2FmZVBhcmFtcyBleHRlbmRzIEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSBvYmplY3QuXG4gICAqL1xuICByZWFkb25seSBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBnZXRDYWNoZVNhZmV9LlxuICovXG5leHBvcnQgdHlwZSBHZXRDYWNoZVNhZmVPcHRpb25zID0gUGFyc2VDYWNoZU9wdGlvbnM7XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgZ2V0TGlua3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldExpbmtzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjYWNoZWQgbWV0YWRhdGEgdG8gcmV0cmlldmUgdGhlIGxpbmtzIGZyb20uXG4gICAqL1xuICByZWFkb25seSBjYWNoZTogQ2FjaGVkTWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgZW1iZWRzIChgY2FjaGUuZW1iZWRzYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZUVtYmVkcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gdGhlIG5vdGUgYm9keS4gUmVxdWlyZXMgdGhlIGNhY2hlIHRvIGJlIGFcbiAgICoge0BsaW5rIENhY2hlZE1ldGFkYXRhRXh9LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRXh0ZXJuYWxMaW5rcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gc2luZ2xlLWxpbmsgKHNpbmdsZS12YWx1ZSkgbm90ZSBmcm9udG1hdHRlclxuICAgKiB2YWx1ZXMuIFJlcXVpcmVzIHRoZSBjYWNoZSB0byBiZSBhIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4fS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgZnJvbnRtYXR0ZXIgbGlua3MgKGBjYWNoZS5mcm9udG1hdHRlckxpbmtzYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZUZyb250bWF0dGVyTGlua3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIGV4dGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIG11bHRpLWxpbmsgKG11bHRpLXZhbHVlKSBub3RlIGZyb250bWF0dGVyIHZhbHVlcyxcbiAgICogaS5lLiB0aGUgb2Zmc2V0LWNhcnJ5aW5nIGZyb250bWF0dGVyIGV4dGVybmFsIGxpbmtzIChuYXJyb3dlZCB2aWFcbiAgICoge0BsaW5rIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0c30pLiBSZXF1aXJlcyB0aGUgY2FjaGUgdG8gYmUgYSB7QGxpbmsgQ2FjaGVkTWV0YWRhdGFFeH0uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVNdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHRoZSBpbnRlcm5hbCBsaW5rcyBwYXJzZWQgZnJvbSBtdWx0aS1saW5rIChtdWx0aS12YWx1ZSkgbm90ZSBmcm9udG1hdHRlciB2YWx1ZXMuXG4gICAqIFJlcXVpcmVzIHRoZSBjYWNoZSB0byBiZSBhIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4fS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZU11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHRoZSByZWZlcmVuY2UgbGlua3MgKGBjYWNoZS5saW5rc2ApLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVSZWZlcmVuY2VzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgcGFyc2luZyBwZXJmb3JtZWQgYnkge0BsaW5rIGdldENhY2hlU2FmZX0gYW5kIHtAbGluayBwYXJzZU1ldGFkYXRhfSBiZXlvbmQgT2JzaWRpYW4nc1xuICogbmF0aXZlIG1ldGFkYXRhIHBhcnNpbmcuIEVhY2ggb3B0aW9uIGlzIG9wdC1pbjsgZW5hYmxpbmcgaXQgYWRkcyB0aGUgY29ycmVzcG9uZGluZ1xuICoge0BsaW5rIENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlfSBhbmQgcG9wdWxhdGVzIHRoZSBtYXRjaGluZyBsaW5rcyBhcnJheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZUNhY2hlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBhcnNlIHRoZSBleHRlcm5hbCBsaW5rcyBmcm9tIHRoZSBub3RlIGNvbnRlbnQgYm9keS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUGFyc2VFeHRlcm5hbExpbmtzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBwYXJzZSB0aGUgZXh0ZXJuYWwgbGlua3MgZnJvbSBzaW5nbGUtbGluayAoc2luZ2xlLXZhbHVlKSBub3RlIGZyb250bWF0dGVyIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUGFyc2VGcm9udG1hdHRlckV4dGVybmFsTGlua3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBhcnNlIHRoZSBleHRlcm5hbCBsaW5rcyBmcm9tIG11bHRpLWxpbmsgKG11bHRpLXZhbHVlKSBub3RlIGZyb250bWF0dGVyIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUGFyc2VNdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBwYXJzZSB0aGUgaW50ZXJuYWwgbGlua3MgZnJvbSBtdWx0aS1saW5rIChtdWx0aS12YWx1ZSkgbm90ZSBmcm9udG1hdHRlciB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFBhcnNlTXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3M/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBwYXJzZU1ldGFkYXRhfS5cbiAqL1xuZXhwb3J0IHR5cGUgUGFyc2VNZXRhZGF0YU9wdGlvbnMgPSBQYXJzZUNhY2hlT3B0aW9ucztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGZpbGUgY2FjaGUgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICByZWFkb25seSBjYWNoZTogQ2FjaGVkTWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZpbGUgdG8gcmVnaXN0ZXIgdGhlIGZpbGUgY2FjaGUgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcbn1cblxuLyoqXG4gKiBUaGUgc2xpY2Ugb2YgYEFkdmFuY2VkIE1ldGFkYXRhIENhY2hlYCdzIHB1Ymxpc2hlZCBBUEkgdGhpcyBtb2R1bGUgY2FsbHMsIGRlY2xhcmVkIGhlcmUgcmF0aGVyIHRoYW4gaW1wb3J0ZWQsXG4gKiBiZWNhdXNlIHRoYXQgcGx1Z2luIGlzIG5vdCBhIGRlcGVuZGVuY3kgKHJ1bGUgTDkgaW4gYEFHRU5UUy5tZGApLiBJdHMgYGFwaS5kLnRzYCBkZWNsYXJlcyB0aGUgd2hvbGUgb2YgaXQuXG4gKi9cbmludGVyZmFjZSBBZHZhbmNlZE1ldGFkYXRhQ2FjaGVCYWNrbGlua3NBcGkge1xuICAvKipcbiAgICogQW5zd2VycyBmcm9tIHRoZSBwbHVnaW4ncyBiYWNrbGluayBjYWNoZS5cbiAgICpcbiAgICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAgICogQHJldHVybnMgVGhlIGJhY2tsaW5rcywgb3IgYG51bGxgIHdoaWxlIHRoZSBwbHVnaW4ncyBgQmFja2xpbmtzYCBtb2R1bGUgaXMgb2ZmLlxuICAgKi9cbiAgZ2V0QmFja2xpbmtzRm9yRmlsZTogKHBhdGhPckZpbGU6IFBhdGhPckZpbGUpID0+IEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+IHwgbnVsbDtcblxuICAvKipcbiAgICogQW5zd2VycyBmcm9tIHRoZSBwbHVnaW4ncyBiYWNrbGluayBjYWNoZSBvbmNlIHRoZSBwZW5kaW5nIGZpbGUgY2hhbmdlcyBoYXZlIGJlZW4gcHJvY2Vzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBiYWNrbGlua3MsIG9yIHRvIGBudWxsYCB3aGlsZSB0aGUgcGx1Z2luJ3MgYEJhY2tsaW5rc2BcbiAgICogICBtb2R1bGUgaXMgb2ZmLlxuICAgKi9cbiAgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmU6IChwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKSA9PiBQcm9taXNlPEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+IHwgbnVsbD47XG59XG5cbi8qKlxuICogQSBzZWxlY3RvciBmb3IgYSBmZWF0dXJlLWdhdGVkIGxpbmsgY2F0ZWdvcnkgaW4ge0BsaW5rIGdldExpbmtzfS5cbiAqL1xuaW50ZXJmYWNlIEZlYXR1cmVMaW5rU2VsZWN0b3Ige1xuICAvKipcbiAgICogQSBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgbGluayBjYXRlZ29yeSwgdXNlZCBpbiBlcnJvciBtZXNzYWdlcy5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmZWF0dXJlIHRoYXQgbXVzdCBiZSBwcmVzZW50IGluIHRoZSBjYWNoZSBmb3IgdGhpcyBjYXRlZ29yeSB0byBiZSBhdmFpbGFibGUuXG4gICAqL1xuICByZWFkb25seSBmZWF0dXJlOiBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZTtcblxuICAvKipcbiAgICogU2VsZWN0cyB0aGUgbGlua3MgZm9yIHRoaXMgY2F0ZWdvcnkgZnJvbSB0aGUgY2FjaGUuXG4gICAqL1xuICBzZWxlY3Q6IChjYWNoZTogQ2FjaGVkTWV0YWRhdGFFeCkgPT4gUmVmZXJlbmNlW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGlzIGNhdGVnb3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbXMgZm9yIHtAbGluayB0b1BhcnNlZENhY2hlZE1ldGFkYXRhRXh9LlxuICovXG5pbnRlcmZhY2UgVG9QYXJzZWRDYWNoZWRNZXRhZGF0YUV4UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwbGFpbiBjYWNoZWQgbWV0YWRhdGEgdG8gd3JhcC5cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlOiBDYWNoZWRNZXRhZGF0YTtcblxuICAvKipcbiAgICogVGhlIG5vdGUgY29udGVudCB0aGUgb2Zmc2V0cyBpbmRleCBpbnRvLCB1c2VkIGZvciBib2R5IGV4dGVybmFsLWxpbmsgcGFyc2luZy5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhcnNlIG9wdGlvbnMgY29udHJvbGxpbmcgd2hpY2ggbGlua3MgdG8gcGFyc2UuXG4gICAqL1xuICByZWFkb25seSBvcHRpb25zOiBQYXJzZUNhY2hlT3B0aW9ucztcbn1cblxuLyoqXG4gKiBUaGUgcGx1Z2luIGlkIG9mIHRoZSBgQWR2YW5jZWQgTWV0YWRhdGEgQ2FjaGVgIHBsdWdpbiwgdGhlIHN1Y2Nlc3NvciB0byBgQmFja2xpbmsgQ2FjaGVgLlxuICpcbiAqIFVzZWQgYnkge0BsaW5rIGhhc0JhY2tsaW5rQ2FjaGVQbHVnaW59LCBhbmQgYXMgdGhlIHByb3ZpZGVyIGlkIHVuZGVyIHdoaWNoIHtAbGluayBnZXRCYWNrbGlua3NGb3JGaWxlT3JQYXRofSBhbmQge0BsaW5rIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlfSBsb29rIHVwIHRoZSBwbHVnaW4ncyBwdWJsaXNoZWQgQVBJLlxuICovXG5leHBvcnQgY29uc3QgQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfUExVR0lOX0lEID0gJ2FkdmFuY2VkLW1ldGFkYXRhLWNhY2hlJztcblxuLyoqXG4gKiBUaGUgY29udHJhY3QgdmVyc2lvbnMgb2YgYEFkdmFuY2VkIE1ldGFkYXRhIENhY2hlYCdzIEFQSSB0aGlzIG1vZHVsZSBjb21waWxlZCBhZ2FpbnN0LiBgMS4zLjBgIGlzIHRoZSBmaXJzdCB0byBjYXJyeSB0aGUgdHdvIGJhY2tsaW5rIG1ldGhvZHMuXG4gKi9cbmNvbnN0IEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX0JBQ0tMSU5LU19BUElfVkVSU0lPTl9SQU5HRSA9ICdeMS4zLjAnO1xuXG4vKipcbiAqIFRoZSBzY2hlbWFzIG9mIGEgYmFja2xpbmsgbWV0aG9kJ3MgcGF5bG9hZHM6IHRoZSBvbmUgcGF0aC1vci1maWxlIGFyZ3VtZW50LCBhbmQgdGhlIGJhY2tsaW5rcyBvciBgbnVsbGAuXG4gKlxuICogQSBjb3B5IG9mIHRoZSBgZ2V0QmFja2xpbmtzRm9yRmlsZWAgYW5kIGBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZWAgZW50cmllcyBvZiBgQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfQVBJX0NPTlRSQUNUYCwgd2hpY2ggYEFkdmFuY2VkIE1ldGFkYXRhIENhY2hlYCBzaGlwcyBhc1xuICogaXRzIHJvb3QgYGFwaS1jb250cmFjdC50c2AgYW5kIHB1Ymxpc2hlcy4gS2VlcCB0aGUgZ3VhcmRzIGluIGFncmVlbWVudCB3aXRoIHRoYXQgZmlsZSwgc28gdGhlIHByb3ZpZGVyIGFuZCB0aGlzIGNvbnN1bWVyIGNoZWNrIG9uZSBkZWZpbml0aW9uLlxuICovXG5jb25zdCBBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9CQUNLTElOS1NfTUVUSE9EX0NPTlRSQUNUID0ge1xuICBpbnB1dDogY3JlYXRlQXJndW1lbnRzU2NoZW1hPFtwYXRoT3JGaWxlOiBQYXRoT3JGaWxlXT4oW3sgZXhwZWN0ZWQ6ICdhIHBhdGggb3IgYSBmaWxlJywgdHlwZUd1YXJkOiBpc1BhdGhPckZpbGUgfV0pLFxuICBvdXRwdXQ6IGNyZWF0ZVR5cGVHdWFyZFNjaGVtYSh7IGV4cGVjdGVkOiAnYSBiYWNrbGlua3MgZGljdGlvbmFyeSBvciBudWxsJywgdHlwZUd1YXJkOiBpc051bGxhYmxlQmFja2xpbmtzRGljdCB9KVxufTtcblxuLyoqXG4gKiBUaGUgY29udHJhY3Qgb2YgdGhlIG1lbWJlcnMgb2YgYEFkdmFuY2VkIE1ldGFkYXRhIENhY2hlYCdzIEFQSSB0aGlzIG1vZHVsZSBjYWxscywgc28gYSByZWNvcmQgdGhhdCBsYWNrcyBlaXRoZXIgaXMgcGFzc2VkIG92ZXIsIGFuZCBhIHBheWxvYWQgdGhhdCBicmVha3MgaXRzIHNpZ25hdHVyZSBpcyByZXBvcnRlZCB3aGlsZSB0aGUgYFBsdWdpbkFwaWAgZGVidWdnZXIgaXMgb24uXG4gKi9cbmNvbnN0IEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX0JBQ0tMSU5LU19BUElfQ09OVFJBQ1Q6IFBsdWdpbkFwaUNvbnRyYWN0PEFkdmFuY2VkTWV0YWRhdGFDYWNoZUJhY2tsaW5rc0FwaT4gPSB7XG4gIGdldEJhY2tsaW5rc0ZvckZpbGU6IEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX0JBQ0tMSU5LU19NRVRIT0RfQ09OVFJBQ1QsXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlOiBBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9CQUNLTElOS1NfTUVUSE9EX0NPTlRSQUNUXG59O1xuXG4vKipcbiAqIFRoZSBwbHVnaW4gaWQgb2YgdGhlIHJldGlyZWQgYEJhY2tsaW5rIENhY2hlYCBwbHVnaW4sIHN1cGVyc2VkZWQgYnkge0BsaW5rIEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX1BMVUdJTl9JRH0uXG4gKlxuICogU3RpbGwgcmVjb2duaXplZCBieSB7QGxpbmsgaGFzQmFja2xpbmtDYWNoZVBsdWdpbn0sIGRlbGliZXJhdGVseS4gUmVtb3ZpbmcgYSBwbHVnaW4gZnJvbSB0aGUgY29tbXVuaXR5IHJlZ2lzdHJ5IGJsb2NrcyBuZXcgaW5zdGFsbHM7IGl0IHVuaW5zdGFsbHMgbm90aGluZywgc28gZXZlcnkgZXhpc3RpbmcgdXNlciBrZWVwcyBpdCB1bnRpbCB0aGV5IG1pZ3JhdGUgYnkgaGFuZC5cbiAqXG4gKiBJdCBtYXkgYmUgZHJvcHBlZCB3aGVuIGFsbCB0aHJlZSBvZiB0aGUgZm9sbG93aW5nIGhvbGQsIGFuZCBub3QgYmVmb3JlOiBgQWR2YW5jZWQgTWV0YWRhdGEgQ2FjaGVgIGlzIGxpc3RlZCBpbiB0aGUgY29tbXVuaXR5IHJlZ2lzdHJ5LCBzbyBtaWdyYXRpbmcgaXMgcG9zc2libGUgYXQgYWxsOyB0aGUgZmluYWwgYEJhY2tsaW5rIENhY2hlYCBoYW5kb3ZlciByZWxlYXNlIGhhcyBiZWVuIG91dCBmb3IgYXQgbGVhc3QgdHdlbHZlIG1vbnRoczsgYW5kIHRoaXMgbGlicmFyeSBpcyBjdXR0aW5nIGEgbWFqb3IgcmVsZWFzZSBhbnl3YXksIGJlY2F1c2UgZHJvcHBpbmcgdGhlIGlkIHNpbGVudGx5IHVuLWdhdGVzIGNhbnZhcyBsaW5rIGhhbmRsaW5nIGZvciBhbnlvbmUgd2hvIGhhcyBub3QgbWlncmF0ZWQuIFRoZXJlIGlzIG5vIGNvc3QgcHJlc3N1cmUgdG8gZHJvcCBpdCBlYXJsaWVyIC0gcmVjb2duaXppbmcgYSBkZWFkIGlkIGlzIG9uZSBzdHJpbmcgY29tcGFyaXNvbiBvbiBhIHBhdGggdGhhdCBhbHJlYWR5IHJlYWRzIGEgcGx1Z2luIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgY29uc3QgQkFDS0xJTktfQ0FDSEVfUExVR0lOX0lEID0gJ2JhY2tsaW5rLWNhY2hlJztcblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgdGhlIG1ldGFkYXRhIGNhY2hlIGlzIHJlYWR5IGZvciBhbGwgZmlsZXMuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG1ldGFkYXRhIGNhY2hlIGlzIHJlYWR5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlTWV0YWRhdGFDYWNoZVJlYWR5KGFwcDogQXBwKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgYXBwLm1ldGFkYXRhQ2FjaGUub25DbGVhbkNhY2hlKHJlc29sdmUpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGJhY2tsaW5rcyBmb3IgYSBmaWxlIG9yIHBhdGguXG4gKiBOT1RFOiBUaGUgZmlsZSBtYXkgYmUgbm9uLWV4aXN0ZW50LlxuICpcbiAqIFdoZW4gYEFkdmFuY2VkIE1ldGFkYXRhIENhY2hlYCBwdWJsaXNoZXMgaXRzIGJhY2tsaW5rcyBBUEkgYW5kIGl0cyBgQmFja2xpbmtzYCBtb2R1bGUgaXMgb24sIGl0cyBjYWNoZSBhbnN3ZXJzLlxuICogT3RoZXJ3aXNlIHRoZSBhbnN3ZXIgY29tZXMgZnJvbSBhIGJhY2tsaW5rIGluZGV4IHdob3NlIGNvc3QgaXMgcHJvcG9ydGlvbmFsIHRvIHRoZSBjYW5kaWRhdGUgbm90ZXMgcmF0aGVyIHRoYW5cbiAqIHRvIGV2ZXJ5IHJlZmVyZW5jZSBpbiB0aGUgdmF1bHQsIGFuZCB3aGljaCBnaXZlcyB0aGUgc2FtZSByZWZlcmVuY2VzIE9ic2lkaWFuJ3Mgb3duIGBnZXRCYWNrbGlua3NGb3JGaWxlYCBnaXZlcy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAqIEByZXR1cm5zIFRoZSBiYWNrbGlua3MgZm9yIHRoZSBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFja2xpbmtzRm9yRmlsZU9yUGF0aChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoeyBhcHAsIHBhdGhPckZpbGUsIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZzogdHJ1ZSB9KTtcbiAgdXNpbmcgX3JlZ2lzdHJhdGlvbiA9IHJlZ2lzdGVyRmlsZXMoYXBwLCBbZmlsZV0pO1xuICByZXR1cm4gZmluZEFkdmFuY2VkTWV0YWRhdGFDYWNoZUJhY2tsaW5rc0FwaSgpPy5nZXRCYWNrbGlua3NGb3JGaWxlKGZpbGUpID8/IGdldEluZGV4ZWRCYWNrbGlua3NGb3JGaWxlKGFwcCwgZmlsZSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBiYWNrbGlua3MgZm9yIGEgZmlsZSBzYWZlbHkuXG4gKlxuICogV2hlbiBgQWR2YW5jZWQgTWV0YWRhdGEgQ2FjaGVgIHB1Ymxpc2hlcyBpdHMgYmFja2xpbmtzIEFQSSBhbmQgaXRzIGBCYWNrbGlua3NgIG1vZHVsZSBpcyBvbiwgdGhhdCBBUEkgYW5zd2Vycy5cbiAqXG4gKiBPdGhlcndpc2UgdGhpcyBpcyBOT1QgYSBwdXJlIHJlYWQuIEl0IHZlcmlmaWVzXG4gKiBlYWNoIGJhY2tsaW5rIGFnYWluc3QgdGhlIG5vdGUncyBjdXJyZW50IHRleHQsIGFuZCB0byBkbyB0aGF0IGl0IGNhbGxzIHtAbGluayBzYXZlTm90ZX0gb24gZXZlcnlcbiAqIG5vdGUgdGhhdCBsaW5rcyB0byB0aGUgZmlsZSwgd2hpY2ggc2F2ZXMgYW55IG9wZW4gZWRpdG9yIHZpZXcgb2YgdGhvc2Ugbm90ZXMgdGhhdCBoYXMgdW5zYXZlZFxuICogY2hhbmdlcy4gQ2FsbCBpdCBmcm9tIGFuIGV4cGxpY2l0IHVzZXIgYWN0aW9uLiBEbyBub3QgY2FsbCBpdCBmcm9tIGFuIGF1dG9tYXRpYyB0cmlnZ2VyIChhIHZhdWx0IG9yXG4gKiBtZXRhZGF0YSBldmVudCwgYSBzYXZlIG9yIHJlbmRlciBwYXRjaCkgdGhhdCBvbmx5IGRlY2lkZXMgd2hldGhlciB0byBhY3QuIFRoZXJlLCBhIGZvcmNlZCBzYXZlIGNhblxuICogcmFjZSBhbm90aGVyIHBsdWdpbidzIGluLWZsaWdodCBlZGl0b3IgY2hhbmdlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmV0cmlldmluZyB0aGUgYmFja2xpbmtzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBkaWN0aW9uYXJ5IG9mIGJhY2tsaW5rcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKHBhcmFtczogR2V0QmFja2xpbmtzRm9yRmlsZVNhZmVQYXJhbXMpOiBQcm9taXNlPEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+PiB7XG4gIGNvbnN0IHsgYXBwLCBwYXRoT3JGaWxlLCAuLi5vcHRpb25zIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGNhY2hlZEJhY2tsaW5rcyA9IGF3YWl0IGZpbmRBZHZhbmNlZE1ldGFkYXRhQ2FjaGVCYWNrbGlua3NBcGkoKT8uZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUocGF0aE9yRmlsZSk7XG4gIGlmIChjYWNoZWRCYWNrbGlua3MpIHtcbiAgICByZXR1cm4gY2FjaGVkQmFja2xpbmtzO1xuICB9XG5cbiAgbGV0IGJhY2tsaW5rczogQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4gPSBuZXcgQ3VzdG9tQXJyYXlEaWN0SW1wbDxSZWZlcmVuY2U+KCk7XG4gIGF3YWl0IHJldHJ5V2l0aFRpbWVvdXROb3RpY2Uoe1xuICAgIGFzeW5jIG9wZXJhdGlvbkZ1bmN0aW9uKGFib3J0U2lnbmFsKSB7XG4gICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgY29uc3QgZmlsZSA9IGdldEZpbGUoeyBhcHAsIHBhdGhPckZpbGUgfSk7XG4gICAgICBhd2FpdCBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwKTtcbiAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICBiYWNrbGlua3MgPSBnZXRCYWNrbGlua3NGb3JGaWxlT3JQYXRoKGFwcCwgZmlsZSk7XG4gICAgICBmb3IgKGNvbnN0IG5vdGVQYXRoIG9mIGJhY2tsaW5rcy5rZXlzKCkpIHtcbiAgICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgY29uc3Qgbm90ZSA9IGdldEZpbGVPck51bGwoeyBhcHAsIHBhdGhPckZpbGU6IG5vdGVQYXRoIH0pO1xuICAgICAgICBpZiAoIW5vdGUpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBIGNhbnZhcyBob2xkZXIgY2Fubm90IGJlIGNoZWNrZWQgYWdhaW5zdCBpdHMgdGV4dC4gSXRzIGZpbGUtbm9kZSByZWZlcmVuY2VzIGNhcnJ5IG5vIHBvc2l0aW9uLCBhbmRcbiAgICAgICAgLy8gT2JzaWRpYW4gcmVwb3J0cyBhIHRleHQtbm9kZSBlbWJlZCB3aXRoIGEgcG9zaXRpb24gaW50byB0aGF0IG5vZGUncyBvd24gdGV4dCwgbm90IGludG8gdGhlIGNhbnZhcyBKU09OLFxuICAgICAgICAvLyBzbyBzbGljaW5nIHRoZSBmaWxlIGF0IGl0IG5ldmVyIGdpdmVzIHRoZSBsaW5rIGJhY2sgYW5kIHRoZSByZXRyeSB3b3VsZCBuZXZlciBlbmQuXG4gICAgICAgIGlmIChpc0NhbnZhc0ZpbGUobm90ZSkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHNhdmVOb3RlKGFwcCwgbm90ZSk7XG4gICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRTYWZlKGFwcCwgbm90ZSk7XG4gICAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIGlmICghY29udGVudCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmcm9udG1hdHRlciA9IHBhcnNlRnJvbnRtYXR0ZXIoY29udGVudCk7XG4gICAgICAgIGNvbnN0IGxpbmtzID0gYmFja2xpbmtzLmdldChub3RlUGF0aCk7XG4gICAgICAgIGlmICghbGlua3MpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgICAgICBsZXQgYWN0dWFsTGluazogc3RyaW5nO1xuICAgICAgICAgIGlmIChpc1JlZmVyZW5jZUNhY2hlKGxpbmspKSB7XG4gICAgICAgICAgICBhY3R1YWxMaW5rID0gY29udGVudC5zbGljZShsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgbGluay5wb3NpdGlvbi5lbmQub2Zmc2V0KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUobGluaykpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5VmFsdWUgPSBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKGZyb250bWF0dGVyLCBsaW5rLmtleSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5VmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbGlua1dpdGhPZmZzZXRzID0gdG9Gcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspO1xuICAgICAgICAgICAgYWN0dWFsTGluayA9IHByb3BlcnR5VmFsdWUuc2xpY2UobGlua1dpdGhPZmZzZXRzLnN0YXJ0T2Zmc2V0LCBsaW5rV2l0aE9mZnNldHMuZW5kT2Zmc2V0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhY3R1YWxMaW5rICE9PSBsaW5rLm9yaWdpbmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgb3BlcmF0aW9uTmFtZTogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLm1ldGFkYXRhQ2FjaGUuZ2V0QmFja2xpbmtzRm9yRmlsZVBhdGgsIHsgZmlsZVBhdGg6IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKSB9KSxcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IG51bGwsXG4gICAgcmV0cnlPcHRpb25zOiBvcHRpb25zLFxuICAgIHNob3VsZFNob3dUaW1lb3V0Tm90aWNlOiBvcHRpb25zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlID8/IHRydWVcbiAgfSk7XG5cbiAgcmV0dXJuIGJhY2tsaW5rcztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGNhY2hlZCBtZXRhZGF0YSBmb3IgYSBnaXZlbiBmaWxlIG9yIHBhdGguXG4gKlxuICogVGhpcyBpcyBOT1QgYSBwdXJlIHJlYWQ6IGJlZm9yZSBpdCByZWFkcyB0aGUgY2FjaGUsIGl0IGNhbGxzIHtAbGluayBzYXZlTm90ZX0sIHdoaWNoIHNhdmVzIGFueVxuICogb3BlbiBlZGl0b3IgdmlldyBvZiB0aGUgbm90ZSB0aGF0IGhhcyB1bnNhdmVkIGNoYW5nZXMuIFRoYXQgc2F2ZSBpcyB3aHkgdGhlIGNhY2hlIG1hdGNoZXMgd2hhdCB0aGVcbiAqIHVzZXIgc2VlcywgYW5kIHdoeSBhIGNvbW1hbmQgdGhhdCByZXdyaXRlcyB0aGUgbm90ZSBjYW4gdXNlIHRoaXMgc2FmZWx5IHdpdGhvdXQgaXRzIHJld3JpdGUgYmVpbmdcbiAqIGNsb2JiZXJlZC4gSXQgaXMgYWxzbyBhIHdyaXRlIG9uIHRoZSBub3RlLiBTbyBkbyBub3QgY2FsbCB0aGlzIGZyb20gYW4gYXV0b21hdGljIHRyaWdnZXIgKGEgdmF1bHRcbiAqIG9yIG1ldGFkYXRhIGV2ZW50LCBhIHNhdmUgb3IgcmVuZGVyIHBhdGNoLCBhIGxheW91dCBob29rKSB0aGF0IG9ubHkgZGVjaWRlcyB3aGV0aGVyIHRvIGFjdDogYVxuICogZm9yY2VkIHNhdmUgb25lIHRpY2sgYWZ0ZXIgYW5vdGhlciBwbHVnaW4gaGFzIGRpc3BhdGNoZWQgYSBjaGFuZ2UgaW50byB0aGUgZWRpdG9yIGNhbiBsZWF2ZVxuICogT2JzaWRpYW4ncyBlZGl0b3IgcmVuZGVyaW5nIHN0YWxlIHN0YXRlLiBBIHJlYWQtb25seSBwcm9iZSBvbiB0aGUgbm90ZSdzIGN1cnJlbnQgdGV4dCBzaG91bGQgdXNlXG4gKiB7QGxpbmsgcGFyc2VNZXRhZGF0YX0gb24gdGhhdCB0ZXh0IGluc3RlYWQuIEl0IG5lZWRzIG5vIHZpZXcsIG5vIGNhY2hlIGFuZCBubyBzYXZlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGVPclBhdGggLSBUaGUgZmlsZSBvciBwYXRoIHRvIHJldHJpZXZlIHRoZSBtZXRhZGF0YSBmb3IuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJzZSBvcHRpb25zIGNvbnRyb2xsaW5nIHdoaWNoIGFkZGl0aW9uYWwgbGlua3MgdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgY2FjaGVkIG1ldGFkYXRhIGZvciB0aGUgZmlsZSwgb3IgYG51bGxgIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDYWNoZVNhZmUoYXBwOiBBcHAsIGZpbGVPclBhdGg6IFBhdGhPckZpbGUsIG9wdGlvbnM6IEdldENhY2hlU2FmZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8Q2FjaGVkTWV0YWRhdGFFeCB8IG51bGw+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGVPck51bGwoeyBhcHAsIHBhdGhPckZpbGU6IGZpbGVPclBhdGggfSk7XG5cbiAgdHJ5IHtcbiAgICBpZiAoIWZpbGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBjYWNoZTogQ2FjaGVkTWV0YWRhdGEgfCBudWxsO1xuICAgIGlmIChmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIGNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBzYXZlTm90ZShhcHAsIGZpbGUpO1xuXG4gICAgICBjb25zdCBmaWxlQ2FjaGVFbnRyeSA9IGFwcC5tZXRhZGF0YUNhY2hlLmZpbGVDYWNoZVtmaWxlLnBhdGhdO1xuICAgICAgY29uc3QgaXNVcFRvRGF0ZSA9IGZpbGVDYWNoZUVudHJ5Py5tdGltZSA9PT0gZmlsZS5zdGF0Lm10aW1lXG4gICAgICAgICYmIGZpbGVDYWNoZUVudHJ5LnNpemUgPT09IGZpbGUuc3RhdC5zaXplXG4gICAgICAgICYmIE9iamVjdC5oYXNPd24oYXBwLm1ldGFkYXRhQ2FjaGUubWV0YWRhdGFDYWNoZSwgZmlsZUNhY2hlRW50cnkuaGFzaCk7XG4gICAgICBpZiAoIWlzVXBUb0RhdGUpIHtcbiAgICAgICAgYXdhaXQgYXBwLm1ldGFkYXRhQ2FjaGUuY29tcHV0ZUZpbGVNZXRhZGF0YUFzeW5jKGZpbGUpO1xuICAgICAgICBhd2FpdCBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwKTtcbiAgICAgIH1cbiAgICAgIGNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xuICAgIH1cblxuICAgIGlmIChjYWNoZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gT25seSB0aGUgYm9keS1leHRlcm5hbCBwYXJzZSBuZWVkcyB0aGUgZmlsZSBjb250ZW50OyBmcm9udG1hdHRlciBwYXJzaW5nIHVzZXMgdGhlIGNhY2hlZFxuICAgIC8vIGZyb250bWF0dGVyLCBzbyBhdm9pZCByZWFkaW5nIHRoZSBjb250ZW50IHVubGVzcyBpdCBpcyBhY3R1YWxseSBuZWVkZWQuXG4gICAgY29uc3QgY29udGVudCA9IG9wdGlvbnMuc2hvdWxkUGFyc2VFeHRlcm5hbExpbmtzID8gYXdhaXQgYXBwLnZhdWx0LmNhY2hlZFJlYWQoZmlsZSkgOiAnJztcbiAgICByZXR1cm4gdG9QYXJzZWRDYWNoZWRNZXRhZGF0YUV4KHsgY2FjaGUsIGNvbnRlbnQsIG9wdGlvbnMgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGZyb250IG1hdHRlciBmcm9tIHRoZSBtZXRhZGF0YSBjYWNoZSBzYWZlbHkuXG4gKlxuICogSXQgcmVhZHMgdGhyb3VnaCB7QGxpbmsgZ2V0Q2FjaGVTYWZlfSwgc28gaXQgc2F2ZXMgYW55IG9wZW4gZWRpdG9yIHZpZXcgb2YgdGhlIG5vdGUgdGhhdCBoYXNcbiAqIHVuc2F2ZWQgY2hhbmdlcy4gU2VlIHtAbGluayBnZXRDYWNoZVNhZmV9IGZvciB3aGVuIHRoYXQgc2F2ZSBtYXR0ZXJzIGFuZCB3aGF0IHRvIHVzZSBpbnN0ZWFkLlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tRnJvbnRtYXR0ZXIgLSBUaGUgdHlwZSBvZiBjdXN0b20gZnJvbnQgbWF0dGVyLlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gcmV0cmlldmUgdGhlIGZyb250IG1hdHRlciBmcm9tLlxuICogQHJldHVybnMgVGhlIGNvbWJpbmVkIGZyb250IG1hdHRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZyb250bWF0dGVyU2FmZTxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+KGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogUHJvbWlzZTxDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPj4ge1xuICBjb25zdCBjYWNoZSA9IGF3YWl0IGdldENhY2hlU2FmZShhcHAsIHBhdGhPckZpbGUpO1xuICByZXR1cm4gKGNhY2hlPy5mcm9udG1hdHRlciA/PyB7fSkgYXMgQ29tYmluZWRGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj47XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBzZWxlY3RlZCBsaW5rcyBmcm9tIHRoZSBwcm92aWRlZCBjYWNoZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJldHJpZXZpbmcgdGhlIGxpbmtzLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVmZXJlbmNlcyByZXByZXNlbnRpbmcgdGhlIHNlbGVjdGVkIGxpbmtzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGlua3MocGFyYW1zOiBHZXRMaW5rc1BhcmFtcyk6IFJlZmVyZW5jZVtdIHtcbiAgY29uc3Qge1xuICAgIGNhY2hlLFxuICAgIHNob3VsZEluY2x1ZGVFbWJlZHMgPSB0cnVlLFxuICAgIHNob3VsZEluY2x1ZGVFeHRlcm5hbExpbmtzID0gZmFsc2UsXG4gICAgc2hvdWxkSW5jbHVkZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyA9IGZhbHNlLFxuICAgIHNob3VsZEluY2x1ZGVGcm9udG1hdHRlckxpbmtzID0gdHJ1ZSxcbiAgICBzaG91bGRJbmNsdWRlTXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyA9IGZhbHNlLFxuICAgIHNob3VsZEluY2x1ZGVNdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcyA9IGZhbHNlLFxuICAgIHNob3VsZEluY2x1ZGVSZWZlcmVuY2VzID0gdHJ1ZVxuICB9ID0gcGFyYW1zO1xuXG4gIGxldCBsaW5rczogUmVmZXJlbmNlW10gPSBbXG4gICAgLi4uKHNob3VsZEluY2x1ZGVSZWZlcmVuY2VzID8gY2FjaGUubGlua3MgPz8gW10gOiBbXSksXG4gICAgLi4uKHNob3VsZEluY2x1ZGVFbWJlZHMgPyBjYWNoZS5lbWJlZHMgPz8gW10gOiBbXSksXG4gICAgLi4uKHNob3VsZEluY2x1ZGVGcm9udG1hdHRlckxpbmtzID8gY2FjaGUuZnJvbnRtYXR0ZXJMaW5rcyA/PyBbXSA6IFtdKVxuICBdO1xuXG4gIGNvbnN0IGZlYXR1cmVMaW5rU2VsZWN0b3JzOiBGZWF0dXJlTGlua1NlbGVjdG9yW10gPSBbXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246ICdib2R5IGV4dGVybmFsIGxpbmtzJyxcbiAgICAgIGZlYXR1cmU6IENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLkV4dGVybmFsTGlua3MsXG4gICAgICBzZWxlY3Q6IChjYWNoZUV4KSA9PiBjYWNoZUV4LmV4dGVybmFsTGlua3MsXG4gICAgICBzaG91bGRJbmNsdWRlOiBzaG91bGRJbmNsdWRlRXh0ZXJuYWxMaW5rc1xuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246ICdmcm9udG1hdHRlciBleHRlcm5hbCBsaW5rcycsXG4gICAgICBmZWF0dXJlOiBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZS5Gcm9udG1hdHRlckV4dGVybmFsTGlua3MsXG4gICAgICBzZWxlY3Q6IChjYWNoZUV4KSA9PiBjYWNoZUV4LmZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyxcbiAgICAgIHNob3VsZEluY2x1ZGU6IHNob3VsZEluY2x1ZGVGcm9udG1hdHRlckV4dGVybmFsTGlua3NcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnbXVsdGktdmFsdWUgZnJvbnRtYXR0ZXIgZXh0ZXJuYWwgbGlua3MnLFxuICAgICAgZmVhdHVyZTogQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuTXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyxcbiAgICAgIHNlbGVjdDogKGNhY2hlRXgpID0+IGNhY2hlRXgubXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyxcbiAgICAgIHNob3VsZEluY2x1ZGU6IHNob3VsZEluY2x1ZGVNdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogJ211bHRpLXZhbHVlIGZyb250bWF0dGVyIGxpbmtzJyxcbiAgICAgIGZlYXR1cmU6IENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLk11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzLFxuICAgICAgc2VsZWN0OiAoY2FjaGVFeCkgPT4gY2FjaGVFeC5tdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcyxcbiAgICAgIHNob3VsZEluY2x1ZGU6IHNob3VsZEluY2x1ZGVNdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rc1xuICAgIH1cbiAgXTtcblxuICBmb3IgKGNvbnN0IGZlYXR1cmVMaW5rU2VsZWN0b3Igb2YgZmVhdHVyZUxpbmtTZWxlY3RvcnMpIHtcbiAgICBpZiAoIWZlYXR1cmVMaW5rU2VsZWN0b3Iuc2hvdWxkSW5jbHVkZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKCFpc0NhY2hlZE1ldGFkYXRhRXgoY2FjaGUpIHx8ICFjYWNoZS5mZWF0dXJlcy5pbmNsdWRlcyhmZWF0dXJlTGlua1NlbGVjdG9yLmZlYXR1cmUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBpbmNsdWRlICR7ZmVhdHVyZUxpbmtTZWxlY3Rvci5kZXNjcmlwdGlvbn06IHRoZSBjYWNoZSB3YXMgbm90IGNvbXB1dGVkIHdpdGggdGhlICR7ZmVhdHVyZUxpbmtTZWxlY3Rvci5mZWF0dXJlfSBmZWF0dXJlLmApO1xuICAgIH1cblxuICAgIGxpbmtzLnB1c2goLi4uZW5zdXJlTm9uTnVsbGFibGUoZmVhdHVyZUxpbmtTZWxlY3Rvci5zZWxlY3QoY2FjaGUpKSk7XG4gIH1cblxuICBzb3J0UmVmZXJlbmNlcyhsaW5rcyk7XG5cbiAgLy8gQlVHOiBodHRwczovL2ZvcnVtLm9ic2lkaWFuLm1kL3QvYnVnLWR1cGxpY2F0ZWQtbGlua3MtaW4tbWV0YWRhdGFjYWNoZS1pbnNpZGUtZm9vdG5vdGVzLzg1NTUxXG4gIGxpbmtzID0gbGlua3MuZmlsdGVyKChsaW5rLCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNMaW5rID0gZW5zdXJlTm9uTnVsbGFibGUobGlua3NbaW5kZXggLSAxXSk7XG5cbiAgICBpZiAoaXNSZWZlcmVuY2VDYWNoZShsaW5rKSAmJiBpc1JlZmVyZW5jZUNhY2hlKHByZXZpb3VzTGluaykpIHtcbiAgICAgIHJldHVybiBsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCAhPT0gcHJldmlvdXNMaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAoaXNGcm9udG1hdHRlckxpbmtDYWNoZShsaW5rKSAmJiBpc0Zyb250bWF0dGVyTGlua0NhY2hlKHByZXZpb3VzTGluaykpIHtcbiAgICAgIGNvbnN0IGxpbmtTdGFydE9mZnNldCA9IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhsaW5rKSA/IGxpbmsuc3RhcnRPZmZzZXQgOiAwO1xuICAgICAgY29uc3QgcHJldmlvdXNMaW5rU3RhcnRPZmZzZXQgPSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocHJldmlvdXNMaW5rKSA/IHByZXZpb3VzTGluay5zdGFydE9mZnNldCA6IDA7XG4gICAgICByZXR1cm4gbGluay5rZXkgIT09IHByZXZpb3VzTGluay5rZXkgfHwgaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspICE9PSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocHJldmlvdXNMaW5rKVxuICAgICAgICB8fCBsaW5rU3RhcnRPZmZzZXQgIT09IHByZXZpb3VzTGlua1N0YXJ0T2Zmc2V0O1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gbGlua3M7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgYmFja2xpbmsgY2FjaGUgcGx1Z2luIGlzIGN1cnJlbnRseSBsb2FkZWQgLSBlaXRoZXIgYEFkdmFuY2VkIE1ldGFkYXRhIENhY2hlYCAoe0BsaW5rIEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX1BMVUdJTl9JRH0pIG9yIGl0cyByZXRpcmVkIHByZWRlY2Vzc29yIGBCYWNrbGluayBDYWNoZWAgKHtAbGluayBCQUNLTElOS19DQUNIRV9QTFVHSU5fSUR9KS5cbiAqXG4gKiBTdWNoIGEgcGx1Z2luIGtlZXBzIGEgZHJhaW4tb24tcmVhZCBiYWNrbGluayBpbmRleCBhbmQgaW5kZXhlcyBjYW52YXMgbWV0YWRhdGEsIHNvIGEgY2FsbGVyIHRoYXQgY29tcGVuc2F0ZXMgZm9yIE9ic2lkaWFuJ3Mgb3duIGdhcHMgY2FuIHN0YW5kIGRvd24gd2hpbGUgb25lIGlzIHByZXNlbnQuIEJvdGggaWRzIGFyZSByZWNvZ25pemVkOyB7QGxpbmsgQkFDS0xJTktfQ0FDSEVfUExVR0lOX0lEfSByZWNvcmRzIHdoZW4gdGhlIHJldGlyZWQgb25lIG1heSBiZSBkcm9wcGVkLlxuICpcbiAqIFRoaXMgcmVhZHMgdGhlIExPQURFRCBwbHVnaW4gaW5zdGFuY2UgcmF0aGVyIHRoYW4gYGFwcC5wbHVnaW5zLmVuYWJsZWRQbHVnaW5zYCwgZGVsaWJlcmF0ZWx5OiB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgcGx1Z2luJ3MgcGF0Y2hlcyBhcmUgaW4gcGxhY2UgcmlnaHQgbm93LCBhbmQgdGhleSBhcmUgbm90IHVudGlsIGl0IGhhcyBsb2FkZWQuIFBsdWdpbnMgbG9hZCBpbiBhbiB1bnNwZWNpZmllZCBvcmRlciwgc28gY2FsbCB0aGlzIGZyb20gYSB1c2VyLWRyaXZlbiBwYXRoIHJhdGhlciB0aGFuIGZyb20gcGx1Z2luIGxvYWQgLSBzZWUgcnVsZSBMMjUgaW4gYEFHRU5UUy5tZGAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYSBiYWNrbGluayBjYWNoZSBwbHVnaW4gaXMgbG9hZGVkLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0JhY2tsaW5rQ2FjaGVQbHVnaW4oYXBwOiBBcHApOiBib29sZWFuIHtcbiAgcmV0dXJuIGFwcC5wbHVnaW5zLmdldFBsdWdpbihBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9QTFVHSU5fSUQpICE9PSBudWxsIHx8IGFwcC5wbHVnaW5zLmdldFBsdWdpbihCQUNLTElOS19DQUNIRV9QTFVHSU5fSUQpICE9PSBudWxsO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGNhY2hlIGlzIGEge0BsaW5rIENhY2hlZE1ldGFkYXRhRXh9IChpLmUuIGl0IHdhcyBjb21wdXRlZCB3aXRoIGV4dGVybmFsLWxpbmtcbiAqIHBhcnNpbmcgZW5hYmxlZCkuXG4gKlxuICogQHBhcmFtIGNhY2hlIC0gVGhlIGNhY2hlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBjYWNoZSBpcyBhIHtAbGluayBDYWNoZWRNZXRhZGF0YUV4fSwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhY2hlZE1ldGFkYXRhRXgoY2FjaGU6IENhY2hlZE1ldGFkYXRhKTogY2FjaGUgaXMgQ2FjaGVkTWV0YWRhdGFFeCB7XG4gIHJldHVybiAnZmVhdHVyZXMnIGluIGNhY2hlO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgbWV0YWRhdGEgZm9yIGEgZ2l2ZW4gc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtICRzdHJpbmcgLSBUaGUgc3RyaW5nIHRvIHBhcnNlIHRoZSBtZXRhZGF0YSBmb3IuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJzZSBvcHRpb25zIGNvbnRyb2xsaW5nIHdoaWNoIGFkZGl0aW9uYWwgbGlua3MgdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIG1ldGFkYXRhLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VNZXRhZGF0YShhcHA6IEFwcCwgJHN0cmluZzogc3RyaW5nLCBvcHRpb25zOiBQYXJzZU1ldGFkYXRhT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxDYWNoZWRNZXRhZGF0YUV4PiB7XG4gIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgY29uc3QgYnVmZmVyID0gZW5jb2Rlci5lbmNvZGUoJHN0cmluZykuYnVmZmVyO1xuICBjb25zdCBjYWNoZSA9IGF3YWl0IGFwcC5tZXRhZGF0YUNhY2hlLmNvbXB1dGVNZXRhZGF0YUFzeW5jKGJ1ZmZlcikgPz8ge307XG4gIHJldHVybiB0b1BhcnNlZENhY2hlZE1ldGFkYXRhRXgoeyBjYWNoZSwgY29udGVudDogJHN0cmluZywgb3B0aW9ucyB9KTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGZpbGUgY2FjaGUgZm9yIGEgbm9uLWV4aXN0aW5nIGZpbGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZWdpc3RlcmluZyB0aGUgZmlsZSBjYWNoZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIERpc3Bvc2FibGV9IHRoYXQgdW5yZWdpc3RlcnMgdGhlIGZpbGUgY2FjaGUgd2hlbiBkaXNwb3NlZCwgZm9yIHVzZSB3aXRoIGB1c2luZ2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckZpbGVDYWNoZUZvck5vbkV4aXN0aW5nRmlsZShwYXJhbXM6IFJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlUGFyYW1zKTogRGlzcG9zYWJsZSB7XG4gIGNvbnN0IHsgYXBwLCBjYWNoZSwgcGF0aE9yRmlsZSB9ID0gcGFyYW1zO1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZSh7IGFwcCwgcGF0aE9yRmlsZSwgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nOiB0cnVlIH0pO1xuICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmlsZSBpcyBleGlzdGluZycpO1xuICB9XG5cbiAgYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlW2ZpbGUucGF0aF0gPSB7XG4gICAgaGFzaDogZmlsZS5wYXRoLFxuICAgIG10aW1lOiAwLFxuICAgIHNpemU6IDBcbiAgfTtcblxuICBhcHAubWV0YWRhdGFDYWNoZS5tZXRhZGF0YUNhY2hlW2ZpbGUucGF0aF0gPSBjYWNoZTtcblxuICByZXR1cm4gbmV3IENhbGxiYWNrRGlzcG9zYWJsZSh7XG4gICAgY2FsbGJhY2s6ICgpOiB2b2lkID0+IHtcbiAgICAgIHVucmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUoYXBwLCBmaWxlKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBmaWxlcyBpbiB0aGUgT2JzaWRpYW4gYXBwLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGVzIC0gVGhlIGZpbGVzIHRvIHJlZ2lzdGVyLlxuICogQHJldHVybnMgQSB7QGxpbmsgRGlzcG9zYWJsZX0gdGhhdCB1bnJlZ2lzdGVycyB0aGUgZmlsZXMgd2hlbiBkaXNwb3NlZCwgZm9yIHVzZSB3aXRoIGB1c2luZ2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckZpbGVzKGFwcDogQXBwLCBmaWxlczogVEFic3RyYWN0RmlsZVtdKTogRGlzcG9zYWJsZSB7XG4gIGNvbnN0IHJlZ2lzdGVyZWRGaWxlc0NvdW50cyA9IGdldFJlZ2lzdGVyZWRGaWxlc0NvdW50cygpO1xuXG4gIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICB3aGlsZSAoZmlsZS5kZWxldGVkKSB7XG4gICAgICBsZXQgY291bnQgPSByZWdpc3RlcmVkRmlsZXNDb3VudHMuZ2V0KGZpbGUucGF0aCkgPz8gMDtcbiAgICAgIGNvdW50Kys7XG4gICAgICByZWdpc3RlcmVkRmlsZXNDb3VudHMuc2V0KGZpbGUucGF0aCwgY291bnQpO1xuXG4gICAgICBhcHAudmF1bHQuZmlsZU1hcFtmaWxlLnBhdGhdID0gZmlsZTtcblxuICAgICAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgICAgICBhcHAubWV0YWRhdGFDYWNoZS51bmlxdWVGaWxlTG9va3VwLmFkZChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKSwgZmlsZSk7XG4gICAgICB9XG5cbiAgICAgIGZpbGUgPSBnZXRGb2xkZXIoe1xuICAgICAgICBhcHAsXG4gICAgICAgIHBhdGhPckZvbGRlcjogcGFyZW50Rm9sZGVyUGF0aChmaWxlLnBhdGgpLFxuICAgICAgICBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgQ2FsbGJhY2tEaXNwb3NhYmxlKHtcbiAgICBjYWxsYmFjazogKCk6IHZvaWQgPT4ge1xuICAgICAgdW5yZWdpc3RlckZpbGVzKGFwcCwgZmlsZXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogVW5yZWdpc3RlcnMgdGhlIGZpbGUgY2FjaGUgZm9yIGEgbm9uLWV4aXN0aW5nIGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gdW5yZWdpc3RlciB0aGUgZmlsZSBjYWNoZSBmb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogdm9pZCB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKHsgYXBwLCBwYXRoT3JGaWxlLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWUgfSk7XG4gIGlmICghZmlsZS5kZWxldGVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlIGlzIGV4aXN0aW5nJyk7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZSAtLSBXZSBoYXZlIG5vIG90aGVyIHdheSB0byBkZWxldGUgdGhlIHByb3BlcnR5LlxuICBkZWxldGUgYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlW2ZpbGUucGF0aF07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGUgLS0gV2UgaGF2ZSBubyBvdGhlciB3YXkgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eS5cbiAgZGVsZXRlIGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbZmlsZS5wYXRoXTtcbn1cblxuLyoqXG4gKiBVbnJlZ2lzdGVycyBmaWxlcyBmcm9tIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZXMgLSBUaGUgZmlsZXMgdG8gdW5yZWdpc3Rlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVucmVnaXN0ZXJGaWxlcyhhcHA6IEFwcCwgZmlsZXM6IFRBYnN0cmFjdEZpbGVbXSk6IHZvaWQge1xuICBjb25zdCByZWdpc3RlcmVkRmlsZXNDb3VudHMgPSBnZXRSZWdpc3RlcmVkRmlsZXNDb3VudHMoKTtcblxuICBmb3IgKGxldCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgd2hpbGUgKGZpbGUuZGVsZXRlZCkge1xuICAgICAgbGV0IGNvdW50ID0gcmVnaXN0ZXJlZEZpbGVzQ291bnRzLmdldChmaWxlLnBhdGgpID8/IDE7XG4gICAgICBjb3VudC0tO1xuICAgICAgcmVnaXN0ZXJlZEZpbGVzQ291bnRzLnNldChmaWxlLnBhdGgsIGNvdW50KTtcbiAgICAgIGlmIChjb3VudCA9PT0gMCkge1xuICAgICAgICByZWdpc3RlcmVkRmlsZXNDb3VudHMuZGVsZXRlKGZpbGUucGF0aCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGUgLS0gV2UgaGF2ZSBubyBvdGhlciB3YXkgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eS5cbiAgICAgICAgZGVsZXRlIGFwcC52YXVsdC5maWxlTWFwW2ZpbGUucGF0aF07XG5cbiAgICAgICAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgICAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLnVuaXF1ZUZpbGVMb29rdXAucmVtb3ZlKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLCBmaWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmaWxlID0gZ2V0Rm9sZGVyKHtcbiAgICAgICAgYXBwLFxuICAgICAgICBwYXRoT3JGb2xkZXI6IHBhcmVudEZvbGRlclBhdGgoZmlsZS5wYXRoKSxcbiAgICAgICAgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZEFkdmFuY2VkTWV0YWRhdGFDYWNoZUJhY2tsaW5rc0FwaSgpOiBBZHZhbmNlZE1ldGFkYXRhQ2FjaGVCYWNrbGlua3NBcGkgfCBudWxsIHtcbiAgcmV0dXJuIGZpbmRQbHVnaW5BcGk8QWR2YW5jZWRNZXRhZGF0YUNhY2hlQmFja2xpbmtzQXBpPih7XG4gICAgYXBpVmVyc2lvblJhbmdlOiBBRFZBTkNFRF9NRVRBREFUQV9DQUNIRV9CQUNLTElOS1NfQVBJX1ZFUlNJT05fUkFOR0UsXG4gICAgY29udHJhY3Q6IEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX0JBQ0tMSU5LU19BUElfQ09OVFJBQ1QsXG4gICAgcGx1Z2luSWQ6IEFEVkFOQ0VEX01FVEFEQVRBX0NBQ0hFX1BMVUdJTl9JRFxuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVnaXN0ZXJlZEZpbGVzQ291bnRzKCk6IE1hcDxzdHJpbmcsIG51bWJlcj4ge1xuICByZXR1cm4gZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlKCdyZWdpc3RlcmVkRmlsZXNDb3VudHMnLCBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpKS52YWx1ZTtcbn1cblxuLyoqXG4gKiBTdHJ1Y3R1cmFsbHkgcmVjb2duaXplcyB0aGUgYmFja2xpbmtzIGRpY3Rpb25hcnkgYW5vdGhlciBwbHVnaW4ncyBjb3B5IGJ1aWx0LCBvciBgbnVsbGAuIFRoZSBjbGFzcyBpdCB3YXMgYnVpbHQgZnJvbSBsaXZlcyBpbiB0aGF0IGNvcHksIHNvIGBpbnN0YW5jZW9mYCBjYW5ub3QgYmUgdXNlZCAocnVsZSBMOSBpbiBgQUdFTlRTLm1kYCkuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYG51bGxgIG9yIHJlYWRzIGFzIGEgYmFja2xpbmtzIGRpY3Rpb25hcnkuXG4gKi9cbmZ1bmN0aW9uIGlzTnVsbGFibGVCYWNrbGlua3NEaWN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4gfCBudWxsIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsXG4gICAgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICYmIFJlZmxlY3QuZ2V0KHZhbHVlLCAnZGF0YScpIGluc3RhbmNlb2YgTWFwXG4gICAgICAmJiB0eXBlb2YgUmVmbGVjdC5nZXQodmFsdWUsICdnZXQnKSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgJiYgdHlwZW9mIFJlZmxlY3QuZ2V0KHZhbHVlLCAna2V5cycpID09PSAnZnVuY3Rpb24nKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VFeHRlcm5hbEJvZHlMaW5rcyhjb250ZW50OiBzdHJpbmcsIGNhY2hlOiBDYWNoZWRNZXRhZGF0YSk6IFBhcnNlTGlua1JlZmVyZW5jZVtdIHtcbiAgY29uc3QgZnJvbnRtYXR0ZXJFbmRPZmZzZXQgPSBjYWNoZS5mcm9udG1hdHRlclBvc2l0aW9uPy5lbmQub2Zmc2V0ID8/IDA7XG4gIHJldHVybiBwYXJzZUxpbmtzKGNvbnRlbnQpXG4gICAgLmZpbHRlcigocGFyc2VMaW5rUmVzdWx0KSA9PiBwYXJzZUxpbmtSZXN1bHQuaXNFeHRlcm5hbCAmJiBwYXJzZUxpbmtSZXN1bHQuc3RhcnRPZmZzZXQgPj0gZnJvbnRtYXR0ZXJFbmRPZmZzZXQpXG4gICAgLm1hcCgocGFyc2VMaW5rUmVzdWx0KSA9PiB0b1BhcnNlTGlua1JlZmVyZW5jZSh7IGNvbnRlbnQsIHBhcnNlTGlua1Jlc3VsdCB9KSk7XG59XG5cbmZ1bmN0aW9uIHRvUGFyc2VkQ2FjaGVkTWV0YWRhdGFFeChwYXJhbXM6IFRvUGFyc2VkQ2FjaGVkTWV0YWRhdGFFeFBhcmFtcyk6IENhY2hlZE1ldGFkYXRhRXgge1xuICBjb25zdCB7IGNhY2hlLCBjb250ZW50LCBvcHRpb25zIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGZlYXR1cmVzOiBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZVtdID0gW0NhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLk5hdGl2ZV07XG4gIGNvbnN0IHJlc3VsdDogQ2FjaGVkTWV0YWRhdGFFeCA9IHsgLi4uY2FjaGUsIGZlYXR1cmVzIH07XG5cbiAgaWYgKG9wdGlvbnMuc2hvdWxkUGFyc2VFeHRlcm5hbExpbmtzKSB7XG4gICAgcmVzdWx0LmV4dGVybmFsTGlua3MgPSBwYXJzZUV4dGVybmFsQm9keUxpbmtzKGNvbnRlbnQsIGNhY2hlKTtcbiAgICBmZWF0dXJlcy5wdXNoKENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLkV4dGVybmFsTGlua3MpO1xuICB9XG5cbiAgaWYgKFxuICAgIG9wdGlvbnMuc2hvdWxkUGFyc2VGcm9udG1hdHRlckV4dGVybmFsTGlua3NcbiAgICB8fCBvcHRpb25zLnNob3VsZFBhcnNlTXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rc1xuICAgIHx8IG9wdGlvbnMuc2hvdWxkUGFyc2VNdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rc1xuICApIHtcbiAgICBjb25zdCBmcm9udG1hdHRlckxpbmtzID0gcGFyc2VGcm9udG1hdHRlckxpbmtzKGNhY2hlLmZyb250bWF0dGVyKTtcblxuICAgIGlmIChvcHRpb25zLnNob3VsZFBhcnNlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzKSB7XG4gICAgICByZXN1bHQuZnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzID0gZnJvbnRtYXR0ZXJMaW5rcy5mcm9udG1hdHRlckV4dGVybmFsTGlua3M7XG4gICAgICBmZWF0dXJlcy5wdXNoKENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLkZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2hvdWxkUGFyc2VNdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzKSB7XG4gICAgICByZXN1bHQubXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyA9IGZyb250bWF0dGVyTGlua3MubXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcztcbiAgICAgIGZlYXR1cmVzLnB1c2goQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuTXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2hvdWxkUGFyc2VNdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcykge1xuICAgICAgcmVzdWx0Lm11bHRpVmFsdWVGcm9udG1hdHRlckxpbmtzID0gZnJvbnRtYXR0ZXJMaW5rcy5tdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcztcbiAgICAgIGZlYXR1cmVzLnB1c2goQ2FjaGVkTWV0YWRhdGFFeEZlYXR1cmUuTXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3MpO1xuICAgIH1c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
|
|
@@ -203,17 +203,17 @@ export interface RegisterFileCacheForNonExistingFileParams {
|
|
|
203
203
|
readonly pathOrFile: PathOrFile;
|
|
204
204
|
}
|
|
205
205
|
/**
|
|
206
|
-
* The plugin id of the Advanced Metadata Cache plugin, the successor to Backlink Cache
|
|
206
|
+
* The plugin id of the `Advanced Metadata Cache` plugin, the successor to `Backlink Cache`.
|
|
207
207
|
*
|
|
208
208
|
* Used by {@link hasBacklinkCachePlugin}, and as the provider id under which {@link getBacklinksForFileOrPath} and {@link getBacklinksForFileSafe} look up the plugin's published API.
|
|
209
209
|
*/
|
|
210
210
|
export declare const ADVANCED_METADATA_CACHE_PLUGIN_ID = "advanced-metadata-cache";
|
|
211
211
|
/**
|
|
212
|
-
* The plugin id of the retired Backlink Cache plugin, superseded by {@link ADVANCED_METADATA_CACHE_PLUGIN_ID}.
|
|
212
|
+
* The plugin id of the retired `Backlink Cache` plugin, superseded by {@link ADVANCED_METADATA_CACHE_PLUGIN_ID}.
|
|
213
213
|
*
|
|
214
214
|
* Still recognized by {@link hasBacklinkCachePlugin}, deliberately. Removing a plugin from the community registry blocks new installs; it uninstalls nothing, so every existing user keeps it until they migrate by hand.
|
|
215
215
|
*
|
|
216
|
-
* It may be dropped when all three of the following hold, and not before: Advanced Metadata Cache is listed in the community registry, so migrating is possible at all; the final Backlink Cache handover release has been out for at least twelve months; and this library is cutting a major release anyway, because dropping the id silently un-gates canvas link handling for anyone who has not migrated. There is no cost pressure to drop it earlier - recognizing a dead id is one string comparison on a path that already reads a plugin registry.
|
|
216
|
+
* It may be dropped when all three of the following hold, and not before: `Advanced Metadata Cache` is listed in the community registry, so migrating is possible at all; the final `Backlink Cache` handover release has been out for at least twelve months; and this library is cutting a major release anyway, because dropping the id silently un-gates canvas link handling for anyone who has not migrated. There is no cost pressure to drop it earlier - recognizing a dead id is one string comparison on a path that already reads a plugin registry.
|
|
217
217
|
*/
|
|
218
218
|
export declare const BACKLINK_CACHE_PLUGIN_ID = "backlink-cache";
|
|
219
219
|
/**
|
|
@@ -227,7 +227,7 @@ export declare function ensureMetadataCacheReady(app: App): Promise<void>;
|
|
|
227
227
|
* Retrieves the backlinks for a file or path.
|
|
228
228
|
* NOTE: The file may be non-existent.
|
|
229
229
|
*
|
|
230
|
-
* When Advanced Metadata Cache publishes its backlinks API and its `Backlinks` module is on, its cache answers.
|
|
230
|
+
* When `Advanced Metadata Cache` publishes its backlinks API and its `Backlinks` module is on, its cache answers.
|
|
231
231
|
* Otherwise the answer comes from a backlink index whose cost is proportional to the candidate notes rather than
|
|
232
232
|
* to every reference in the vault, and which gives the same references Obsidian's own `getBacklinksForFile` gives.
|
|
233
233
|
*
|
|
@@ -239,7 +239,7 @@ export declare function getBacklinksForFileOrPath(app: App, pathOrFile: PathOrFi
|
|
|
239
239
|
/**
|
|
240
240
|
* Retrieves the backlinks for a file safely.
|
|
241
241
|
*
|
|
242
|
-
* When Advanced Metadata Cache publishes its backlinks API and its `Backlinks` module is on, that API answers.
|
|
242
|
+
* When `Advanced Metadata Cache` publishes its backlinks API and its `Backlinks` module is on, that API answers.
|
|
243
243
|
*
|
|
244
244
|
* Otherwise this is NOT a pure read. It verifies
|
|
245
245
|
* each backlink against the note's current text, and to do that it calls {@link saveNote} on every
|
|
@@ -290,7 +290,7 @@ export declare function getFrontmatterSafe<CustomFrontmatter = unknown>(app: App
|
|
|
290
290
|
*/
|
|
291
291
|
export declare function getLinks(params: GetLinksParams): Reference[];
|
|
292
292
|
/**
|
|
293
|
-
* Determines whether a backlink cache plugin is currently loaded - either Advanced Metadata Cache ({@link ADVANCED_METADATA_CACHE_PLUGIN_ID}) or its retired predecessor Backlink Cache ({@link BACKLINK_CACHE_PLUGIN_ID}).
|
|
293
|
+
* Determines whether a backlink cache plugin is currently loaded - either `Advanced Metadata Cache` ({@link ADVANCED_METADATA_CACHE_PLUGIN_ID}) or its retired predecessor `Backlink Cache` ({@link BACKLINK_CACHE_PLUGIN_ID}).
|
|
294
294
|
*
|
|
295
295
|
* Such a plugin keeps a drain-on-read backlink index and indexes canvas metadata, so a caller that compensates for Obsidian's own gaps can stand down while one is present. Both ids are recognized; {@link BACKLINK_CACHE_PLUGIN_ID} records when the retired one may be dropped.
|
|
296
296
|
*
|
|
@@ -231,4 +231,4 @@ function checkEntryMatches(entry, params) {
|
|
|
231
231
|
findNotePriorityRank,
|
|
232
232
|
pickHighestPriorityNotePath
|
|
233
233
|
});
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25vdGUtcHJpb3JpdHkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBEZWNpZGVzIHdoaWNoIG9mIHNldmVyYWwgbm90ZXMgcmVmZXJlbmNpbmcgdGhlIHNhbWUgYXR0YWNobWVudCBvd25zIGl0LlxuICpcbiAqIEFuIGF0dGFjaG1lbnQgcmVmZXJlbmNlZCBmcm9tIG1vcmUgdGhhbiBvbmUgbm90ZSBoYXMgbm8gc2luZ2xlIGNvcnJlY3QgaG9tZSwgc28gY29sbGVjdGluZyBpdCBmYWxsc1xuICogYmFjayB0byB3aGF0ZXZlciBgY29sbGVjdEF0dGFjaG1lbnRVc2VkQnlNdWx0aXBsZU5vdGVzTW9kZWAgc2F5cyBcdTIwMTQgc2tpcCwgY29weSwgY2FuY2VsLCBvciBhc2suIEFcbiAqIHByaW9yaXR5IGxpc3QgbGV0cyB0aGUgdXNlciBhbnN3ZXIgdGhlIHF1ZXN0aW9uIG9uY2UgaW5zdGVhZDogcHV0IGAubWRgIGFib3ZlIGAuZXhjYWxpZHJhd2AgYW5kIGFuXG4gKiBpbWFnZSBzaGFyZWQgYnkgYm90aCBsYW5kcyBpbiB0aGUgbWFya2Rvd24gbm90ZSdzIGZvbGRlci5cbiAqXG4gKiBBIHRpZSBpcyBkZWxpYmVyYXRlbHkgTk9UIHJlc29sdmVkIGhlcmUuIFR3byBub3RlcyBvZiBlcXVhbCBwcmlvcml0eSBpcyBleGFjdGx5IHRoZSBhbWJpZ3VpdHkgdGhlXG4gKiBleGlzdGluZyBtb2RlIHNldHRpbmcgYWxyZWFkeSBleGlzdHMgdG8gaGFuZGxlLCBhbmQgaW52ZW50aW5nIGEgc2Vjb25kLCBzaWxlbnQgcnVsZSBmb3IgaXQgd291bGRcbiAqIG1vdmUgYSBmaWxlIHRoZSB1c2VyIG5ldmVyIG5hbWVkLlxuICpcbiAqIFRoZSB0aWUgaXMgYWxzbyB0aGUgd2hvbGUgb2Ygd2hhdCBnZXRzIFJFUE9SVEVELiBBIG5vdGUgdGhlIGxpc3QgcmFua2VkIGJlbG93IHRoZSBiZXN0IHJhbmsgY2Fubm90XG4gKiByZXNvbHZlIHRoZSBhbWJpZ3VpdHksIHNvIGxpc3RpbmcgaXQgb25seSBhZGRzIG5vaXNlIFx1MjAxNCBhbmQgd29yc2UgaW4gYSBwaWNrZXIsIHdoZXJlIG9mZmVyaW5nIGl0XG4gKiBpbnZpdGVzIGFuIGFuc3dlciB0aGUgcHJpb3JpdHkgbGlzdCBpdHNlbGYgd291bGQgbm90IGhhdmUgZ2l2ZW4uIFRoYXQgaXMgd2h5XG4gKiB7QGxpbmsgZmlsdGVySGlnaGVzdFByaW9yaXR5Tm90ZVBhdGhzfSBleGlzdHMgYWxvbmdzaWRlIHRoZSB0d28gZnVuY3Rpb25zIHRoYXQgZGVjaWRlLlxuICovXG5cbmltcG9ydCB7IGlzVmFsaWRSZWdFeHAgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcmVnLWV4cCc7XG5cbmltcG9ydCB7XG4gIGNoZWNrUHJvcGVydHlFbnRyeU1hdGNoZXMsXG4gIGlzUHJvcGVydHlFbnRyeVxufSBmcm9tICcuL3Byb3BlcnR5LWVudHJ5LnRzJztcblxuY29uc3QgUkVHX0VYUF9ERUxJTUlURVIgPSAnLyc7XG5jb25zdCBFWFRFTlNJT05fUFJFRklYID0gJy4nO1xuXG4vKipcbiAqIFdoeSB0aGUgcHJpb3JpdHkgbGlzdCBkaWQgbm90IHNldHRsZSB3aGljaCBub3RlIG93bnMgYW4gYXR0YWNobWVudC5cbiAqXG4gKiBUaGUgdGhyZWUgdmFsdWVzIGFyZSBleGFjdGx5IHRoZSB0aHJlZSB3YXlzIHtAbGluayBwaWNrSGlnaGVzdFByaW9yaXR5Tm90ZVBhdGh9IChwbHVzIGl0cyBlbXB0eS1saXN0XG4gKiBndWFyZCkgY2FuIGZhaWwgdG8gbmFtZSBhIHdpbm5lciwgc28gYSBjYWxsZXIgY2FuIHRlbGwgdGhlIHVzZXIgdGhlIHJlYWwgcmVhc29uIGluc3RlYWQgb2Ygb25seVxuICogcmVwb3J0aW5nIHRoYXQgdGhlIGF0dGFjaG1lbnQgaXMgcmVmZXJlbmNlZCBieSBzZXZlcmFsIG5vdGVzLlxuICovXG5leHBvcnQgZW51bSBOb1ByaW9yaXR5V2lubmVyUmVhc29uIHtcbiAgLyoqXG4gICAqIFRoZSBwcmlvcml0eSBsaXN0IGlzIGVtcHR5IFx1MjAxNCBpdHMgZGVmYXVsdC4gTm90aGluZyB3YXMgY29uZmlndXJlZCB0byBkZWNpZGUgYmV0d2VlbiB0aGUgbm90ZXMuXG4gICAqL1xuICBFbXB0eUxpc3QgPSAnRW1wdHlMaXN0JyxcblxuICAvKipcbiAgICogVGhlIGxpc3QgaGFzIGVudHJpZXMsIGJ1dCBub25lIG9mIHRoZSByZWZlcmVuY2luZyBub3RlcyBtYXRjaGVzIGFueSBvZiB0aGVtLlxuICAgKi9cbiAgTm9NYXRjaCA9ICdOb01hdGNoJyxcblxuICAvKipcbiAgICogU2V2ZXJhbCByZWZlcmVuY2luZyBub3RlcyB0aWUgZm9yIHRoZSBiZXN0IHJhbmssIHNvIHRoZSBsaXN0IG5hbWVzIG5vIHNpbmdsZSBvd25lci5cbiAgICovXG4gIFRpZSA9ICdUaWUnXG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZpbHRlckhpZ2hlc3RQcmlvcml0eU5vdGVQYXRoc30uXG4gKlxuICogVGhlIHNhbWUgcXVlc3Rpb24gYXMge0BsaW5rIHBpY2tIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aH0gYXNrcywgc28gZGVsaWJlcmF0ZWx5IHRoZSBzYW1lIHBhcmFtZXRlcnM6XG4gKiB0aGUgdHdvIG11c3QgYmUgYW5zd2VyZWQgZnJvbSBpZGVudGljYWwgaW5wdXRzIG9yIHRoZXkgY291bGQgZGlzYWdyZWUuXG4gKi9cbmV4cG9ydCB0eXBlIEZpbHRlckhpZ2hlc3RQcmlvcml0eU5vdGVQYXRoc1BhcmFtcyA9IFBpY2tIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aFBhcmFtcztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZmluZE5vUHJpb3JpdHlXaW5uZXJSZWFzb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbmROb1ByaW9yaXR5V2lubmVyUmVhc29uUGFyYW1zIGV4dGVuZHMgUGlja0hpZ2hlc3RQcmlvcml0eU5vdGVQYXRoUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwcmlvcml0eSBsaXN0LCBoaWdoZXN0IHByaW9yaXR5IGZpcnN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cmllczogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZpbmROb3RlUHJpb3JpdHlSYW5rfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaW5kTm90ZVByaW9yaXR5UmFua1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgcHJpb3JpdHkgbGlzdCwgaGlnaGVzdCBwcmlvcml0eSBmaXJzdC5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbm90ZSdzIGZyb250bWF0dGVyLCBvciBgbnVsbGAgd2hlbiBpdCBoYXMgbm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGZyb250bWF0dGVyOiBudWxsIHwgUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuXG4gIC8qKlxuICAgKiBUaGUgdmF1bHQtcmVsYXRpdmUgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHBpY2tIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlja0hpZ2hlc3RQcmlvcml0eU5vdGVQYXRoUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSB2YXVsdC1yZWxhdGl2ZSBwYXRocyBvZiB0aGUgbm90ZXMgcmVmZXJlbmNpbmcgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpb3JpdHkgcmFuayBvZiBhIG5vdGUuIExvd2VyIHdpbnM7IHtAbGluayBOT19QUklPUklUWV9NQVRDSH0gbWVhbnMgdGhlIG5vdGUgbWF0Y2hlZCBub3RoaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gbm90ZVBhdGggLSBUaGUgdmF1bHQtcmVsYXRpdmUgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICogQHJldHVybnMgVGhlIHJhbmsuXG4gICAqL1xuICByZWFkb25seSByYW5rOiAobm90ZVBhdGg6IHN0cmluZykgPT4gbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoZSByYW5rIG9mIGEgbm90ZSB0aGF0IG1hdGNoZXMgbm8gZW50cnkgaW4gdGhlIHByaW9yaXR5IGxpc3QuIEhpZ2hlciB0aGFuIGFueSByZWFsIHJhbmssIHNvIGEgbm90ZVxuICogdGhhdCBtYXRjaGVzIG5vdGhpbmcgYWx3YXlzIGxvc2VzIHRvIG9uZSB0aGF0IG1hdGNoZXMgc29tZXRoaW5nLlxuICovXG5leHBvcnQgY29uc3QgTk9fUFJJT1JJVFlfTUFUQ0ggPSBJbmZpbml0eTtcblxuLyoqXG4gKiBOYXJyb3dzIHRoZSByZWZlcmVuY2luZyBub3RlcyB0byB0aGUgb25lcyBzaGFyaW5nIHRoZSBiZXN0IHJhbmsuXG4gKlxuICogVGhvc2Ugbm90ZXMgYXJlIHRoZSB3aG9sZSBvZiB0aGUgYW1iaWd1aXR5OiBvbmUgdGhlIGxpc3QgcmFua2VkIGJlbG93IHRoZW0gY2Fubm90IHJlc29sdmUgYW55dGhpbmcsXG4gKiBzbyByZXBvcnRpbmcgaXQgb25seSBhZGRzIG5vaXNlLiBUaGlzIG1pcnJvcnMge0BsaW5rIHBpY2tIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aH0ncyBjb25kaXRpb25zXG4gKiByYXRoZXIgdGhhbiByZS1kZWNpZGluZyBhbnl0aGluZywgc28gdGhlIHR3byBjYW4gb25seSBldmVyIGFncmVlIFx1MjAxNCB3aGVuZXZlciB0aGF0IG5hbWVzIGEgd2lubmVyLFxuICogdGhpcyByZXR1cm5zIGV4YWN0bHkgdGhhdCBvbmUgbm90ZS5cbiAqXG4gKiBBIGxpc3QgdGhhdCBkZWNpZGVzIG5vdGhpbmcgYXQgYWxsIFx1MjAxNCBlbXB0eSwgb3IgbWF0Y2hpbmcgbm8gbm90ZSBcdTIwMTQgcmFua3MgZXZlcnkgbm90ZVxuICoge0BsaW5rIE5PX1BSSU9SSVRZX01BVENIfSwgc28gdGhleSBhbGwgdGllIGFuZCBldmVyeSBvbmUgb2YgdGhlbSBpcyBrZXB0LiBUaGF0IGlzIHRoZSBzYW1lIGxpc3QgdGhlXG4gKiB1c2VyIHNhdyBiZWZvcmUsIHdoaWNoIGlzIGNvcnJlY3Q6IG5vdGhpbmcgaGFzIHJ1bGVkIGFueSBvZiB0aGVtIG91dC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHJlZmVyZW5jaW5nIG5vdGVzIGFuZCBob3cgdG8gcmFuayBvbmUuXG4gKiBAcmV0dXJucyBUaGUgbm90ZXMgaG9sZGluZyB0aGUgYmVzdCByYW5rLCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGdpdmVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVySGlnaGVzdFByaW9yaXR5Tm90ZVBhdGhzKHBhcmFtczogRmlsdGVySGlnaGVzdFByaW9yaXR5Tm90ZVBhdGhzUGFyYW1zKTogc3RyaW5nW10ge1xuICAvLyBSYW5raW5nIGNhbiBoaXQgdGhlIHZhdWx0IGFuZCB0aGUgbWV0YWRhdGEgY2FjaGUsIHNvIGVhY2ggbm90ZSBpcyByYW5rZWQgb25jZSBhbmQgY2FycmllZC5cbiAgY29uc3QgcmFua2VkTm90ZVBhdGhzID0gcGFyYW1zLm5vdGVQYXRocy5tYXAoKG5vdGVQYXRoKSA9PiAoe1xuICAgIG5vdGVQYXRoLFxuICAgIHJhbms6IHBhcmFtcy5yYW5rKG5vdGVQYXRoKVxuICB9KSk7XG5cbiAgbGV0IGJlc3RSYW5rID0gTk9fUFJJT1JJVFlfTUFUQ0g7XG4gIGZvciAoY29uc3QgcmFua2VkIG9mIHJhbmtlZE5vdGVQYXRocykge1xuICAgIGlmIChyYW5rZWQucmFuayA8IGJlc3RSYW5rKSB7XG4gICAgICBiZXN0UmFuayA9IHJhbmtlZC5yYW5rO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByYW5rZWROb3RlUGF0aHNcbiAgICAuZmlsdGVyKChyYW5rZWQpID0+IHJhbmtlZC5yYW5rID09PSBiZXN0UmFuaylcbiAgICAubWFwKChyYW5rZWQpID0+IHJhbmtlZC5ub3RlUGF0aCk7XG59XG5cbi8qKlxuICogRXhwbGFpbnMgd2h5IHRoZSBwcmlvcml0eSBsaXN0IG5hbWVkIG5vIG93bmVyIGZvciBhbiBhdHRhY2htZW50LlxuICpcbiAqIE9ubHkgbWVhbmluZ2Z1bCBvbmNlIHtAbGluayBwaWNrSGlnaGVzdFByaW9yaXR5Tm90ZVBhdGh9IGhhcyByZXR1cm5lZCBgbnVsbGAgKG9yIHRoZSBsaXN0IHdhcyBlbXB0eVxuICogYW5kIHdhcyBuZXZlciBjb25zdWx0ZWQpOyBpdCBtaXJyb3JzIHRoYXQgZnVuY3Rpb24ncyBvd24gY29uZGl0aW9ucyByYXRoZXIgdGhhbiByZS1kZWNpZGluZ1xuICogYW55dGhpbmcsIHNvIHRoZSB0d28gY2FuIG9ubHkgZXZlciBhZ3JlZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHByaW9yaXR5IGxpc3QsIHRoZSByZWZlcmVuY2luZyBub3RlcywgYW5kIGhvdyB0byByYW5rIG9uZS5cbiAqIEByZXR1cm5zIFdoaWNoIG9mIHRoZSB0aHJlZSB3YXlzIHRoZSBsaXN0IGZhaWxlZCB0byBzZXR0bGUgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTm9Qcmlvcml0eVdpbm5lclJlYXNvbihwYXJhbXM6IEZpbmROb1ByaW9yaXR5V2lubmVyUmVhc29uUGFyYW1zKTogTm9Qcmlvcml0eVdpbm5lclJlYXNvbiB7XG4gIGlmIChwYXJhbXMuZW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gTm9Qcmlvcml0eVdpbm5lclJlYXNvbi5FbXB0eUxpc3Q7XG4gIH1cblxuICBsZXQgYmVzdFJhbmsgPSBOT19QUklPUklUWV9NQVRDSDtcbiAgZm9yIChjb25zdCBub3RlUGF0aCBvZiBwYXJhbXMubm90ZVBhdGhzKSB7XG4gICAgY29uc3QgY3VycmVudFJhbmsgPSBwYXJhbXMucmFuayhub3RlUGF0aCk7XG4gICAgaWYgKGN1cnJlbnRSYW5rIDwgYmVzdFJhbmspIHtcbiAgICAgIGJlc3RSYW5rID0gY3VycmVudFJhbms7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJlc3RSYW5rID09PSBOT19QUklPUklUWV9NQVRDSCA/IE5vUHJpb3JpdHlXaW5uZXJSZWFzb24uTm9NYXRjaCA6IE5vUHJpb3JpdHlXaW5uZXJSZWFzb24uVGllO1xufVxuXG4vKipcbiAqIEZpbmRzIGhvdyBoaWdobHkgYSBub3RlIHJhbmtzIGluIHRoZSBwcmlvcml0eSBsaXN0LlxuICpcbiAqIEFuIGVudHJ5IG1hdGNoZXMgaW4gb25lIG9mIGZvdXIgd2F5cywgcGlja2VkIGJ5IGl0cyBzaGFwZSBzbyB0aGF0IG9uZSBsaXN0IGNhbiBleHByZXNzIGFsbCBvZiB0aGVtOlxuICpcbiAqIC0gYHByb3BlcnR5Om5hbWVgIFx1MjAxNCB0aGUgbm90ZSdzIGZyb250bWF0dGVyIGhhcyBgbmFtZWA7IGBwcm9wZXJ0eTpuYW1lPXZhbHVlYCBhbHNvIGNvbXBhcmVzIHRoZSB2YWx1ZS5cbiAqIC0gYC9yZWd1bGFyIGV4cHJlc3Npb24vYCBcdTIwMTQgdGVzdGVkIGFnYWluc3QgdGhlIG5vdGUncyBwYXRoLlxuICogLSBgLmV4dGAgXHUyMDE0IHRoZSBub3RlJ3MgcGF0aCBlbmRzIHdpdGggaXQsIGNhc2UtaW5zZW5zaXRpdmVseS4gVGhpcyBpcyB0aGUgZm9ybSB0aGUgcmVxdWVzdCBhc2tlZCBmb3IuXG4gKiAtIGFueXRoaW5nIGVsc2UgXHUyMDE0IGEgcGF0aCBmcm9tIHRoZSB2YXVsdCByb290LCBtYXRjaGluZyB0aGUgdm9jYWJ1bGFyeSBvZiB0aGUgaW5jbHVkZSAvIGV4Y2x1ZGVcbiAqICAgcGF0aCBzZXR0aW5ncy5cbiAqXG4gKiBXaGVuIGEgbm90ZSBtYXRjaGVzIHNldmVyYWwgZW50cmllcyB0aGUgKipsb25nZXN0Kiogb25lIGRlY2lkZXMgaXRzIHJhbmssIHNvIHRoZSBtb3N0IHNwZWNpZmljXG4gKiBlbnRyeSB3aW5zIGFuZCB0aGUgb3JkZXIgb2YgdGhlIGxpc3QgaXMgbGVmdCB0byBleHByZXNzIHByaW9yaXR5LiBXaXRob3V0IHRoaXMgYW4gRXhjYWxpZHJhdyBub3RlXG4gKiBjb3VsZCBuZXZlciByYW5rIGJlbG93IGEgcGxhaW4gbWFya2Rvd24gb25lOiBgZHJhd2luZy5leGNhbGlkcmF3Lm1kYCBhbHNvIGVuZHMgd2l0aCBgLm1kYCwgc29cbiAqIGAubWRgIGFib3ZlIGAuZXhjYWxpZHJhdy5tZGAgXHUyMDE0IHRoZSB2ZXJ5IGV4YW1wbGUgdGhlIHJlcXVlc3QgaXMgYnVpbHQgb24gXHUyMDE0IHdvdWxkIHRpZSBpbnN0ZWFkIG9mXG4gKiByZXNvbHZpbmcuIEVxdWFsLWxlbmd0aCBtYXRjaGVzIGZhbGwgdG8gdGhlIGVhcmxpZXIgZW50cnkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBmaW5kaW5nIHRoZSByYW5rLlxuICogQHJldHVybnMgVGhlIGluZGV4IG9mIHRoZSBtb3N0IHNwZWNpZmljIG1hdGNoaW5nIGVudHJ5LCBvciB7QGxpbmsgTk9fUFJJT1JJVFlfTUFUQ0h9IHdoZW4gbm9uZSBtYXRjaC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmROb3RlUHJpb3JpdHlSYW5rKHBhcmFtczogRmluZE5vdGVQcmlvcml0eVJhbmtQYXJhbXMpOiBudW1iZXIge1xuICBsZXQgYmVzdFJhbmsgPSBOT19QUklPUklUWV9NQVRDSDtcbiAgbGV0IGJlc3RMZW5ndGggPSAtMTtcblxuICBmb3IgKGNvbnN0IFtpbmRleCwgZW50cnldIG9mIHBhcmFtcy5lbnRyaWVzLmVudHJpZXMoKSkge1xuICAgIC8vIEEgc2hvcnRlciBlbnRyeSBjYW4gbmV2ZXIgYmVhdCBvbmUgdGhhdCBhbHJlYWR5IG1hdGNoZWQsIHNvIGl0IGlzIG5vdCB3b3J0aCB0ZXN0aW5nLlxuICAgIGlmICgoZW50cnkubGVuZ3RoIDw9IGJlc3RMZW5ndGgpIHx8ICFjaGVja0VudHJ5TWF0Y2hlcyhlbnRyeSwgcGFyYW1zKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgYmVzdFJhbmsgPSBpbmRleDtcbiAgICBiZXN0TGVuZ3RoID0gZW50cnkubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIGJlc3RSYW5rO1xufVxuXG4vKipcbiAqIFBpY2tzIHRoZSBzaW5nbGUgaGlnaGVzdC1wcmlvcml0eSBub3RlIGFtb25nIHRob3NlIHJlZmVyZW5jaW5nIGFuIGF0dGFjaG1lbnQuXG4gKlxuICogUmV0dXJucyBgbnVsbGAgd2hlbiB0aGUgYmVzdCByYW5rIGlzIHNoYXJlZCBieSBtb3JlIHRoYW4gb25lIG5vdGUsIG9yIHdoZW4gbm8gbm90ZSBtYXRjaGVzXG4gKiBhbnl0aGluZy4gQm90aCBhcmUgdGllcywgYW5kIGEgdGllIGlzIHRoZSBjYWxsZXIncyBwcm9ibGVtOiBpdCBpcyB3aGF0IHRoZSBtdWx0aXBsZS1ub3RlcyBtb2RlXG4gKiBzZXR0aW5nIGlzIGZvci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHBpY2tpbmcgdGhlIG5vdGUuXG4gKiBAcmV0dXJucyBUaGUgd2lubmluZyBub3RlJ3MgcGF0aCwgb3IgYG51bGxgIHdoZW4gdGhlcmUgaXMgbm8gc2luZ2xlIHdpbm5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2tIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aChwYXJhbXM6IFBpY2tIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aFBhcmFtcyk6IG51bGwgfCBzdHJpbmcge1xuICBsZXQgYmVzdFJhbmsgPSBOT19QUklPUklUWV9NQVRDSDtcbiAgbGV0IGJlc3ROb3RlUGF0aDogbnVsbCB8IHN0cmluZyA9IG51bGw7XG4gIGxldCBiZXN0Q291bnQgPSAwO1xuXG4gIGZvciAoY29uc3Qgbm90ZVBhdGggb2YgcGFyYW1zLm5vdGVQYXRocykge1xuICAgIGNvbnN0IGN1cnJlbnRSYW5rID0gcGFyYW1zLnJhbmsobm90ZVBhdGgpO1xuICAgIGlmIChjdXJyZW50UmFuayA8IGJlc3RSYW5rKSB7XG4gICAgICBiZXN0UmFuayA9IGN1cnJlbnRSYW5rO1xuICAgICAgYmVzdE5vdGVQYXRoID0gbm90ZVBhdGg7XG4gICAgICBiZXN0Q291bnQgPSAxO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudFJhbmsgPT09IGJlc3RSYW5rKSB7XG4gICAgICBiZXN0Q291bnQrKztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYmVzdENvdW50ICE9PSAxIHx8IGJlc3RSYW5rID09PSBOT19QUklPUklUWV9NQVRDSCA/IG51bGwgOiBiZXN0Tm90ZVBhdGg7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRW50cnlNYXRjaGVzKGVudHJ5OiBzdHJpbmcsIHBhcmFtczogRmluZE5vdGVQcmlvcml0eVJhbmtQYXJhbXMpOiBib29sZWFuIHtcbiAgaWYgKCFlbnRyeSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChpc1Byb3BlcnR5RW50cnkoZW50cnkpKSB7XG4gICAgcmV0dXJuIGNoZWNrUHJvcGVydHlFbnRyeU1hdGNoZXMoeyBlbnRyeSwgZnJvbnRtYXR0ZXI6IHBhcmFtcy5mcm9udG1hdHRlciB9KTtcbiAgfVxuXG4gIGlmIChlbnRyeS5sZW5ndGggPiAxICYmIGVudHJ5LnN0YXJ0c1dpdGgoUkVHX0VYUF9ERUxJTUlURVIpICYmIGVudHJ5LmVuZHNXaXRoKFJFR19FWFBfREVMSU1JVEVSKSkge1xuICAgIGNvbnN0IHNvdXJjZSA9IGVudHJ5LnNsaWNlKDEsIC0xKTtcbiAgICAvLyBBbiB1bnBhcnNlYWJsZSBleHByZXNzaW9uIG11c3Qgbm90IHRocm93IG1pZC1jb2xsZWN0aW9uOyBpdCBzaW1wbHkgbWF0Y2hlcyBub3RoaW5nLlxuICAgIHJldHVybiBpc1ZhbGlkUmVnRXhwKHNvdXJjZSkgJiYgbmV3IFJlZ0V4cChzb3VyY2UpLnRlc3QocGFyYW1zLm5vdGVQYXRoKTtcbiAgfVxuXG4gIGlmIChlbnRyeS5zdGFydHNXaXRoKEVYVEVOU0lPTl9QUkVGSVgpKSB7XG4gICAgcmV0dXJuIHBhcmFtcy5ub3RlUGF0aC50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKGVudHJ5LnRvTG93ZXJDYXNlKCkpO1xuICB9XG5cbiAgY29uc3QgcHJlZml4ID0gZW50cnkuZW5kc1dpdGgoJy8nKSA/IGVudHJ5IDogYCR7ZW50cnl9L2A7XG4gIHJldHVybiBwYXJhbXMubm90ZVBhdGggPT09IGVudHJ5IHx8IHBhcmFtcy5ub3RlUGF0aC5zdGFydHNXaXRoKHByZWZpeCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9CQSxxQkFBOEI7QUFFOUIsNEJBR087QUFFUCxNQUFNLG9CQUFvQjtBQUMxQixNQUFNLG1CQUFtQjtBQVNsQixJQUFLLHlCQUFMLGtCQUFLQSw0QkFBTDtBQUlMLEVBQUFBLHdCQUFBLGVBQVk7QUFLWixFQUFBQSx3QkFBQSxhQUFVO0FBS1YsRUFBQUEsd0JBQUEsU0FBTTtBQWRJLFNBQUFBO0FBQUEsR0FBQTtBQTZFTCxNQUFNLG9CQUFvQjtBQWlCMUIsU0FBUywrQkFBK0IsUUFBd0Q7QUFFckcsUUFBTSxrQkFBa0IsT0FBTyxVQUFVLElBQUksQ0FBQyxjQUFjO0FBQUEsSUFDMUQ7QUFBQSxJQUNBLE1BQU0sT0FBTyxLQUFLLFFBQVE7QUFBQSxFQUM1QixFQUFFO0FBRUYsTUFBSSxXQUFXO0FBQ2YsYUFBVyxVQUFVLGlCQUFpQjtBQUNwQyxRQUFJLE9BQU8sT0FBTyxVQUFVO0FBQzFCLGlCQUFXLE9BQU87QUFBQSxJQUNwQjtBQUFBLEVBQ0Y7QUFFQSxTQUFPLGdCQUNKLE9BQU8sQ0FBQyxXQUFXLE9BQU8sU0FBUyxRQUFRLEVBQzNDLElBQUksQ0FBQyxXQUFXLE9BQU8sUUFBUTtBQUNwQztBQVlPLFNBQVMsMkJBQTJCLFFBQWtFO0FBQzNHLE1BQUksT0FBTyxRQUFRLFdBQVcsR0FBRztBQUMvQixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksV0FBVztBQUNmLGFBQVcsWUFBWSxPQUFPLFdBQVc7QUFDdkMsVUFBTSxjQUFjLE9BQU8sS0FBSyxRQUFRO0FBQ3hDLFFBQUksY0FBYyxVQUFVO0FBQzFCLGlCQUFXO0FBQUEsSUFDYjtBQUFBLEVBQ0Y7QUFFQSxTQUFPLGFBQWEsb0JBQW9CLDBCQUFpQztBQUMzRTtBQXNCTyxTQUFTLHFCQUFxQixRQUE0QztBQUMvRSxNQUFJLFdBQVc7QUFDZixNQUFJLGFBQWE7QUFFakIsYUFBVyxDQUFDLE9BQU8sS0FBSyxLQUFLLE9BQU8sUUFBUSxRQUFRLEdBQUc7QUFFckQsUUFBSyxNQUFNLFVBQVUsY0FBZSxDQUFDLGtCQUFrQixPQUFPLE1BQU0sR0FBRztBQUNyRTtBQUFBLElBQ0Y7QUFFQSxlQUFXO0FBQ1gsaUJBQWEsTUFBTTtBQUFBLEVBQ3JCO0FBRUEsU0FBTztBQUNUO0FBWU8sU0FBUyw0QkFBNEIsUUFBMEQ7QUFDcEcsTUFBSSxXQUFXO0FBQ2YsTUFBSSxlQUE4QjtBQUNsQyxNQUFJLFlBQVk7QUFFaEIsYUFBVyxZQUFZLE9BQU8sV0FBVztBQUN2QyxVQUFNLGNBQWMsT0FBTyxLQUFLLFFBQVE7QUFDeEMsUUFBSSxjQUFjLFVBQVU7QUFDMUIsaUJBQVc7QUFDWCxxQkFBZTtBQUNmLGtCQUFZO0FBQUEsSUFDZCxXQUFXLGdCQUFnQixVQUFVO0FBQ25DO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxTQUFPLGNBQWMsS0FBSyxhQUFhLG9CQUFvQixPQUFPO0FBQ3BFO0FBRUEsU0FBUyxrQkFBa0IsT0FBZSxRQUE2QztBQUNyRixNQUFJLENBQUMsT0FBTztBQUNWLFdBQU87QUFBQSxFQUNUO0FBRUEsVUFBSSx1Q0FBZ0IsS0FBSyxHQUFHO0FBQzFCLGVBQU8saURBQTBCLEVBQUUsT0FBTyxhQUFhLE9BQU8sWUFBWSxDQUFDO0FBQUEsRUFDN0U7QUFFQSxNQUFJLE1BQU0sU0FBUyxLQUFLLE1BQU0sV0FBVyxpQkFBaUIsS0FBSyxNQUFNLFNBQVMsaUJBQWlCLEdBQUc7QUFDaEcsVUFBTSxTQUFTLE1BQU0sTUFBTSxHQUFHLEVBQUU7QUFFaEMsZUFBTyw4QkFBYyxNQUFNLEtBQUssSUFBSSxPQUFPLE1BQU0sRUFBRSxLQUFLLE9BQU8sUUFBUTtBQUFBLEVBQ3pFO0FBRUEsTUFBSSxNQUFNLFdBQVcsZ0JBQWdCLEdBQUc7QUFDdEMsV0FBTyxPQUFPLFNBQVMsWUFBWSxFQUFFLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFBQSxFQUNuRTtBQUVBLFFBQU0sU0FBUyxNQUFNLFNBQVMsR0FBRyxJQUFJLFFBQVEsR0FBRyxLQUFLO0FBQ3JELFNBQU8sT0FBTyxhQUFhLFNBQVMsT0FBTyxTQUFTLFdBQVcsTUFBTTtBQUN2RTsiLAogICJuYW1lcyI6IFsiTm9Qcmlvcml0eVdpbm5lclJlYXNvbiJdCn0K
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25vdGUtcHJpb3JpdHkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBEZWNpZGVzIHdoaWNoIG9mIHNldmVyYWwgbm90ZXMgcmVmZXJlbmNpbmcgdGhlIHNhbWUgYXR0YWNobWVudCBvd25zIGl0LlxuICpcbiAqIEFuIGF0dGFjaG1lbnQgcmVmZXJlbmNlZCBmcm9tIG1vcmUgdGhhbiBvbmUgbm90ZSBoYXMgbm8gc2luZ2xlIGNvcnJlY3QgaG9tZSwgc28gY29sbGVjdGluZyBpdCBmYWxsc1xuICogYmFjayB0byB3aGF0ZXZlciBgY29sbGVjdEF0dGFjaG1lbnRVc2VkQnlNdWx0aXBsZU5vdGVzTW9kZWAgc2F5cyBcdTIwMTQgc2tpcCwgY29weSwgY2FuY2VsLCBvciBhc2suIEFcbiAqIHByaW9yaXR5IGxpc3QgbGV0cyB0aGUgdXNlciBhbnN3ZXIgdGhlIHF1ZXN0aW9uIG9uY2UgaW5zdGVhZDogcHV0IGAubWRgIGFib3ZlIGAuZXhjYWxpZHJhd2AgYW5kIGFuXG4gKiBpbWFnZSBzaGFyZWQgYnkgYm90aCBsYW5kcyBpbiB0aGUgbWFya2Rvd24gbm90ZSdzIGZvbGRlci5cbiAqXG4gKiBBIHRpZSBpcyBkZWxpYmVyYXRlbHkgTk9UIHJlc29sdmVkIGhlcmUuIFR3byBub3RlcyBvZiBlcXVhbCBwcmlvcml0eSBpcyBleGFjdGx5IHRoZSBhbWJpZ3VpdHkgdGhlXG4gKiBleGlzdGluZyBtb2RlIHNldHRpbmcgYWxyZWFkeSBleGlzdHMgdG8gaGFuZGxlLCBhbmQgaW52ZW50aW5nIGEgc2Vjb25kLCBzaWxlbnQgcnVsZSBmb3IgaXQgd291bGRcbiAqIG1vdmUgYSBmaWxlIHRoZSB1c2VyIG5ldmVyIG5hbWVkLlxuICpcbiAqIFRoZSB0aWUgaXMgYWxzbyB0aGUgd2hvbGUgb2Ygd2hhdCBnZXRzIFJFUE9SVEVELiBBIG5vdGUgdGhlIGxpc3QgcmFua2VkIGJlbG93IHRoZSBiZXN0IHJhbmsgY2Fubm90XG4gKiByZXNvbHZlIHRoZSBhbWJpZ3VpdHksIHNvIGxpc3RpbmcgaXQgb25seSBhZGRzIG5vaXNlIFx1MjAxNCBhbmQgd29yc2UgaW4gYSBwaWNrZXIsIHdoZXJlIG9mZmVyaW5nIGl0XG4gKiBpbnZpdGVzIGFuIGFuc3dlciB0aGUgcHJpb3JpdHkgbGlzdCBpdHNlbGYgd291bGQgbm90IGhhdmUgZ2l2ZW4uIFRoYXQgaXMgd2h5XG4gKiB7QGxpbmsgZmlsdGVySGlnaGVzdFByaW9yaXR5Tm90ZVBhdGhzfSBleGlzdHMgYWxvbmdzaWRlIHRoZSB0d28gZnVuY3Rpb25zIHRoYXQgZGVjaWRlLlxuICovXG5cbmltcG9ydCB7IGlzVmFsaWRSZWdFeHAgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcmVnLWV4cCc7XG5cbmltcG9ydCB7XG4gIGNoZWNrUHJvcGVydHlFbnRyeU1hdGNoZXMsXG4gIGlzUHJvcGVydHlFbnRyeVxufSBmcm9tICcuL3Byb3BlcnR5LWVudHJ5LnRzJztcblxuY29uc3QgUkVHX0VYUF9ERUxJTUlURVIgPSAnLyc7XG5jb25zdCBFWFRFTlNJT05fUFJFRklYID0gJy4nO1xuXG4vKipcbiAqIFdoeSB0aGUgcHJpb3JpdHkgbGlzdCBkaWQgbm90IHNldHRsZSB3aGljaCBub3RlIG93bnMgYW4gYXR0YWNobWVudC5cbiAqXG4gKiBUaGUgdGhyZWUgdmFsdWVzIGFyZSBleGFjdGx5IHRoZSB0aHJlZSB3YXlzIHtAbGluayBwaWNrSGlnaGVzdFByaW9yaXR5Tm90ZVBhdGh9IChwbHVzIGl0cyBlbXB0eS1saXN0XG4gKiBndWFyZCkgY2FuIGZhaWwgdG8gbmFtZSBhIHdpbm5lciwgc28gYSBjYWxsZXIgY2FuIHRlbGwgdGhlIHVzZXIgdGhlIHJlYWwgcmVhc29uIGluc3RlYWQgb2Ygb25seVxuICogcmVwb3J0aW5nIHRoYXQgdGhlIGF0dGFjaG1lbnQgaXMgcmVmZXJlbmNlZCBieSBzZXZlcmFsIG5vdGVzLlxuICovXG5leHBvcnQgZW51bSBOb1ByaW9yaXR5V2lubmVyUmVhc29uIHtcbiAgLyoqXG4gICAqIFRoZSBwcmlvcml0eSBsaXN0IGlzIGVtcHR5IFx1MjAxNCBpdHMgZGVmYXVsdC4gTm90aGluZyB3YXMgY29uZmlndXJlZCB0byBkZWNpZGUgYmV0d2VlbiB0aGUgbm90ZXMuXG4gICAqL1xuICBFbXB0eUxpc3QgPSAnRW1wdHlMaXN0JyxcblxuICAvKipcbiAgICogVGhlIGxpc3QgaGFzIGVudHJpZXMsIGJ1dCBub25lIG9mIHRoZSByZWZlcmVuY2luZyBub3RlcyBtYXRjaGVzIGFueSBvZiB0aGVtLlxuICAgKi9cbiAgTm9NYXRjaCA9ICdOb01hdGNoJyxcblxuICAvKipcbiAgICogU2V2ZXJhbCByZWZlcmVuY2luZyBub3RlcyB0aWUgZm9yIHRoZSBiZXN0IHJhbmssIHNvIHRoZSBsaXN0IG5hbWVzIG5vIHNpbmdsZSBvd25lci5cbiAgICovXG4gIFRpZSA9ICdUaWUnXG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZpbHRlckhpZ2hlc3RQcmlvcml0eU5vdGVQYXRoc30uXG4gKlxuICogVGhlIHNhbWUgcXVlc3Rpb24gYXMge0BsaW5rIHBpY2tIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aH0gYXNrcywgc28gZGVsaWJlcmF0ZWx5IHRoZSBzYW1lIHBhcmFtZXRlcnM6XG4gKiB0aGUgdHdvIG11c3QgYmUgYW5zd2VyZWQgZnJvbSBpZGVudGljYWwgaW5wdXRzIG9yIHRoZXkgY291bGQgZGlzYWdyZWUuXG4gKi9cbmV4cG9ydCB0eXBlIEZpbHRlckhpZ2hlc3RQcmlvcml0eU5vdGVQYXRoc1BhcmFtcyA9IFBpY2tIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aFBhcmFtcztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZmluZE5vUHJpb3JpdHlXaW5uZXJSZWFzb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbmROb1ByaW9yaXR5V2lubmVyUmVhc29uUGFyYW1zIGV4dGVuZHMgUGlja0hpZ2hlc3RQcmlvcml0eU5vdGVQYXRoUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwcmlvcml0eSBsaXN0LCBoaWdoZXN0IHByaW9yaXR5IGZpcnN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cmllczogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZpbmROb3RlUHJpb3JpdHlSYW5rfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaW5kTm90ZVByaW9yaXR5UmFua1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgcHJpb3JpdHkgbGlzdCwgaGlnaGVzdCBwcmlvcml0eSBmaXJzdC5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbm90ZSdzIGZyb250bWF0dGVyLCBvciBgbnVsbGAgd2hlbiBpdCBoYXMgbm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGZyb250bWF0dGVyOiBudWxsIHwgUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuXG4gIC8qKlxuICAgKiBUaGUgdmF1bHQtcmVsYXRpdmUgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHBpY2tIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlja0hpZ2hlc3RQcmlvcml0eU5vdGVQYXRoUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSB2YXVsdC1yZWxhdGl2ZSBwYXRocyBvZiB0aGUgbm90ZXMgcmVmZXJlbmNpbmcgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpb3JpdHkgcmFuayBvZiBhIG5vdGUuIExvd2VyIHdpbnM7IHtAbGluayBOT19QUklPUklUWV9NQVRDSH0gbWVhbnMgdGhlIG5vdGUgbWF0Y2hlZCBub3RoaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gbm90ZVBhdGggLSBUaGUgdmF1bHQtcmVsYXRpdmUgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICogQHJldHVybnMgVGhlIHJhbmsuXG4gICAqL1xuICByZWFkb25seSByYW5rOiAobm90ZVBhdGg6IHN0cmluZykgPT4gbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoZSByYW5rIG9mIGEgbm90ZSB0aGF0IG1hdGNoZXMgbm8gZW50cnkgaW4gdGhlIHByaW9yaXR5IGxpc3QuIEhpZ2hlciB0aGFuIGFueSByZWFsIHJhbmssIHNvIGEgbm90ZVxuICogdGhhdCBtYXRjaGVzIG5vdGhpbmcgYWx3YXlzIGxvc2VzIHRvIG9uZSB0aGF0IG1hdGNoZXMgc29tZXRoaW5nLlxuICovXG5leHBvcnQgY29uc3QgTk9fUFJJT1JJVFlfTUFUQ0ggPSBJbmZpbml0eTtcblxuLyoqXG4gKiBOYXJyb3dzIHRoZSByZWZlcmVuY2luZyBub3RlcyB0byB0aGUgb25lcyBzaGFyaW5nIHRoZSBiZXN0IHJhbmsuXG4gKlxuICogVGhvc2Ugbm90ZXMgYXJlIHRoZSB3aG9sZSBvZiB0aGUgYW1iaWd1aXR5OiBvbmUgdGhlIGxpc3QgcmFua2VkIGJlbG93IHRoZW0gY2Fubm90IHJlc29sdmUgYW55dGhpbmcsXG4gKiBzbyByZXBvcnRpbmcgaXQgb25seSBhZGRzIG5vaXNlLiBUaGlzIG1pcnJvcnMge0BsaW5rIHBpY2tIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aH0ncyBjb25kaXRpb25zXG4gKiByYXRoZXIgdGhhbiByZS1kZWNpZGluZyBhbnl0aGluZywgc28gdGhlIHR3byBjYW4gb25seSBldmVyIGFncmVlIFx1MjAxNCB3aGVuZXZlciB0aGF0IG5hbWVzIGEgd2lubmVyLFxuICogdGhpcyByZXR1cm5zIGV4YWN0bHkgdGhhdCBvbmUgbm90ZS5cbiAqXG4gKiBBIGxpc3QgdGhhdCBkZWNpZGVzIG5vdGhpbmcgYXQgYWxsIFx1MjAxNCBlbXB0eSwgb3IgbWF0Y2hpbmcgbm8gbm90ZSBcdTIwMTQgcmFua3MgZXZlcnkgbm90ZVxuICoge0BsaW5rIE5PX1BSSU9SSVRZX01BVENIfSwgc28gdGhleSBhbGwgdGllIGFuZCBldmVyeSBvbmUgb2YgdGhlbSBpcyBrZXB0LiBUaGF0IGlzIHRoZSBzYW1lIGxpc3QgdGhlXG4gKiB1c2VyIHNhdyBiZWZvcmUsIHdoaWNoIGlzIGNvcnJlY3Q6IG5vdGhpbmcgaGFzIHJ1bGVkIGFueSBvZiB0aGVtIG91dC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHJlZmVyZW5jaW5nIG5vdGVzIGFuZCBob3cgdG8gcmFuayBvbmUuXG4gKiBAcmV0dXJucyBUaGUgbm90ZXMgaG9sZGluZyB0aGUgYmVzdCByYW5rLCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGdpdmVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVySGlnaGVzdFByaW9yaXR5Tm90ZVBhdGhzKHBhcmFtczogRmlsdGVySGlnaGVzdFByaW9yaXR5Tm90ZVBhdGhzUGFyYW1zKTogc3RyaW5nW10ge1xuICAvLyBSYW5raW5nIGNhbiBoaXQgdGhlIHZhdWx0IGFuZCB0aGUgbWV0YWRhdGEgY2FjaGUsIHNvIGVhY2ggbm90ZSBpcyByYW5rZWQgb25jZSBhbmQgY2FycmllZC5cbiAgY29uc3QgcmFua2VkTm90ZVBhdGhzID0gcGFyYW1zLm5vdGVQYXRocy5tYXAoKG5vdGVQYXRoKSA9PiAoe1xuICAgIG5vdGVQYXRoLFxuICAgIHJhbms6IHBhcmFtcy5yYW5rKG5vdGVQYXRoKVxuICB9KSk7XG5cbiAgbGV0IGJlc3RSYW5rID0gTk9fUFJJT1JJVFlfTUFUQ0g7XG4gIGZvciAoY29uc3QgcmFua2VkIG9mIHJhbmtlZE5vdGVQYXRocykge1xuICAgIGlmIChyYW5rZWQucmFuayA8IGJlc3RSYW5rKSB7XG4gICAgICBiZXN0UmFuayA9IHJhbmtlZC5yYW5rO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByYW5rZWROb3RlUGF0aHNcbiAgICAuZmlsdGVyKChyYW5rZWQpID0+IHJhbmtlZC5yYW5rID09PSBiZXN0UmFuaylcbiAgICAubWFwKChyYW5rZWQpID0+IHJhbmtlZC5ub3RlUGF0aCk7XG59XG5cbi8qKlxuICogRXhwbGFpbnMgd2h5IHRoZSBwcmlvcml0eSBsaXN0IG5hbWVkIG5vIG93bmVyIGZvciBhbiBhdHRhY2htZW50LlxuICpcbiAqIE9ubHkgbWVhbmluZ2Z1bCBvbmNlIHtAbGluayBwaWNrSGlnaGVzdFByaW9yaXR5Tm90ZVBhdGh9IGhhcyByZXR1cm5lZCBgbnVsbGAgKG9yIHRoZSBsaXN0IHdhcyBlbXB0eVxuICogYW5kIHdhcyBuZXZlciBjb25zdWx0ZWQpOyBpdCBtaXJyb3JzIHRoYXQgZnVuY3Rpb24ncyBvd24gY29uZGl0aW9ucyByYXRoZXIgdGhhbiByZS1kZWNpZGluZ1xuICogYW55dGhpbmcsIHNvIHRoZSB0d28gY2FuIG9ubHkgZXZlciBhZ3JlZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHByaW9yaXR5IGxpc3QsIHRoZSByZWZlcmVuY2luZyBub3RlcywgYW5kIGhvdyB0byByYW5rIG9uZS5cbiAqIEByZXR1cm5zIFdoaWNoIG9mIHRoZSB0aHJlZSB3YXlzIHRoZSBsaXN0IGZhaWxlZCB0byBzZXR0bGUgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTm9Qcmlvcml0eVdpbm5lclJlYXNvbihwYXJhbXM6IEZpbmROb1ByaW9yaXR5V2lubmVyUmVhc29uUGFyYW1zKTogTm9Qcmlvcml0eVdpbm5lclJlYXNvbiB7XG4gIGlmIChwYXJhbXMuZW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gTm9Qcmlvcml0eVdpbm5lclJlYXNvbi5FbXB0eUxpc3Q7XG4gIH1cblxuICBsZXQgYmVzdFJhbmsgPSBOT19QUklPUklUWV9NQVRDSDtcbiAgZm9yIChjb25zdCBub3RlUGF0aCBvZiBwYXJhbXMubm90ZVBhdGhzKSB7XG4gICAgY29uc3QgY3VycmVudFJhbmsgPSBwYXJhbXMucmFuayhub3RlUGF0aCk7XG4gICAgaWYgKGN1cnJlbnRSYW5rIDwgYmVzdFJhbmspIHtcbiAgICAgIGJlc3RSYW5rID0gY3VycmVudFJhbms7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJlc3RSYW5rID09PSBOT19QUklPUklUWV9NQVRDSCA/IE5vUHJpb3JpdHlXaW5uZXJSZWFzb24uTm9NYXRjaCA6IE5vUHJpb3JpdHlXaW5uZXJSZWFzb24uVGllO1xufVxuXG4vKipcbiAqIEZpbmRzIGhvdyBoaWdobHkgYSBub3RlIHJhbmtzIGluIHRoZSBwcmlvcml0eSBsaXN0LlxuICpcbiAqIEFuIGVudHJ5IG1hdGNoZXMgaW4gb25lIG9mIGZvdXIgd2F5cywgcGlja2VkIGJ5IGl0cyBzaGFwZSBzbyB0aGF0IG9uZSBsaXN0IGNhbiBleHByZXNzIGFsbCBvZiB0aGVtOlxuICpcbiAqIC0gYHByb3BlcnR5Om5hbWVgIFx1MjAxNCB0aGUgbm90ZSdzIGZyb250bWF0dGVyIGhhcyBgbmFtZWA7IGBwcm9wZXJ0eTpuYW1lPXZhbHVlYCBhbHNvIGNvbXBhcmVzIHRoZSB2YWx1ZS5cbiAqIC0gYC9yZWd1bGFyIGV4cHJlc3Npb24vYCBcdTIwMTQgdGVzdGVkIGFnYWluc3QgdGhlIG5vdGUncyBwYXRoLlxuICogLSBgLmV4dGAgXHUyMDE0IHRoZSBub3RlJ3MgcGF0aCBlbmRzIHdpdGggaXQsIGNhc2UtaW5zZW5zaXRpdmVseS4gVGhpcyBpcyB0aGUgZm9ybSB0aGUgcmVxdWVzdCBhc2tlZCBmb3IuXG4gKiAtIGFueXRoaW5nIGVsc2UgXHUyMDE0IGEgcGF0aCBmcm9tIHRoZSB2YXVsdCByb290LCBtYXRjaGluZyB0aGUgdm9jYWJ1bGFyeSBvZiB0aGUgaW5jbHVkZSAvIGV4Y2x1ZGVcbiAqICAgcGF0aCBzZXR0aW5ncy5cbiAqXG4gKiBXaGVuIGEgbm90ZSBtYXRjaGVzIHNldmVyYWwgZW50cmllcyB0aGUgKipsb25nZXN0Kiogb25lIGRlY2lkZXMgaXRzIHJhbmssIHNvIHRoZSBtb3N0IHNwZWNpZmljXG4gKiBlbnRyeSB3aW5zIGFuZCB0aGUgb3JkZXIgb2YgdGhlIGxpc3QgaXMgbGVmdCB0byBleHByZXNzIHByaW9yaXR5LiBXaXRob3V0IHRoaXMgYW4gYEV4Y2FsaWRyYXdgIG5vdGVcbiAqIGNvdWxkIG5ldmVyIHJhbmsgYmVsb3cgYSBwbGFpbiBtYXJrZG93biBvbmU6IGBkcmF3aW5nLmV4Y2FsaWRyYXcubWRgIGFsc28gZW5kcyB3aXRoIGAubWRgLCBzb1xuICogYC5tZGAgYWJvdmUgYC5leGNhbGlkcmF3Lm1kYCBcdTIwMTQgdGhlIHZlcnkgZXhhbXBsZSB0aGUgcmVxdWVzdCBpcyBidWlsdCBvbiBcdTIwMTQgd291bGQgdGllIGluc3RlYWQgb2ZcbiAqIHJlc29sdmluZy4gRXF1YWwtbGVuZ3RoIG1hdGNoZXMgZmFsbCB0byB0aGUgZWFybGllciBlbnRyeS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGZpbmRpbmcgdGhlIHJhbmsuXG4gKiBAcmV0dXJucyBUaGUgaW5kZXggb2YgdGhlIG1vc3Qgc3BlY2lmaWMgbWF0Y2hpbmcgZW50cnksIG9yIHtAbGluayBOT19QUklPUklUWV9NQVRDSH0gd2hlbiBub25lIG1hdGNoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE5vdGVQcmlvcml0eVJhbmsocGFyYW1zOiBGaW5kTm90ZVByaW9yaXR5UmFua1BhcmFtcyk6IG51bWJlciB7XG4gIGxldCBiZXN0UmFuayA9IE5PX1BSSU9SSVRZX01BVENIO1xuICBsZXQgYmVzdExlbmd0aCA9IC0xO1xuXG4gIGZvciAoY29uc3QgW2luZGV4LCBlbnRyeV0gb2YgcGFyYW1zLmVudHJpZXMuZW50cmllcygpKSB7XG4gICAgLy8gQSBzaG9ydGVyIGVudHJ5IGNhbiBuZXZlciBiZWF0IG9uZSB0aGF0IGFscmVhZHkgbWF0Y2hlZCwgc28gaXQgaXMgbm90IHdvcnRoIHRlc3RpbmcuXG4gICAgaWYgKChlbnRyeS5sZW5ndGggPD0gYmVzdExlbmd0aCkgfHwgIWNoZWNrRW50cnlNYXRjaGVzKGVudHJ5LCBwYXJhbXMpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBiZXN0UmFuayA9IGluZGV4O1xuICAgIGJlc3RMZW5ndGggPSBlbnRyeS5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gYmVzdFJhbms7XG59XG5cbi8qKlxuICogUGlja3MgdGhlIHNpbmdsZSBoaWdoZXN0LXByaW9yaXR5IG5vdGUgYW1vbmcgdGhvc2UgcmVmZXJlbmNpbmcgYW4gYXR0YWNobWVudC5cbiAqXG4gKiBSZXR1cm5zIGBudWxsYCB3aGVuIHRoZSBiZXN0IHJhbmsgaXMgc2hhcmVkIGJ5IG1vcmUgdGhhbiBvbmUgbm90ZSwgb3Igd2hlbiBubyBub3RlIG1hdGNoZXNcbiAqIGFueXRoaW5nLiBCb3RoIGFyZSB0aWVzLCBhbmQgYSB0aWUgaXMgdGhlIGNhbGxlcidzIHByb2JsZW06IGl0IGlzIHdoYXQgdGhlIG11bHRpcGxlLW5vdGVzIG1vZGVcbiAqIHNldHRpbmcgaXMgZm9yLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcGlja2luZyB0aGUgbm90ZS5cbiAqIEByZXR1cm5zIFRoZSB3aW5uaW5nIG5vdGUncyBwYXRoLCBvciBgbnVsbGAgd2hlbiB0aGVyZSBpcyBubyBzaW5nbGUgd2lubmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGlja0hpZ2hlc3RQcmlvcml0eU5vdGVQYXRoKHBhcmFtczogUGlja0hpZ2hlc3RQcmlvcml0eU5vdGVQYXRoUGFyYW1zKTogbnVsbCB8IHN0cmluZyB7XG4gIGxldCBiZXN0UmFuayA9IE5PX1BSSU9SSVRZX01BVENIO1xuICBsZXQgYmVzdE5vdGVQYXRoOiBudWxsIHwgc3RyaW5nID0gbnVsbDtcbiAgbGV0IGJlc3RDb3VudCA9IDA7XG5cbiAgZm9yIChjb25zdCBub3RlUGF0aCBvZiBwYXJhbXMubm90ZVBhdGhzKSB7XG4gICAgY29uc3QgY3VycmVudFJhbmsgPSBwYXJhbXMucmFuayhub3RlUGF0aCk7XG4gICAgaWYgKGN1cnJlbnRSYW5rIDwgYmVzdFJhbmspIHtcbiAgICAgIGJlc3RSYW5rID0gY3VycmVudFJhbms7XG4gICAgICBiZXN0Tm90ZVBhdGggPSBub3RlUGF0aDtcbiAgICAgIGJlc3RDb3VudCA9IDE7XG4gICAgfSBlbHNlIGlmIChjdXJyZW50UmFuayA9PT0gYmVzdFJhbmspIHtcbiAgICAgIGJlc3RDb3VudCsrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBiZXN0Q291bnQgIT09IDEgfHwgYmVzdFJhbmsgPT09IE5PX1BSSU9SSVRZX01BVENIID8gbnVsbCA6IGJlc3ROb3RlUGF0aDtcbn1cblxuZnVuY3Rpb24gY2hlY2tFbnRyeU1hdGNoZXMoZW50cnk6IHN0cmluZywgcGFyYW1zOiBGaW5kTm90ZVByaW9yaXR5UmFua1BhcmFtcyk6IGJvb2xlYW4ge1xuICBpZiAoIWVudHJ5KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGlzUHJvcGVydHlFbnRyeShlbnRyeSkpIHtcbiAgICByZXR1cm4gY2hlY2tQcm9wZXJ0eUVudHJ5TWF0Y2hlcyh7IGVudHJ5LCBmcm9udG1hdHRlcjogcGFyYW1zLmZyb250bWF0dGVyIH0pO1xuICB9XG5cbiAgaWYgKGVudHJ5Lmxlbmd0aCA+IDEgJiYgZW50cnkuc3RhcnRzV2l0aChSRUdfRVhQX0RFTElNSVRFUikgJiYgZW50cnkuZW5kc1dpdGgoUkVHX0VYUF9ERUxJTUlURVIpKSB7XG4gICAgY29uc3Qgc291cmNlID0gZW50cnkuc2xpY2UoMSwgLTEpO1xuICAgIC8vIEFuIHVucGFyc2VhYmxlIGV4cHJlc3Npb24gbXVzdCBub3QgdGhyb3cgbWlkLWNvbGxlY3Rpb247IGl0IHNpbXBseSBtYXRjaGVzIG5vdGhpbmcuXG4gICAgcmV0dXJuIGlzVmFsaWRSZWdFeHAoc291cmNlKSAmJiBuZXcgUmVnRXhwKHNvdXJjZSkudGVzdChwYXJhbXMubm90ZVBhdGgpO1xuICB9XG5cbiAgaWYgKGVudHJ5LnN0YXJ0c1dpdGgoRVhURU5TSU9OX1BSRUZJWCkpIHtcbiAgICByZXR1cm4gcGFyYW1zLm5vdGVQYXRoLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoZW50cnkudG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICBjb25zdCBwcmVmaXggPSBlbnRyeS5lbmRzV2l0aCgnLycpID8gZW50cnkgOiBgJHtlbnRyeX0vYDtcbiAgcmV0dXJuIHBhcmFtcy5ub3RlUGF0aCA9PT0gZW50cnkgfHwgcGFyYW1zLm5vdGVQYXRoLnN0YXJ0c1dpdGgocHJlZml4KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb0JBLHFCQUE4QjtBQUU5Qiw0QkFHTztBQUVQLE1BQU0sb0JBQW9CO0FBQzFCLE1BQU0sbUJBQW1CO0FBU2xCLElBQUsseUJBQUwsa0JBQUtBLDRCQUFMO0FBSUwsRUFBQUEsd0JBQUEsZUFBWTtBQUtaLEVBQUFBLHdCQUFBLGFBQVU7QUFLVixFQUFBQSx3QkFBQSxTQUFNO0FBZEksU0FBQUE7QUFBQSxHQUFBO0FBNkVMLE1BQU0sb0JBQW9CO0FBaUIxQixTQUFTLCtCQUErQixRQUF3RDtBQUVyRyxRQUFNLGtCQUFrQixPQUFPLFVBQVUsSUFBSSxDQUFDLGNBQWM7QUFBQSxJQUMxRDtBQUFBLElBQ0EsTUFBTSxPQUFPLEtBQUssUUFBUTtBQUFBLEVBQzVCLEVBQUU7QUFFRixNQUFJLFdBQVc7QUFDZixhQUFXLFVBQVUsaUJBQWlCO0FBQ3BDLFFBQUksT0FBTyxPQUFPLFVBQVU7QUFDMUIsaUJBQVcsT0FBTztBQUFBLElBQ3BCO0FBQUEsRUFDRjtBQUVBLFNBQU8sZ0JBQ0osT0FBTyxDQUFDLFdBQVcsT0FBTyxTQUFTLFFBQVEsRUFDM0MsSUFBSSxDQUFDLFdBQVcsT0FBTyxRQUFRO0FBQ3BDO0FBWU8sU0FBUywyQkFBMkIsUUFBa0U7QUFDM0csTUFBSSxPQUFPLFFBQVEsV0FBVyxHQUFHO0FBQy9CLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxXQUFXO0FBQ2YsYUFBVyxZQUFZLE9BQU8sV0FBVztBQUN2QyxVQUFNLGNBQWMsT0FBTyxLQUFLLFFBQVE7QUFDeEMsUUFBSSxjQUFjLFVBQVU7QUFDMUIsaUJBQVc7QUFBQSxJQUNiO0FBQUEsRUFDRjtBQUVBLFNBQU8sYUFBYSxvQkFBb0IsMEJBQWlDO0FBQzNFO0FBc0JPLFNBQVMscUJBQXFCLFFBQTRDO0FBQy9FLE1BQUksV0FBVztBQUNmLE1BQUksYUFBYTtBQUVqQixhQUFXLENBQUMsT0FBTyxLQUFLLEtBQUssT0FBTyxRQUFRLFFBQVEsR0FBRztBQUVyRCxRQUFLLE1BQU0sVUFBVSxjQUFlLENBQUMsa0JBQWtCLE9BQU8sTUFBTSxHQUFHO0FBQ3JFO0FBQUEsSUFDRjtBQUVBLGVBQVc7QUFDWCxpQkFBYSxNQUFNO0FBQUEsRUFDckI7QUFFQSxTQUFPO0FBQ1Q7QUFZTyxTQUFTLDRCQUE0QixRQUEwRDtBQUNwRyxNQUFJLFdBQVc7QUFDZixNQUFJLGVBQThCO0FBQ2xDLE1BQUksWUFBWTtBQUVoQixhQUFXLFlBQVksT0FBTyxXQUFXO0FBQ3ZDLFVBQU0sY0FBYyxPQUFPLEtBQUssUUFBUTtBQUN4QyxRQUFJLGNBQWMsVUFBVTtBQUMxQixpQkFBVztBQUNYLHFCQUFlO0FBQ2Ysa0JBQVk7QUFBQSxJQUNkLFdBQVcsZ0JBQWdCLFVBQVU7QUFDbkM7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU8sY0FBYyxLQUFLLGFBQWEsb0JBQW9CLE9BQU87QUFDcEU7QUFFQSxTQUFTLGtCQUFrQixPQUFlLFFBQTZDO0FBQ3JGLE1BQUksQ0FBQyxPQUFPO0FBQ1YsV0FBTztBQUFBLEVBQ1Q7QUFFQSxVQUFJLHVDQUFnQixLQUFLLEdBQUc7QUFDMUIsZUFBTyxpREFBMEIsRUFBRSxPQUFPLGFBQWEsT0FBTyxZQUFZLENBQUM7QUFBQSxFQUM3RTtBQUVBLE1BQUksTUFBTSxTQUFTLEtBQUssTUFBTSxXQUFXLGlCQUFpQixLQUFLLE1BQU0sU0FBUyxpQkFBaUIsR0FBRztBQUNoRyxVQUFNLFNBQVMsTUFBTSxNQUFNLEdBQUcsRUFBRTtBQUVoQyxlQUFPLDhCQUFjLE1BQU0sS0FBSyxJQUFJLE9BQU8sTUFBTSxFQUFFLEtBQUssT0FBTyxRQUFRO0FBQUEsRUFDekU7QUFFQSxNQUFJLE1BQU0sV0FBVyxnQkFBZ0IsR0FBRztBQUN0QyxXQUFPLE9BQU8sU0FBUyxZQUFZLEVBQUUsU0FBUyxNQUFNLFlBQVksQ0FBQztBQUFBLEVBQ25FO0FBRUEsUUFBTSxTQUFTLE1BQU0sU0FBUyxHQUFHLElBQUksUUFBUSxHQUFHLEtBQUs7QUFDckQsU0FBTyxPQUFPLGFBQWEsU0FBUyxPQUFPLFNBQVMsV0FBVyxNQUFNO0FBQ3ZFOyIsCiAgIm5hbWVzIjogWyJOb1ByaW9yaXR5V2lubmVyUmVhc29uIl0KfQo=
|
|
@@ -132,7 +132,7 @@ export declare function findNoPriorityWinnerReason(params: FindNoPriorityWinnerR
|
|
|
132
132
|
* path settings.
|
|
133
133
|
*
|
|
134
134
|
* When a note matches several entries the **longest** one decides its rank, so the most specific
|
|
135
|
-
* entry wins and the order of the list is left to express priority. Without this an Excalidraw note
|
|
135
|
+
* entry wins and the order of the list is left to express priority. Without this an `Excalidraw` note
|
|
136
136
|
* could never rank below a plain markdown one: `drawing.excalidraw.md` also ends with `.md`, so
|
|
137
137
|
* `.md` above `.excalidraw.md` — the very example the request is built on — would tie instead of
|
|
138
138
|
* resolving. Equal-length matches fall to the earlier entry.
|
|
@@ -160,4 +160,4 @@ function isNotebookNavigatorApi(value) {
|
|
|
160
160
|
NOTEBOOK_NAVIGATOR_PLUGIN_ID,
|
|
161
161
|
resolveNotebookNavigatorApi
|
|
162
162
|
});
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25vdGVib29rLW5hdmlnYXRvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBzbGljZSBvZiBOb3RlYm9vayBOYXZpZ2F0b3IncyBwdWJsaWMgQVBJIHRoaXMgbGlicmFyeSB0YWxrcyB0bywgYW5kIHRoZSBydW50aW1lIG5hcnJvd2luZyB0aGF0XG4gKiBnZXRzIGhvbGQgb2YgaXQuXG4gKlxuICogKipOb3RlYm9vayBOYXZpZ2F0b3IgZHJhd3MgaXRzIG93biBmaWxlIHRyZWUsIHNvIGl0IG5ldmVyIHJhaXNlcyBPYnNpZGlhbidzIGBmaWxlLW1lbnVgIC9cbiAqIGBmaWxlcy1tZW51YCB3b3Jrc3BhY2UgZXZlbnRzKiogXHUyMDE0IHdoaWNoIGlzIHdoeSBhIHBsdWdpbidzIGNvbnRleHQtbWVudSBpdGVtcyBzaW1wbHkgZGlzYXBwZWFyIGZvclxuICogYW55b25lIGJyb3dzaW5nIHRocm91Z2ggaXQuIFdoYXQgaXQgb2ZmZXJzIGluc3RlYWQgaXMgYSBkb2N1bWVudGVkIGV4dGVuc2lvbiBBUElcbiAqIChgZG9jcy9hcGktcmVmZXJlbmNlLm1kYCArIGBzcmMvYXBpL3B1YmxpYy9ub3RlYm9vay1uYXZpZ2F0b3IuZC50c2AgaW4gYGpvaGFuc2FuL25vdGVib29rLW5hdmlnYXRvcmAsXG4gKiBBUEkgMi4wLjApLCByZWFjaGFibGUgYXQgcnVudGltZSBhcyBgYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKCdub3RlYm9vay1uYXZpZ2F0b3InKS5hcGlgLlxuICpcbiAqIFRoZSB0eXBlcyBiZWxvdyBhcmUgREVDTEFSRUQgSEVSRSByYXRoZXIgdGhhbiBpbXBvcnRlZDogTm90ZWJvb2sgTmF2aWdhdG9yIHNoaXBzIGl0cyBgLmQudHNgIGZvclxuICogZG93bmxvYWQsIG5vdCBhcyBhbiBucG0gcGFja2FnZSwgYW5kIGRlcGVuZGluZyBvbiBpdCB3b3VsZCB0dXJuIGFuIG9wdGlvbmFsIGludGVncmF0aW9uIGludG8gYVxuICogYnVpbGQtdGltZSBkZXBlbmRlbmN5LiBUaGV5IGFyZSBkZWxpYmVyYXRlbHkgdGhlIG5hcnJvd2VzdCBzaGFwZSB0aGlzIGxpYnJhcnkgdXNlcyBcdTIwMTQgdGhlIEFQSSBhbHNvXG4gKiBjYXJyaWVzIGBtZXRhZGF0YWAsIGBuYXZpZ2F0aW9uYCwgYHNlbGVjdGlvbmAsIGB0YWdDb2xsZWN0aW9uc2AsIGBwcm9wZXJ0eU5vZGVzYCBhbmQgYW4gZXZlbnQgYnVzLFxuICogbm9uZSBvZiB3aGljaCBhcHBseSB0byBhIGZpbGUvZm9sZGVyIGNvbW1hbmQgc3VyZmFjZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgTWVudUl0ZW0sXG4gIFRGaWxlLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBOb3RlYm9vayBOYXZpZ2F0b3IncyBwdWJsaWMgQVBJIG9iamVjdCwgbmFycm93ZWQgdG8gd2hhdCB0aGlzIGxpYnJhcnkgdXNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RlYm9va05hdmlnYXRvckFwaSB7XG4gIC8qKlxuICAgKiBUaGUgbWVudS1leHRlbnNpb24gbmFtZXNwYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbWVudXM6IE5vdGVib29rTmF2aWdhdG9yTWVudXM7XG59XG5cbi8qKlxuICogV2hhdCBgbWVudXMucmVnaXN0ZXJGaWxlTWVudWAgaGFuZHMgYSBzdWJzY3JpYmVyIHdoZW4gYSBGSUxFIGlzIHJpZ2h0LWNsaWNrZWQuXG4gKlxuICogVGhlcmUgaXMgbm8gYE1lbnVgIGhlcmUgXHUyMDE0IGFuIGl0ZW0gaXMgY29udHJpYnV0ZWQgdGhyb3VnaCBgYWRkSXRlbWAgYWxvbmUsIHdoaWNoIGlzIHdoeSB0aGVcbiAqIGZpbGUvZmlsZXMgbWVudSBoYW5kbGVycyBjYW5ub3Qgc2ltcGx5IGJlIGZvcndhcmRlZCB0byBpdCBhbmQgaGF2ZSB0byBiZSBicmlkZ2VkIChzZWVcbiAqIGBjb21wb25lbnRzL25vdGVib29rLW5hdmlnYXRvci1tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHNgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RlYm9va05hdmlnYXRvckZpbGVNZW51Q29udGV4dCBleHRlbmRzIE5vdGVib29rTmF2aWdhdG9yTWVudUNvbnRleHQge1xuICAvKipcbiAgICogVGhlIGZpbGUgdGhhdCB3YXMgcmlnaHQtY2xpY2tlZC5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGU6IFRGaWxlO1xuXG4gIC8qKlxuICAgKiBXaGF0IHRoZSB0cmVlIGhhZCBzZWxlY3RlZCB3aGVuIHRoZSBtZW51IHdhcyByYWlzZWQuXG4gICAqL1xuICByZWFkb25seSBzZWxlY3Rpb246IE5vdGVib29rTmF2aWdhdG9yRmlsZU1lbnVTZWxlY3Rpb247XG59XG5cbi8qKlxuICogVGhlIHNlbGVjdGlvbiBhIGZpbGUgbWVudSB3YXMgcmFpc2VkIG9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGVib29rTmF2aWdhdG9yRmlsZU1lbnVTZWxlY3Rpb24ge1xuICAvKipcbiAgICogRXZlcnkgc2VsZWN0ZWQgZmlsZSwgd2hpY2ggZm9yIGBzaW5nbGVgIGlzIGp1c3QgdGhlIHJpZ2h0LWNsaWNrZWQgb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZXM6IHJlYWRvbmx5IFRGaWxlW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb25lIGZpbGUgb3Igc2V2ZXJhbCBhcmUgc2VsZWN0ZWQuXG4gICAqL1xuICByZWFkb25seSBtb2RlOiBOb3RlYm9va05hdmlnYXRvckZpbGVNZW51U2VsZWN0aW9uTW9kZTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGEgZmlsZSBtZW51IGNvdmVycyBvbmUgZmlsZSBvciBhIG11bHRpLXNlbGVjdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgTm90ZWJvb2tOYXZpZ2F0b3JGaWxlTWVudVNlbGVjdGlvbk1vZGUgPSAnbXVsdGlwbGUnIHwgJ3NpbmdsZSc7XG5cbi8qKlxuICogV2hhdCBgbWVudXMucmVnaXN0ZXJGb2xkZXJNZW51YCBoYW5kcyBhIHN1YnNjcmliZXIgd2hlbiBhIEZPTERFUiBpcyByaWdodC1jbGlja2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGVib29rTmF2aWdhdG9yRm9sZGVyTWVudUNvbnRleHQgZXh0ZW5kcyBOb3RlYm9va05hdmlnYXRvck1lbnVDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgdGhhdCB3YXMgcmlnaHQtY2xpY2tlZC5cbiAgICovXG4gIHJlYWRvbmx5IGZvbGRlcjogVEZvbGRlcjtcbn1cblxuLyoqXG4gKiBXaGF0IGV2ZXJ5IE5vdGVib29rIE5hdmlnYXRvciBtZW51IGNvbnRleHQgaGFzIGluIGNvbW1vbjogYSB3YXkgdG8gYWRkIGFuIGl0ZW0sIGFuZCBub3RoaW5nIGVsc2UuXG4gKlxuICogVGhlIGFic2VuY2Ugb2YgYSBgTWVudWAgaXMgdGhlIHdob2xlIHNoYXBlIG9mIHRoZSBpbnRlZ3JhdGlvbiBwcm9ibGVtIFx1MjAxNCBjb21tYW5kIGhhbmRsZXJzIHdyaXRlIGludG9cbiAqIGEgYE1lbnVgLCBzbyBzb21ldGhpbmcgaGFzIHRvIHNpdCBiZXR3ZWVuIHRoZW0gYW5kIHRoaXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90ZWJvb2tOYXZpZ2F0b3JNZW51Q29udGV4dCB7XG4gIC8qKlxuICAgKiBBZGRzIGFuIGl0ZW0gdG8gdGhlIG1lbnUgTm90ZWJvb2sgTmF2aWdhdG9yIGlzIGJ1aWxkaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBSZWNlaXZlcyB0aGUgY3JlYXRlZCBpdGVtLCB0byBiZSBjb25maWd1cmVkIGluIHBsYWNlLlxuICAgKi9cbiAgYWRkSXRlbTogKGNhbGxiYWNrOiAoaXRlbTogTWVudUl0ZW0pID0+IHZvaWQpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogVW5yZWdpc3RlcnMgYSBtZW51IGV4dGVuc2lvbi4gTm90ZWJvb2sgTmF2aWdhdG9yIHJldHVybnMgYSBiYXJlIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGEgZGlzcG9zYWJsZSxcbiAqIHNvIGl0IGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYnJpZGdpbmcgY29tcG9uZW50J3MgYHJlZ2lzdGVyYC5cbiAqL1xuZXhwb3J0IHR5cGUgTm90ZWJvb2tOYXZpZ2F0b3JNZW51RGlzcG9zZSA9ICgpID0+IHZvaWQ7XG5cbi8qKlxuICogVGhlIGBtZW51c2AgbmFtZXNwYWNlIG9mIE5vdGVib29rIE5hdmlnYXRvcidzIEFQSS5cbiAqXG4gKiBPbmx5IHRoZSBmaWxlIGFuZCBmb2xkZXIgcmVnaXN0cmFycyBhcmUgZGVjbGFyZWQ6IHRoZSB0YWcgYW5kIHByb3BlcnR5IHJlZ2lzdHJhcnMgZXh0ZW5kIG1lbnVzXG4gKiByYWlzZWQgb24gdGhpbmdzIGEgZmlsZS9mb2xkZXIgY29tbWFuZCBoYW5kbGVyIGhhcyBubyBjb3VudGVycGFydCBmb3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90ZWJvb2tOYXZpZ2F0b3JNZW51cyB7XG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBjb250cmlidXRvciB0byB0aGUgZmlsZSBjb250ZXh0IG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIEludm9rZWQgd2hpbGUgdGhlIG1lbnUgaXMgYmVpbmcgYnVpbHQuXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCB1bnJlZ2lzdGVycyB0aGUgY29udHJpYnV0b3IuXG4gICAqL1xuICByZWdpc3RlckZpbGVNZW51OiAoY2FsbGJhY2s6IChjb250ZXh0OiBOb3RlYm9va05hdmlnYXRvckZpbGVNZW51Q29udGV4dCkgPT4gdm9pZCkgPT4gTm90ZWJvb2tOYXZpZ2F0b3JNZW51RGlzcG9zZTtcblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY29udHJpYnV0b3IgdG8gdGhlIGZvbGRlciBjb250ZXh0IG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIEludm9rZWQgd2hpbGUgdGhlIG1lbnUgaXMgYmVpbmcgYnVpbHQuXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCB1bnJlZ2lzdGVycyB0aGUgY29udHJpYnV0b3IuXG4gICAqL1xuICByZWdpc3RlckZvbGRlck1lbnU6IChjYWxsYmFjazogKGNvbnRleHQ6IE5vdGVib29rTmF2aWdhdG9yRm9sZGVyTWVudUNvbnRleHQpID0+IHZvaWQpID0+IE5vdGVib29rTmF2aWdhdG9yTWVudURpc3Bvc2U7XG59XG5cbi8qKlxuICogVGhlIGBzb3VyY2VgIGhhbmRlZCB0byB0aGUgbWVudSBldmVudCBoYW5kbGVycyBmb3IgYSBOb3RlYm9vayBOYXZpZ2F0b3IgbWVudS5cbiAqXG4gKiBPYnNpZGlhbidzIG93biBGaWxlIEV4cGxvcmVyIHNlbmRzIGBmaWxlLWV4cGxvcmVyLWNvbnRleHQtbWVudWA7IG5vdGhpbmcgaW4gdGhpcyBsaWJyYXJ5IGdhdGVzIG9uXG4gKiB0aGUgdmFsdWUsIGJ1dCB0aGUgaGFuZGxlcnMgYXJlIGNvbnRyYWN0ZWQgdG8gcmVjZWl2ZSBvbmUsIGFuZCBhIGRpc3RpbmN0IHN0cmluZyBpcyB3aGF0IG1ha2VzIGFcbiAqIGhhbmRsZXIgYWJsZSB0byB0ZWxsIHRoZSB0d28gc3VyZmFjZXMgYXBhcnQuXG4gKi9cbmV4cG9ydCBjb25zdCBOT1RFQk9PS19OQVZJR0FUT1JfTUVOVV9TT1VSQ0UgPSAnbm90ZWJvb2stbmF2aWdhdG9yLWNvbnRleHQtbWVudSc7XG5cbi8qKlxuICogTm90ZWJvb2sgTmF2aWdhdG9yJ3MgcGx1Z2luIGlkLCBhcyBpdHMgbWFuaWZlc3QgZGVjbGFyZXMgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBOT1RFQk9PS19OQVZJR0FUT1JfUExVR0lOX0lEID0gJ25vdGVib29rLW5hdmlnYXRvcic7XG5cbi8qKlxuICogR2V0cyBOb3RlYm9vayBOYXZpZ2F0b3IncyBBUEksIHdoZW4gaXQgaXMgaW5zdGFsbGVkLCBlbmFibGVkIGFuZCBuZXcgZW5vdWdoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgQVBJLCBvciBgbnVsbGAgd2hlbiBOb3RlYm9vayBOYXZpZ2F0b3IgaXMgbm90IHRoZXJlIHRvIHRhbGsgdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTm90ZWJvb2tOYXZpZ2F0b3JBcGkoYXBwOiBBcHApOiBOb3RlYm9va05hdmlnYXRvckFwaSB8IG51bGwge1xuICBjb25zdCBwbHVnaW4gPSBhcHAucGx1Z2lucy5nZXRQbHVnaW4oTk9URUJPT0tfTkFWSUdBVE9SX1BMVUdJTl9JRCk7XG4gIGlmICghcGx1Z2luIHx8ICEoJ2FwaScgaW4gcGx1Z2luKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgYXBpOiB1bmtub3duID0gcGx1Z2luLmFwaTtcbiAgcmV0dXJuIGlzTm90ZWJvb2tOYXZpZ2F0b3JBcGkoYXBpKSA/IGFwaSA6IG51bGw7XG59XG5cbi8qKlxuICogQ2hlY2tzIHRoYXQgYSB2YWx1ZSBpcyBOb3RlYm9vayBOYXZpZ2F0b3IncyBBUEksIGJ5IHRoZSBtZW1iZXJzIHRoaXMgbGlicmFyeSBhY3R1YWxseSBjYWxscy5cbiAqXG4gKiBBIHByZWRpY2F0ZSByYXRoZXIgdGhhbiBhIGNhc3Qgb24gcHVycG9zZTogYGFwaWAgaXMgbm90IHBhcnQgb2YgT2JzaWRpYW4ncyBgUGx1Z2luYCB0eXBlLCBzbyB0aGVcbiAqIHZhbHVlIGFycml2ZXMgYXMgYHVua25vd25gIGFuZCB0aGUgb25seSBob25lc3Qgd2F5IHRvIHR5cGUgaXQgaXMgdG8gVkVSSUZZIGl0LiBBIE5vdGVib29rIE5hdmlnYXRvclxuICogb2xkIGVub3VnaCB0byBwcmVkYXRlIHRoZSBtZW51cyBuYW1lc3BhY2UsIG9yIGEgZnV0dXJlIG9uZSB0aGF0IHJlbmFtZXMgaXQsIHRoZXJlZm9yZSByZWFkcyBhc1xuICogXCJubyBBUElcIiBhbmQgdGhlIGludGVncmF0aW9uIHN0YXlzIGRvcm1hbnQgaW5zdGVhZCBvZiB0aHJvd2luZyBhdCBtZW51IHRpbWUuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIGNhbmRpZGF0ZSBgYXBpYCBvYmplY3QuXG4gKiBAcmV0dXJucyBXaGV0aGVyIGl0IGNhcnJpZXMgYm90aCBtZW51IHJlZ2lzdHJhcnMuXG4gKi9cbmZ1bmN0aW9uIGlzTm90ZWJvb2tOYXZpZ2F0b3JBcGkodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBOb3RlYm9va05hdmlnYXRvckFwaSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlID09PSBudWxsIHx8ICEoJ21lbnVzJyBpbiB2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBtZW51czogdW5rbm93biA9IHZhbHVlLm1lbnVzO1xuICByZXR1cm4gdHlwZW9mIG1lbnVzID09PSAnb2JqZWN0JyAmJiBtZW51cyAhPT0gbnVsbFxuICAgICYmICdyZWdpc3RlckZpbGVNZW51JyBpbiBtZW51cyAmJiB0eXBlb2YgbWVudXMucmVnaXN0ZXJGaWxlTWVudSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICYmICdyZWdpc3RlckZvbGRlck1lbnUnIGluIG1lbnVzICYmIHR5cGVvZiBtZW51cy5yZWdpc3RlckZvbGRlck1lbnUgPT09ICdmdW5jdGlvbic7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlJTyxNQUFNLGlDQUFpQztBQUt2QyxNQUFNLCtCQUErQjtBQVFyQyxTQUFTLDRCQUE0QixLQUF1QztBQUNqRixRQUFNLFNBQVMsSUFBSSxRQUFRLFVBQVUsNEJBQTRCO0FBQ2pFLE1BQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxTQUFTO0FBQ2pDLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxNQUFlLE9BQU87QUFDNUIsU0FBTyx1QkFBdUIsR0FBRyxJQUFJLE1BQU07QUFDN0M7QUFhQSxTQUFTLHVCQUF1QixPQUErQztBQUM3RSxNQUFJLE9BQU8sVUFBVSxZQUFZLFVBQVUsUUFBUSxFQUFFLFdBQVcsUUFBUTtBQUN0RSxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sUUFBaUIsTUFBTTtBQUM3QixTQUFPLE9BQU8sVUFBVSxZQUFZLFVBQVUsUUFDekMsc0JBQXNCLFNBQVMsT0FBTyxNQUFNLHFCQUFxQixjQUNqRSx3QkFBd0IsU0FBUyxPQUFPLE1BQU0sdUJBQXVCO0FBQzVFOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25vdGVib29rLW5hdmlnYXRvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBzbGljZSBvZiBgTm90ZWJvb2sgTmF2aWdhdG9yYCdzIHB1YmxpYyBBUEkgdGhpcyBsaWJyYXJ5IHRhbGtzIHRvLCBhbmQgdGhlIHJ1bnRpbWUgbmFycm93aW5nIHRoYXRcbiAqIGdldHMgaG9sZCBvZiBpdC5cbiAqXG4gKiAqKmBOb3RlYm9vayBOYXZpZ2F0b3JgIGRyYXdzIGl0cyBvd24gZmlsZSB0cmVlLCBzbyBpdCBuZXZlciByYWlzZXMgT2JzaWRpYW4ncyBgZmlsZS1tZW51YCAvXG4gKiBgZmlsZXMtbWVudWAgd29ya3NwYWNlIGV2ZW50cyoqIFx1MjAxNCB3aGljaCBpcyB3aHkgYSBwbHVnaW4ncyBjb250ZXh0LW1lbnUgaXRlbXMgc2ltcGx5IGRpc2FwcGVhciBmb3JcbiAqIGFueW9uZSBicm93c2luZyB0aHJvdWdoIGl0LiBXaGF0IGl0IG9mZmVycyBpbnN0ZWFkIGlzIGEgZG9jdW1lbnRlZCBleHRlbnNpb24gQVBJXG4gKiAoYGRvY3MvYXBpLXJlZmVyZW5jZS5tZGAgKyBgc3JjL2FwaS9wdWJsaWMvbm90ZWJvb2stbmF2aWdhdG9yLmQudHNgIGluIGBqb2hhbnNhbi9ub3RlYm9vay1uYXZpZ2F0b3JgLFxuICogQVBJIDIuMC4wKSwgcmVhY2hhYmxlIGF0IHJ1bnRpbWUgYXMgYGFwcC5wbHVnaW5zLmdldFBsdWdpbignbm90ZWJvb2stbmF2aWdhdG9yJykuYXBpYC5cbiAqXG4gKiBUaGUgdHlwZXMgYmVsb3cgYXJlIERFQ0xBUkVEIEhFUkUgcmF0aGVyIHRoYW4gaW1wb3J0ZWQ6IGBOb3RlYm9vayBOYXZpZ2F0b3JgIHNoaXBzIGl0cyBgLmQudHNgIGZvclxuICogZG93bmxvYWQsIG5vdCBhcyBhbiBucG0gcGFja2FnZSwgYW5kIGRlcGVuZGluZyBvbiBpdCB3b3VsZCB0dXJuIGFuIG9wdGlvbmFsIGludGVncmF0aW9uIGludG8gYVxuICogYnVpbGQtdGltZSBkZXBlbmRlbmN5LiBUaGV5IGFyZSBkZWxpYmVyYXRlbHkgdGhlIG5hcnJvd2VzdCBzaGFwZSB0aGlzIGxpYnJhcnkgdXNlcyBcdTIwMTQgdGhlIEFQSSBhbHNvXG4gKiBjYXJyaWVzIGBtZXRhZGF0YWAsIGBuYXZpZ2F0aW9uYCwgYHNlbGVjdGlvbmAsIGB0YWdDb2xsZWN0aW9uc2AsIGBwcm9wZXJ0eU5vZGVzYCBhbmQgYW4gZXZlbnQgYnVzLFxuICogbm9uZSBvZiB3aGljaCBhcHBseSB0byBhIGZpbGUvZm9sZGVyIGNvbW1hbmQgc3VyZmFjZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgTWVudUl0ZW0sXG4gIFRGaWxlLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBgTm90ZWJvb2sgTmF2aWdhdG9yYCdzIHB1YmxpYyBBUEkgb2JqZWN0LCBuYXJyb3dlZCB0byB3aGF0IHRoaXMgbGlicmFyeSB1c2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGVib29rTmF2aWdhdG9yQXBpIHtcbiAgLyoqXG4gICAqIFRoZSBtZW51LWV4dGVuc2lvbiBuYW1lc3BhY2UuXG4gICAqL1xuICByZWFkb25seSBtZW51czogTm90ZWJvb2tOYXZpZ2F0b3JNZW51cztcbn1cblxuLyoqXG4gKiBXaGF0IGBtZW51cy5yZWdpc3RlckZpbGVNZW51YCBoYW5kcyBhIHN1YnNjcmliZXIgd2hlbiBhIEZJTEUgaXMgcmlnaHQtY2xpY2tlZC5cbiAqXG4gKiBUaGVyZSBpcyBubyBgTWVudWAgaGVyZSBcdTIwMTQgYW4gaXRlbSBpcyBjb250cmlidXRlZCB0aHJvdWdoIGBhZGRJdGVtYCBhbG9uZSwgd2hpY2ggaXMgd2h5IHRoZVxuICogZmlsZS9maWxlcyBtZW51IGhhbmRsZXJzIGNhbm5vdCBzaW1wbHkgYmUgZm9yd2FyZGVkIHRvIGl0IGFuZCBoYXZlIHRvIGJlIGJyaWRnZWQgKHNlZVxuICogYGNvbXBvbmVudHMvbm90ZWJvb2stbmF2aWdhdG9yLW1lbnUtZXZlbnQtcmVnaXN0cmFyLWNvbXBvbmVudC50c2ApLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGVib29rTmF2aWdhdG9yRmlsZU1lbnVDb250ZXh0IGV4dGVuZHMgTm90ZWJvb2tOYXZpZ2F0b3JNZW51Q29udGV4dCB7XG4gIC8qKlxuICAgKiBUaGUgZmlsZSB0aGF0IHdhcyByaWdodC1jbGlja2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZTogVEZpbGU7XG5cbiAgLyoqXG4gICAqIFdoYXQgdGhlIHRyZWUgaGFkIHNlbGVjdGVkIHdoZW4gdGhlIG1lbnUgd2FzIHJhaXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNlbGVjdGlvbjogTm90ZWJvb2tOYXZpZ2F0b3JGaWxlTWVudVNlbGVjdGlvbjtcbn1cblxuLyoqXG4gKiBUaGUgc2VsZWN0aW9uIGEgZmlsZSBtZW51IHdhcyByYWlzZWQgb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90ZWJvb2tOYXZpZ2F0b3JGaWxlTWVudVNlbGVjdGlvbiB7XG4gIC8qKlxuICAgKiBFdmVyeSBzZWxlY3RlZCBmaWxlLCB3aGljaCBmb3IgYHNpbmdsZWAgaXMganVzdCB0aGUgcmlnaHQtY2xpY2tlZCBvbmUuXG4gICAqL1xuICByZWFkb25seSBmaWxlczogcmVhZG9ubHkgVEZpbGVbXTtcblxuICAvKipcbiAgICogV2hldGhlciBvbmUgZmlsZSBvciBzZXZlcmFsIGFyZSBzZWxlY3RlZC5cbiAgICovXG4gIHJlYWRvbmx5IG1vZGU6IE5vdGVib29rTmF2aWdhdG9yRmlsZU1lbnVTZWxlY3Rpb25Nb2RlO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgYSBmaWxlIG1lbnUgY292ZXJzIG9uZSBmaWxlIG9yIGEgbXVsdGktc2VsZWN0aW9uLlxuICovXG5leHBvcnQgdHlwZSBOb3RlYm9va05hdmlnYXRvckZpbGVNZW51U2VsZWN0aW9uTW9kZSA9ICdtdWx0aXBsZScgfCAnc2luZ2xlJztcblxuLyoqXG4gKiBXaGF0IGBtZW51cy5yZWdpc3RlckZvbGRlck1lbnVgIGhhbmRzIGEgc3Vic2NyaWJlciB3aGVuIGEgRk9MREVSIGlzIHJpZ2h0LWNsaWNrZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90ZWJvb2tOYXZpZ2F0b3JGb2xkZXJNZW51Q29udGV4dCBleHRlbmRzIE5vdGVib29rTmF2aWdhdG9yTWVudUNvbnRleHQge1xuICAvKipcbiAgICogVGhlIGZvbGRlciB0aGF0IHdhcyByaWdodC1jbGlja2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyOiBURm9sZGVyO1xufVxuXG4vKipcbiAqIFdoYXQgZXZlcnkgYE5vdGVib29rIE5hdmlnYXRvcmAgbWVudSBjb250ZXh0IGhhcyBpbiBjb21tb246IGEgd2F5IHRvIGFkZCBhbiBpdGVtLCBhbmQgbm90aGluZyBlbHNlLlxuICpcbiAqIFRoZSBhYnNlbmNlIG9mIGEgYE1lbnVgIGlzIHRoZSB3aG9sZSBzaGFwZSBvZiB0aGUgaW50ZWdyYXRpb24gcHJvYmxlbSBcdTIwMTQgY29tbWFuZCBoYW5kbGVycyB3cml0ZSBpbnRvXG4gKiBhIGBNZW51YCwgc28gc29tZXRoaW5nIGhhcyB0byBzaXQgYmV0d2VlbiB0aGVtIGFuZCB0aGlzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGVib29rTmF2aWdhdG9yTWVudUNvbnRleHQge1xuICAvKipcbiAgICogQWRkcyBhbiBpdGVtIHRvIHRoZSBtZW51IGBOb3RlYm9vayBOYXZpZ2F0b3JgIGlzIGJ1aWxkaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBSZWNlaXZlcyB0aGUgY3JlYXRlZCBpdGVtLCB0byBiZSBjb25maWd1cmVkIGluIHBsYWNlLlxuICAgKi9cbiAgYWRkSXRlbTogKGNhbGxiYWNrOiAoaXRlbTogTWVudUl0ZW0pID0+IHZvaWQpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogVW5yZWdpc3RlcnMgYSBtZW51IGV4dGVuc2lvbi4gYE5vdGVib29rIE5hdmlnYXRvcmAgcmV0dXJucyBhIGJhcmUgZnVuY3Rpb24gcmF0aGVyIHRoYW4gYSBkaXNwb3NhYmxlLFxuICogc28gaXQgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBicmlkZ2luZyBjb21wb25lbnQncyBgcmVnaXN0ZXJgLlxuICovXG5leHBvcnQgdHlwZSBOb3RlYm9va05hdmlnYXRvck1lbnVEaXNwb3NlID0gKCkgPT4gdm9pZDtcblxuLyoqXG4gKiBUaGUgYG1lbnVzYCBuYW1lc3BhY2Ugb2YgYE5vdGVib29rIE5hdmlnYXRvcmAncyBBUEkuXG4gKlxuICogT25seSB0aGUgZmlsZSBhbmQgZm9sZGVyIHJlZ2lzdHJhcnMgYXJlIGRlY2xhcmVkOiB0aGUgdGFnIGFuZCBwcm9wZXJ0eSByZWdpc3RyYXJzIGV4dGVuZCBtZW51c1xuICogcmFpc2VkIG9uIHRoaW5ncyBhIGZpbGUvZm9sZGVyIGNvbW1hbmQgaGFuZGxlciBoYXMgbm8gY291bnRlcnBhcnQgZm9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGVib29rTmF2aWdhdG9yTWVudXMge1xuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY29udHJpYnV0b3IgdG8gdGhlIGZpbGUgY29udGV4dCBtZW51LlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBJbnZva2VkIHdoaWxlIHRoZSBtZW51IGlzIGJlaW5nIGJ1aWx0LlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdW5yZWdpc3RlcnMgdGhlIGNvbnRyaWJ1dG9yLlxuICAgKi9cbiAgcmVnaXN0ZXJGaWxlTWVudTogKGNhbGxiYWNrOiAoY29udGV4dDogTm90ZWJvb2tOYXZpZ2F0b3JGaWxlTWVudUNvbnRleHQpID0+IHZvaWQpID0+IE5vdGVib29rTmF2aWdhdG9yTWVudURpc3Bvc2U7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNvbnRyaWJ1dG9yIHRvIHRoZSBmb2xkZXIgY29udGV4dCBtZW51LlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBJbnZva2VkIHdoaWxlIHRoZSBtZW51IGlzIGJlaW5nIGJ1aWx0LlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdW5yZWdpc3RlcnMgdGhlIGNvbnRyaWJ1dG9yLlxuICAgKi9cbiAgcmVnaXN0ZXJGb2xkZXJNZW51OiAoY2FsbGJhY2s6IChjb250ZXh0OiBOb3RlYm9va05hdmlnYXRvckZvbGRlck1lbnVDb250ZXh0KSA9PiB2b2lkKSA9PiBOb3RlYm9va05hdmlnYXRvck1lbnVEaXNwb3NlO1xufVxuXG4vKipcbiAqIFRoZSBgc291cmNlYCBoYW5kZWQgdG8gdGhlIG1lbnUgZXZlbnQgaGFuZGxlcnMgZm9yIGEgYE5vdGVib29rIE5hdmlnYXRvcmAgbWVudS5cbiAqXG4gKiBPYnNpZGlhbidzIG93biBGaWxlIEV4cGxvcmVyIHNlbmRzIGBmaWxlLWV4cGxvcmVyLWNvbnRleHQtbWVudWA7IG5vdGhpbmcgaW4gdGhpcyBsaWJyYXJ5IGdhdGVzIG9uXG4gKiB0aGUgdmFsdWUsIGJ1dCB0aGUgaGFuZGxlcnMgYXJlIGNvbnRyYWN0ZWQgdG8gcmVjZWl2ZSBvbmUsIGFuZCBhIGRpc3RpbmN0IHN0cmluZyBpcyB3aGF0IG1ha2VzIGFcbiAqIGhhbmRsZXIgYWJsZSB0byB0ZWxsIHRoZSB0d28gc3VyZmFjZXMgYXBhcnQuXG4gKi9cbmV4cG9ydCBjb25zdCBOT1RFQk9PS19OQVZJR0FUT1JfTUVOVV9TT1VSQ0UgPSAnbm90ZWJvb2stbmF2aWdhdG9yLWNvbnRleHQtbWVudSc7XG5cbi8qKlxuICogYE5vdGVib29rIE5hdmlnYXRvcmAncyBwbHVnaW4gaWQsIGFzIGl0cyBtYW5pZmVzdCBkZWNsYXJlcyBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE5PVEVCT09LX05BVklHQVRPUl9QTFVHSU5fSUQgPSAnbm90ZWJvb2stbmF2aWdhdG9yJztcblxuLyoqXG4gKiBHZXRzIGBOb3RlYm9vayBOYXZpZ2F0b3JgJ3MgQVBJLCB3aGVuIGl0IGlzIGluc3RhbGxlZCwgZW5hYmxlZCBhbmQgbmV3IGVub3VnaC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIEFQSSwgb3IgYG51bGxgIHdoZW4gYE5vdGVib29rIE5hdmlnYXRvcmAgaXMgbm90IHRoZXJlIHRvIHRhbGsgdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTm90ZWJvb2tOYXZpZ2F0b3JBcGkoYXBwOiBBcHApOiBOb3RlYm9va05hdmlnYXRvckFwaSB8IG51bGwge1xuICBjb25zdCBwbHVnaW4gPSBhcHAucGx1Z2lucy5nZXRQbHVnaW4oTk9URUJPT0tfTkFWSUdBVE9SX1BMVUdJTl9JRCk7XG4gIGlmICghcGx1Z2luIHx8ICEoJ2FwaScgaW4gcGx1Z2luKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgYXBpOiB1bmtub3duID0gcGx1Z2luLmFwaTtcbiAgcmV0dXJuIGlzTm90ZWJvb2tOYXZpZ2F0b3JBcGkoYXBpKSA/IGFwaSA6IG51bGw7XG59XG5cbi8qKlxuICogQ2hlY2tzIHRoYXQgYSB2YWx1ZSBpcyBgTm90ZWJvb2sgTmF2aWdhdG9yYCdzIEFQSSwgYnkgdGhlIG1lbWJlcnMgdGhpcyBsaWJyYXJ5IGFjdHVhbGx5IGNhbGxzLlxuICpcbiAqIEEgcHJlZGljYXRlIHJhdGhlciB0aGFuIGEgY2FzdCBvbiBwdXJwb3NlOiBgYXBpYCBpcyBub3QgcGFydCBvZiBPYnNpZGlhbidzIGBQbHVnaW5gIHR5cGUsIHNvIHRoZVxuICogdmFsdWUgYXJyaXZlcyBhcyBgdW5rbm93bmAgYW5kIHRoZSBvbmx5IGhvbmVzdCB3YXkgdG8gdHlwZSBpdCBpcyB0byBWRVJJRlkgaXQuIEEgYE5vdGVib29rIE5hdmlnYXRvcmBcbiAqIG9sZCBlbm91Z2ggdG8gcHJlZGF0ZSB0aGUgbWVudXMgbmFtZXNwYWNlLCBvciBhIGZ1dHVyZSBvbmUgdGhhdCByZW5hbWVzIGl0LCB0aGVyZWZvcmUgcmVhZHMgYXNcbiAqIFwibm8gQVBJXCIgYW5kIHRoZSBpbnRlZ3JhdGlvbiBzdGF5cyBkb3JtYW50IGluc3RlYWQgb2YgdGhyb3dpbmcgYXQgbWVudSB0aW1lLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBjYW5kaWRhdGUgYGFwaWAgb2JqZWN0LlxuICogQHJldHVybnMgV2hldGhlciBpdCBjYXJyaWVzIGJvdGggbWVudSByZWdpc3RyYXJzLlxuICovXG5mdW5jdGlvbiBpc05vdGVib29rTmF2aWdhdG9yQXBpKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgTm90ZWJvb2tOYXZpZ2F0b3JBcGkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCB8fCAhKCdtZW51cycgaW4gdmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgbWVudXM6IHVua25vd24gPSB2YWx1ZS5tZW51cztcbiAgcmV0dXJuIHR5cGVvZiBtZW51cyA9PT0gJ29iamVjdCcgJiYgbWVudXMgIT09IG51bGxcbiAgICAmJiAncmVnaXN0ZXJGaWxlTWVudScgaW4gbWVudXMgJiYgdHlwZW9mIG1lbnVzLnJlZ2lzdGVyRmlsZU1lbnUgPT09ICdmdW5jdGlvbidcbiAgICAmJiAncmVnaXN0ZXJGb2xkZXJNZW51JyBpbiBtZW51cyAmJiB0eXBlb2YgbWVudXMucmVnaXN0ZXJGb2xkZXJNZW51ID09PSAnZnVuY3Rpb24nO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5SU8sTUFBTSxpQ0FBaUM7QUFLdkMsTUFBTSwrQkFBK0I7QUFRckMsU0FBUyw0QkFBNEIsS0FBdUM7QUFDakYsUUFBTSxTQUFTLElBQUksUUFBUSxVQUFVLDRCQUE0QjtBQUNqRSxNQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsU0FBUztBQUNqQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sTUFBZSxPQUFPO0FBQzVCLFNBQU8sdUJBQXVCLEdBQUcsSUFBSSxNQUFNO0FBQzdDO0FBYUEsU0FBUyx1QkFBdUIsT0FBK0M7QUFDN0UsTUFBSSxPQUFPLFVBQVUsWUFBWSxVQUFVLFFBQVEsRUFBRSxXQUFXLFFBQVE7QUFDdEUsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFFBQWlCLE1BQU07QUFDN0IsU0FBTyxPQUFPLFVBQVUsWUFBWSxVQUFVLFFBQ3pDLHNCQUFzQixTQUFTLE9BQU8sTUFBTSxxQkFBcUIsY0FDakUsd0JBQXdCLFNBQVMsT0FBTyxNQUFNLHVCQUF1QjtBQUM1RTsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @file
|
|
4
4
|
*
|
|
5
|
-
* The slice of Notebook Navigator's public API this library talks to, and the runtime narrowing that
|
|
5
|
+
* The slice of `Notebook Navigator`'s public API this library talks to, and the runtime narrowing that
|
|
6
6
|
* gets hold of it.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
8
|
+
* **`Notebook Navigator` draws its own file tree, so it never raises Obsidian's `file-menu` /
|
|
9
9
|
* `files-menu` workspace events** — which is why a plugin's context-menu items simply disappear for
|
|
10
10
|
* anyone browsing through it. What it offers instead is a documented extension API
|
|
11
11
|
* (`docs/api-reference.md` + `src/api/public/notebook-navigator.d.ts` in `johansan/notebook-navigator`,
|
|
12
12
|
* API 2.0.0), reachable at runtime as `app.plugins.getPlugin('notebook-navigator').api`.
|
|
13
13
|
*
|
|
14
|
-
* The types below are DECLARED HERE rather than imported: Notebook Navigator ships its `.d.ts` for
|
|
14
|
+
* The types below are DECLARED HERE rather than imported: `Notebook Navigator` ships its `.d.ts` for
|
|
15
15
|
* download, not as an npm package, and depending on it would turn an optional integration into a
|
|
16
16
|
* build-time dependency. They are deliberately the narrowest shape this library uses — the API also
|
|
17
17
|
* carries `metadata`, `navigation`, `selection`, `tagCollections`, `propertyNodes` and an event bus,
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import type { App, MenuItem, TFile, TFolder } from 'obsidian' with { 'resolution-mode': 'import' };
|
|
21
21
|
/**
|
|
22
|
-
* Notebook Navigator's public API object, narrowed to what this library uses.
|
|
22
|
+
* `Notebook Navigator`'s public API object, narrowed to what this library uses.
|
|
23
23
|
*/
|
|
24
24
|
export interface NotebookNavigatorApi {
|
|
25
25
|
/**
|
|
@@ -71,26 +71,26 @@ export interface NotebookNavigatorFolderMenuContext extends NotebookNavigatorMen
|
|
|
71
71
|
readonly folder: TFolder;
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
74
|
-
* What every Notebook Navigator menu context has in common: a way to add an item, and nothing else.
|
|
74
|
+
* What every `Notebook Navigator` menu context has in common: a way to add an item, and nothing else.
|
|
75
75
|
*
|
|
76
76
|
* The absence of a `Menu` is the whole shape of the integration problem — command handlers write into
|
|
77
77
|
* a `Menu`, so something has to sit between them and this.
|
|
78
78
|
*/
|
|
79
79
|
export interface NotebookNavigatorMenuContext {
|
|
80
80
|
/**
|
|
81
|
-
* Adds an item to the menu Notebook Navigator is building.
|
|
81
|
+
* Adds an item to the menu `Notebook Navigator` is building.
|
|
82
82
|
*
|
|
83
83
|
* @param callback - Receives the created item, to be configured in place.
|
|
84
84
|
*/
|
|
85
85
|
addItem: (callback: (item: MenuItem) => void) => void;
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
88
|
-
* Unregisters a menu extension. Notebook Navigator returns a bare function rather than a disposable,
|
|
88
|
+
* Unregisters a menu extension. `Notebook Navigator` returns a bare function rather than a disposable,
|
|
89
89
|
* so it is registered with the bridging component's `register`.
|
|
90
90
|
*/
|
|
91
91
|
export type NotebookNavigatorMenuDispose = () => void;
|
|
92
92
|
/**
|
|
93
|
-
* The `menus` namespace of Notebook Navigator's API.
|
|
93
|
+
* The `menus` namespace of `Notebook Navigator`'s API.
|
|
94
94
|
*
|
|
95
95
|
* Only the file and folder registrars are declared: the tag and property registrars extend menus
|
|
96
96
|
* raised on things a file/folder command handler has no counterpart for.
|
|
@@ -112,7 +112,7 @@ export interface NotebookNavigatorMenus {
|
|
|
112
112
|
registerFolderMenu: (callback: (context: NotebookNavigatorFolderMenuContext) => void) => NotebookNavigatorMenuDispose;
|
|
113
113
|
}
|
|
114
114
|
/**
|
|
115
|
-
* The `source` handed to the menu event handlers for a Notebook Navigator menu.
|
|
115
|
+
* The `source` handed to the menu event handlers for a `Notebook Navigator` menu.
|
|
116
116
|
*
|
|
117
117
|
* Obsidian's own File Explorer sends `file-explorer-context-menu`; nothing in this library gates on
|
|
118
118
|
* the value, but the handlers are contracted to receive one, and a distinct string is what makes a
|
|
@@ -120,13 +120,13 @@ export interface NotebookNavigatorMenus {
|
|
|
120
120
|
*/
|
|
121
121
|
export declare const NOTEBOOK_NAVIGATOR_MENU_SOURCE = "notebook-navigator-context-menu";
|
|
122
122
|
/**
|
|
123
|
-
* Notebook Navigator's plugin id, as its manifest declares it.
|
|
123
|
+
* `Notebook Navigator`'s plugin id, as its manifest declares it.
|
|
124
124
|
*/
|
|
125
125
|
export declare const NOTEBOOK_NAVIGATOR_PLUGIN_ID = "notebook-navigator";
|
|
126
126
|
/**
|
|
127
|
-
* Gets Notebook Navigator's API, when it is installed, enabled and new enough.
|
|
127
|
+
* Gets `Notebook Navigator`'s API, when it is installed, enabled and new enough.
|
|
128
128
|
*
|
|
129
129
|
* @param app - The application instance.
|
|
130
|
-
* @returns The API, or `null` when Notebook Navigator is not there to talk to.
|
|
130
|
+
* @returns The API, or `null` when `Notebook Navigator` is not there to talk to.
|
|
131
131
|
*/
|
|
132
132
|
export declare function resolveNotebookNavigatorApi(app: App): NotebookNavigatorApi | null;
|