obsidian-dev-utils 3.40.0 → 3.42.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/CHANGELOG.md +8 -0
- package/dist/lib/obsidian/FileChange.cjs +1 -1
- package/dist/lib/obsidian/FileManager.cjs +1 -1
- package/dist/lib/obsidian/Link.cjs +3 -16
- package/dist/lib/obsidian/MetadataCache.cjs +3 -10
- package/dist/lib/obsidian/Reference.cjs +66 -0
- package/dist/lib/obsidian/Reference.d.ts +17 -0
- package/dist/lib/obsidian/RenameDeleteHandler.cjs +9 -2
- package/dist/lib/obsidian/index.cjs +4 -1
- package/dist/lib/obsidian/index.d.ts +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -139,4 +139,4 @@ async function applyFileChanges(app, pathOrFile, changesProvider, retryOptions =
|
|
139
139
|
isContentChange,
|
140
140
|
isFrontmatterChange
|
141
141
|
});
|
142
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVDaGFuZ2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzWydwcm9jZXNzJ10gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XHJcblxyXG5pbXBvcnQgdHlwZSB7IFJldHJ5T3B0aW9ucyB9IGZyb20gJy4uL0FzeW5jLnRzJztcclxuaW1wb3J0IHtcclxuICBkZWVwRXF1YWwsXHJcbiAgZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZSxcclxuICBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlXHJcbn0gZnJvbSAnLi4vT2JqZWN0LnRzJztcclxuaW1wb3J0IHR5cGUgeyBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XHJcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xyXG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xyXG5pbXBvcnQgeyBnZXRQYXRoIH0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcclxuaW1wb3J0IHtcclxuICBwYXJzZUZyb250TWF0dGVyLFxyXG4gIHNldEZyb250TWF0dGVyXHJcbn0gZnJvbSAnLi9Gcm9udE1hdHRlci50cyc7XHJcbmltcG9ydCB7IHByb2Nlc3MgfSBmcm9tICcuL1ZhdWx0LnRzJztcclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRzIGEgZmlsZSBjaGFuZ2UgaW4gdGhlIFZhdWx0LlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBGaWxlQ2hhbmdlIHtcclxuICAvKipcclxuICAgKiBUaGUgb2xkIGNvbnRlbnQgdGhhdCB3aWxsIGJlIHJlcGxhY2VkLlxyXG4gICAqL1xyXG4gIG9sZENvbnRlbnQ6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIG5ldyBjb250ZW50IHRvIHJlcGxhY2UgdGhlIG9sZCBjb250ZW50LlxyXG4gICAqL1xyXG4gIG5ld0NvbnRlbnQ6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSBmcm9udG1hdHRlciBjaGFuZ2UgaW4gdGhlIFZhdWx0LlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBGcm9udG1hdHRlckNoYW5nZSBleHRlbmRzIEZpbGVDaGFuZ2Uge1xyXG4gIC8qKlxyXG4gICAqIFRoZSBrZXkgaW4gdGhlIGZyb250bWF0dGVyIHRvIHVzZSBmb3IgdGhlIGxpbmsuXHJcbiAgICovXHJcbiAgZnJvbnRNYXR0ZXJLZXk6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSBjb250ZW50IGJvZHkgY2hhbmdlIGluIHRoZSBWYXVsdC5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudENoYW5nZSBleHRlbmRzIEZpbGVDaGFuZ2Uge1xyXG4gIC8qKlxyXG4gICAgICogVGhlIHN0YXJ0IGluZGV4IG9mIHRoZSBjaGFuZ2UgaW4gdGhlIGZpbGUgY29udGVudC5cclxuICAgICAqL1xyXG4gIHN0YXJ0SW5kZXg6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICAgKiBUaGUgZW5kIGluZGV4IG9mIHRoZSBjaGFuZ2UgaW4gdGhlIGZpbGUgY29udGVudC5cclxuICAgICAqL1xyXG4gIGVuZEluZGV4OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGNvbnRlbnQgY2hhbmdlLlxyXG4gKlxyXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cclxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjb250ZW50IGNoYW5nZS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnRlbnRDaGFuZ2UoZmlsZUNoYW5nZTogRmlsZUNoYW5nZSk6IGZpbGVDaGFuZ2UgaXMgQ29udGVudENoYW5nZSB7XHJcbiAgcmV0dXJuIChmaWxlQ2hhbmdlIGFzIFBhcnRpYWw8Q29udGVudENoYW5nZT4pLnN0YXJ0SW5kZXggIT09IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgZnJvbnRtYXR0ZXIgY2hhbmdlLlxyXG4gKlxyXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cclxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBmcm9udG1hdHRlciBjaGFuZ2UuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9udG1hdHRlckNoYW5nZShmaWxlQ2hhbmdlOiBGaWxlQ2hhbmdlKTogZmlsZUNoYW5nZSBpcyBGcm9udG1hdHRlckNoYW5nZSB7XHJcbiAgcmV0dXJuIChmaWxlQ2hhbmdlIGFzIFBhcnRpYWw8RnJvbnRtYXR0ZXJDaGFuZ2U+KS5mcm9udE1hdHRlcktleSAhPT0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG4vKipcclxuICogQXBwbGllcyBhIHNlcmllcyBvZiBmaWxlIGNoYW5nZXMgdG8gdGhlIHNwZWNpZmllZCBmaWxlIG9yIHBhdGggd2l0aGluIHRoZSBhcHBsaWNhdGlvbi5cclxuICpcclxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZSB3aGVyZSB0aGUgZmlsZSBjaGFuZ2VzIHdpbGwgYmUgYXBwbGllZC5cclxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHdoaWNoIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBhcHBsaWVkLlxyXG4gKiBAcGFyYW0gY2hhbmdlc1Byb3ZpZGVyIC0gQSBwcm92aWRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2YgZmlsZSBjaGFuZ2VzIHRvIGFwcGx5LlxyXG4gKiBAcGFyYW0gcmV0cnlPcHRpb25zIC0gT3B0aW9uYWwgc2V0dGluZ3MgdGhhdCBkZXRlcm1pbmUgaG93IHRoZSBvcGVyYXRpb24gc2hvdWxkIHJldHJ5IG9uIGZhaWx1cmUuXHJcbiAqXHJcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgY2hhbmdlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGFwcGxpZWQuXHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBwbHlGaWxlQ2hhbmdlcyhhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgY2hhbmdlc1Byb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPEZpbGVDaGFuZ2VbXT4sIHJldHJ5T3B0aW9uczogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcclxuICBjb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlM6IFBhcnRpYWw8UmV0cnlPcHRpb25zPiA9IHsgdGltZW91dEluTWlsbGlzZWNvbmRzOiA2MDAwMCB9O1xyXG4gIGNvbnN0IG92ZXJyaWRkZW5PcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7IC4uLkRFRkFVTFRfUkVUUllfT1BUSU9OUywgLi4ucmV0cnlPcHRpb25zIH07XHJcbiAgYXdhaXQgcHJvY2VzcyhhcHAsIHBhdGhPckZpbGUsIGFzeW5jIChjb250ZW50KSA9PiB7XHJcbiAgICBsZXQgY2hhbmdlcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjaGFuZ2VzUHJvdmlkZXIpO1xyXG4gICAgY29uc3QgZnJvbnRNYXR0ZXIgPSBwYXJzZUZyb250TWF0dGVyKGNvbnRlbnQpO1xyXG5cclxuICAgIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcclxuICAgICAgaWYgKGlzQ29udGVudENoYW5nZShjaGFuZ2UpKSB7XHJcbiAgICAgICAgY29uc3QgYWN0dWFsQ29udGVudCA9IGNvbnRlbnQuc2xpY2UoY2hhbmdlLnN0YXJ0SW5kZXgsIGNoYW5nZS5lbmRJbmRleCk7XHJcbiAgICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0NvbnRlbnQgbWlzbWF0Y2gnLCB7XHJcbiAgICAgICAgICAgIHN0YXJ0SW5kZXg6IGNoYW5nZS5zdGFydEluZGV4LFxyXG4gICAgICAgICAgICBlbmRJbmRleDogY2hhbmdlLmVuZEluZGV4LFxyXG4gICAgICAgICAgICBwYXRoOiBnZXRQYXRoKHBhdGhPckZpbGUpLFxyXG4gICAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IGNoYW5nZS5vbGRDb250ZW50LFxyXG4gICAgICAgICAgICBhY3R1YWxDb250ZW50XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZShjaGFuZ2UpKSB7XHJcbiAgICAgICAgY29uc3QgYWN0dWFsQ29udGVudCA9IGdldE5lc3RlZFByb3BlcnR5VmFsdWUoZnJvbnRNYXR0ZXIsIGNoYW5nZS5mcm9udE1hdHRlcktleSk7XHJcbiAgICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0NvbnRlbnQgbWlzbWF0Y2gnLCB7XHJcbiAgICAgICAgICAgIHBhdGg6IGdldFBhdGgocGF0aE9yRmlsZSksXHJcbiAgICAgICAgICAgIGV4cGVjdGVkQ29udGVudDogY2hhbmdlLm9sZENvbnRlbnQsXHJcbiAgICAgICAgICAgIGFjdHVhbENvbnRlbnQsXHJcbiAgICAgICAgICAgIGZyb250TWF0dGVyS2V5OiBjaGFuZ2UuZnJvbnRNYXR0ZXJLZXlcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZXMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICBpZiAoaXNDb250ZW50Q2hhbmdlKGEpICYmIGlzQ29udGVudENoYW5nZShiKSkge1xyXG4gICAgICAgIHJldHVybiBhLnN0YXJ0SW5kZXggLSBiLnN0YXJ0SW5kZXg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlKGEpICYmIGlzRnJvbnRtYXR0ZXJDaGFuZ2UoYikpIHtcclxuICAgICAgICByZXR1cm4gYS5mcm9udE1hdHRlcktleS5sb2NhbGVDb21wYXJlKGIuZnJvbnRNYXR0ZXJLZXkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gaXNDb250ZW50Q2hhbmdlKGEpID8gLTEgOiAxO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gQlVHOiBodHRwczovL2ZvcnVtLm9ic2lkaWFuLm1kL3QvYnVnLWR1cGxpY2F0ZWQtbGlua3MtaW4tbWV0YWRhdGFjYWNoZS1pbnNpZGUtZm9vdG5vdGVzLzg1NTUxXHJcbiAgICBjaGFuZ2VzID0gY2hhbmdlcy5maWx0ZXIoKGNoYW5nZSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGNoYW5nZS5vbGRDb250ZW50ID09PSBjaGFuZ2UubmV3Q29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW5kZXggPT09IDApIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gIWRlZXBFcXVhbChjaGFuZ2UsIGNoYW5nZXNbaW5kZXggLSAxXSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGNoYW5nZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgY2hhbmdlID0gY2hhbmdlc1tpXTtcclxuICAgICAgaWYgKCFjaGFuZ2UpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBwcmV2aW91c0NoYW5nZSA9IGNoYW5nZXNbaSAtIDFdO1xyXG4gICAgICBpZiAoIXByZXZpb3VzQ2hhbmdlKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UocHJldmlvdXNDaGFuZ2UpICYmIGlzQ29udGVudENoYW5nZShjaGFuZ2UpICYmIHByZXZpb3VzQ2hhbmdlLmVuZEluZGV4ICYmIGNoYW5nZS5zdGFydEluZGV4ICYmIHByZXZpb3VzQ2hhbmdlLmVuZEluZGV4ID4gY2hhbmdlLnN0YXJ0SW5kZXgpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oJ092ZXJsYXBwaW5nIGNoYW5nZXMnLCB7XHJcbiAgICAgICAgICBwcmV2aW91c0NoYW5nZSxcclxuICAgICAgICAgIGNoYW5nZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG5ld0NvbnRlbnQgPSAnJztcclxuICAgIGxldCBsYXN0SW5kZXggPSAwO1xyXG4gICAgbGV0IGZyb250TWF0dGVyQ2hhbmdlZCA9IGZhbHNlO1xyXG5cclxuICAgIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcclxuICAgICAgaWYgKGlzQ29udGVudENoYW5nZShjaGFuZ2UpKSB7XHJcbiAgICAgICAgbmV3Q29udGVudCArPSBjb250ZW50LnNsaWNlKGxhc3RJbmRleCwgY2hhbmdlLnN0YXJ0SW5kZXgpO1xyXG4gICAgICAgIG5ld0NvbnRlbnQgKz0gY2hhbmdlLm5ld0NvbnRlbnQ7XHJcbiAgICAgICAgbGFzdEluZGV4ID0gY2hhbmdlLmVuZEluZGV4O1xyXG4gICAgICB9IGVsc2UgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2UoY2hhbmdlKSkge1xyXG4gICAgICAgIHNldE5lc3RlZFByb3BlcnR5VmFsdWUoZnJvbnRNYXR0ZXIsIGNoYW5nZS5mcm9udE1hdHRlcktleSwgY2hhbmdlLm5ld0NvbnRlbnQpO1xyXG4gICAgICAgIGZyb250TWF0dGVyQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZXdDb250ZW50ICs9IGNvbnRlbnQuc2xpY2UobGFzdEluZGV4KTtcclxuICAgIGlmIChmcm9udE1hdHRlckNoYW5nZWQpIHtcclxuICAgICAgbmV3Q29udGVudCA9IHNldEZyb250TWF0dGVyKG5ld0NvbnRlbnQsIGZyb250TWF0dGVyKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXdDb250ZW50O1xyXG4gIH0sIG92ZXJyaWRkZW5PcHRpb25zKTtcclxufVxyXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxvQkFJTztBQUVQLDJCQUE2QjtBQUU3Qix3QkFBd0I7QUFDeEIseUJBR087QUFDUCxtQkFBd0I7QUFyQnhCLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUFpRU8sU0FBUyxnQkFBZ0IsWUFBcUQ7QUFDbkYsU0FBUSxXQUFzQyxlQUFlO0FBQy9EO0FBUU8sU0FBUyxvQkFBb0IsWUFBeUQ7QUFDM0YsU0FBUSxXQUEwQyxtQkFBbUI7QUFDdkU7QUFZQSxlQUFzQixpQkFBaUIsS0FBVSxZQUF3QixpQkFBOEMsZUFBc0MsQ0FBQyxHQUFrQjtBQUM5SyxRQUFNLHdCQUErQyxFQUFFLHVCQUF1QixJQUFNO0FBQ3BGLFFBQU0sb0JBQTJDLEVBQUUsR0FBRyx1QkFBdUIsR0FBRyxhQUFhO0FBQzdGLFlBQU0sc0JBQVEsS0FBSyxZQUFZLE9BQU8sWUFBWTtBQUNoRCxRQUFJLFVBQVUsVUFBTSxtQ0FBYSxlQUFlO0FBQ2hELFVB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
|
142
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVDaGFuZ2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzWydwcm9jZXNzJ10gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHtcbiAgZGVlcEVxdWFsLFxuICBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlLFxuICBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlXG59IGZyb20gJy4uL09iamVjdC50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB7IGdldFBhdGggfSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgcGFyc2VGcm9udE1hdHRlcixcbiAgc2V0RnJvbnRNYXR0ZXJcbn0gZnJvbSAnLi9Gcm9udE1hdHRlci50cyc7XG5pbXBvcnQgeyBwcm9jZXNzIH0gZnJvbSAnLi9WYXVsdC50cyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGZpbGUgY2hhbmdlIGluIHRoZSBWYXVsdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIFRoZSBvbGQgY29udGVudCB0aGF0IHdpbGwgYmUgcmVwbGFjZWQuXG4gICAqL1xuICBvbGRDb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgY29udGVudCB0byByZXBsYWNlIHRoZSBvbGQgY29udGVudC5cbiAgICovXG4gIG5ld0NvbnRlbnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZnJvbnRtYXR0ZXIgY2hhbmdlIGluIHRoZSBWYXVsdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGcm9udG1hdHRlckNoYW5nZSBleHRlbmRzIEZpbGVDaGFuZ2Uge1xuICAvKipcbiAgICogVGhlIGtleSBpbiB0aGUgZnJvbnRtYXR0ZXIgdG8gdXNlIGZvciB0aGUgbGluay5cbiAgICovXG4gIGZyb250TWF0dGVyS2V5OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNvbnRlbnQgYm9keSBjaGFuZ2UgaW4gdGhlIFZhdWx0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRDaGFuZ2UgZXh0ZW5kcyBGaWxlQ2hhbmdlIHtcbiAgLyoqXG4gICAgICogVGhlIHN0YXJ0IGluZGV4IG9mIHRoZSBjaGFuZ2UgaW4gdGhlIGZpbGUgY29udGVudC5cbiAgICAgKi9cbiAgc3RhcnRJbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICAgICAqIFRoZSBlbmQgaW5kZXggb2YgdGhlIGNoYW5nZSBpbiB0aGUgZmlsZSBjb250ZW50LlxuICAgICAqL1xuICBlbmRJbmRleDogbnVtYmVyO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY29udGVudCBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGNvbnRlbnQgY2hhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb250ZW50Q2hhbmdlKGZpbGVDaGFuZ2U6IEZpbGVDaGFuZ2UpOiBmaWxlQ2hhbmdlIGlzIENvbnRlbnRDaGFuZ2Uge1xuICByZXR1cm4gKGZpbGVDaGFuZ2UgYXMgUGFydGlhbDxDb250ZW50Q2hhbmdlPikuc3RhcnRJbmRleCAhPT0gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgZnJvbnRtYXR0ZXIgY2hhbmdlLlxuICpcbiAqIEBwYXJhbSBmaWxlQ2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBmcm9udG1hdHRlciBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zyb250bWF0dGVyQ2hhbmdlKGZpbGVDaGFuZ2U6IEZpbGVDaGFuZ2UpOiBmaWxlQ2hhbmdlIGlzIEZyb250bWF0dGVyQ2hhbmdlIHtcbiAgcmV0dXJuIChmaWxlQ2hhbmdlIGFzIFBhcnRpYWw8RnJvbnRtYXR0ZXJDaGFuZ2U+KS5mcm9udE1hdHRlcktleSAhPT0gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgYSBzZXJpZXMgb2YgZmlsZSBjaGFuZ2VzIHRvIHRoZSBzcGVjaWZpZWQgZmlsZSBvciBwYXRoIHdpdGhpbiB0aGUgYXBwbGljYXRpb24uXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZSB3aGVyZSB0aGUgZmlsZSBjaGFuZ2VzIHdpbGwgYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBjaGFuZ2VzUHJvdmlkZXIgLSBBIHByb3ZpZGVyIHRoYXQgcmV0dXJucyBhbiBhcnJheSBvZiBmaWxlIGNoYW5nZXMgdG8gYXBwbHkuXG4gKiBAcGFyYW0gcmV0cnlPcHRpb25zIC0gT3B0aW9uYWwgc2V0dGluZ3MgdGhhdCBkZXRlcm1pbmUgaG93IHRoZSBvcGVyYXRpb24gc2hvdWxkIHJldHJ5IG9uIGZhaWx1cmUuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZmlsZSBjaGFuZ2VzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgYXBwbGllZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5RmlsZUNoYW5nZXMoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsIGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10+LCByZXRyeU9wdGlvbnM6IFBhcnRpYWw8UmV0cnlPcHRpb25zPiA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IERFRkFVTFRfUkVUUllfT1BUSU9OUzogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0geyB0aW1lb3V0SW5NaWxsaXNlY29uZHM6IDYwMDAwIH07XG4gIGNvbnN0IG92ZXJyaWRkZW5PcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7IC4uLkRFRkFVTFRfUkVUUllfT1BUSU9OUywgLi4ucmV0cnlPcHRpb25zIH07XG4gIGF3YWl0IHByb2Nlc3MoYXBwLCBwYXRoT3JGaWxlLCBhc3luYyAoY29udGVudCkgPT4ge1xuICAgIGxldCBjaGFuZ2VzID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNoYW5nZXNQcm92aWRlcik7XG4gICAgY29uc3QgZnJvbnRNYXR0ZXIgPSBwYXJzZUZyb250TWF0dGVyKGNvbnRlbnQpO1xuXG4gICAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgICAgaWYgKGlzQ29udGVudENoYW5nZShjaGFuZ2UpKSB7XG4gICAgICAgIGNvbnN0IGFjdHVhbENvbnRlbnQgPSBjb250ZW50LnNsaWNlKGNoYW5nZS5zdGFydEluZGV4LCBjaGFuZ2UuZW5kSW5kZXgpO1xuICAgICAgICBpZiAoYWN0dWFsQ29udGVudCAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0NvbnRlbnQgbWlzbWF0Y2gnLCB7XG4gICAgICAgICAgICBzdGFydEluZGV4OiBjaGFuZ2Uuc3RhcnRJbmRleCxcbiAgICAgICAgICAgIGVuZEluZGV4OiBjaGFuZ2UuZW5kSW5kZXgsXG4gICAgICAgICAgICBwYXRoOiBnZXRQYXRoKHBhdGhPckZpbGUpLFxuICAgICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICAgIGFjdHVhbENvbnRlbnRcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgICBjb25zdCBhY3R1YWxDb250ZW50ID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udE1hdHRlciwgY2hhbmdlLmZyb250TWF0dGVyS2V5KTtcbiAgICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgICAgcGF0aDogZ2V0UGF0aChwYXRoT3JGaWxlKSxcbiAgICAgICAgICAgIGV4cGVjdGVkQ29udGVudDogY2hhbmdlLm9sZENvbnRlbnQsXG4gICAgICAgICAgICBhY3R1YWxDb250ZW50LFxuICAgICAgICAgICAgZnJvbnRNYXR0ZXJLZXk6IGNoYW5nZS5mcm9udE1hdHRlcktleVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjaGFuZ2VzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoYSkgJiYgaXNDb250ZW50Q2hhbmdlKGIpKSB7XG4gICAgICAgIHJldHVybiBhLnN0YXJ0SW5kZXggLSBiLnN0YXJ0SW5kZXg7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlKGEpICYmIGlzRnJvbnRtYXR0ZXJDaGFuZ2UoYikpIHtcbiAgICAgICAgcmV0dXJuIGEuZnJvbnRNYXR0ZXJLZXkubG9jYWxlQ29tcGFyZShiLmZyb250TWF0dGVyS2V5KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlzQ29udGVudENoYW5nZShhKSA/IC0xIDogMTtcbiAgICB9KTtcblxuICAgIC8vIEJVRzogaHR0cHM6Ly9mb3J1bS5vYnNpZGlhbi5tZC90L2J1Zy1kdXBsaWNhdGVkLWxpbmtzLWluLW1ldGFkYXRhY2FjaGUtaW5zaWRlLWZvb3Rub3Rlcy84NTU1MVxuICAgIGNoYW5nZXMgPSBjaGFuZ2VzLmZpbHRlcigoY2hhbmdlLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGNoYW5nZS5vbGRDb250ZW50ID09PSBjaGFuZ2UubmV3Q29udGVudCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gIWRlZXBFcXVhbChjaGFuZ2UsIGNoYW5nZXNbaW5kZXggLSAxXSk7XG4gICAgfSk7XG5cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGNoYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgICBpZiAoIWNoYW5nZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByZXZpb3VzQ2hhbmdlID0gY2hhbmdlc1tpIC0gMV07XG4gICAgICBpZiAoIXByZXZpb3VzQ2hhbmdlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNDb250ZW50Q2hhbmdlKHByZXZpb3VzQ2hhbmdlKSAmJiBpc0NvbnRlbnRDaGFuZ2UoY2hhbmdlKSAmJiBwcmV2aW91c0NoYW5nZS5lbmRJbmRleCAmJiBjaGFuZ2Uuc3RhcnRJbmRleCAmJiBwcmV2aW91c0NoYW5nZS5lbmRJbmRleCA+IGNoYW5nZS5zdGFydEluZGV4KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignT3ZlcmxhcHBpbmcgY2hhbmdlcycsIHtcbiAgICAgICAgICBwcmV2aW91c0NoYW5nZSxcbiAgICAgICAgICBjaGFuZ2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBuZXdDb250ZW50ID0gJyc7XG4gICAgbGV0IGxhc3RJbmRleCA9IDA7XG4gICAgbGV0IGZyb250TWF0dGVyQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgICAgaWYgKGlzQ29udGVudENoYW5nZShjaGFuZ2UpKSB7XG4gICAgICAgIG5ld0NvbnRlbnQgKz0gY29udGVudC5zbGljZShsYXN0SW5kZXgsIGNoYW5nZS5zdGFydEluZGV4KTtcbiAgICAgICAgbmV3Q29udGVudCArPSBjaGFuZ2UubmV3Q29udGVudDtcbiAgICAgICAgbGFzdEluZGV4ID0gY2hhbmdlLmVuZEluZGV4O1xuICAgICAgfSBlbHNlIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgICAgc2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udE1hdHRlciwgY2hhbmdlLmZyb250TWF0dGVyS2V5LCBjaGFuZ2UubmV3Q29udGVudCk7XG4gICAgICAgIGZyb250TWF0dGVyQ2hhbmdlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV3Q29udGVudCArPSBjb250ZW50LnNsaWNlKGxhc3RJbmRleCk7XG4gICAgaWYgKGZyb250TWF0dGVyQ2hhbmdlZCkge1xuICAgICAgbmV3Q29udGVudCA9IHNldEZyb250TWF0dGVyKG5ld0NvbnRlbnQsIGZyb250TWF0dGVyKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0NvbnRlbnQ7XG4gIH0sIG92ZXJyaWRkZW5PcHRpb25zKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7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
|
@@ -93,4 +93,4 @@ async function deleteAlias(app, pathOrFile, alias) {
|
|
93
93
|
deleteAlias,
|
94
94
|
processFrontMatter
|
95
95
|
});
|
96
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVNYW5hZ2VyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1sncHJvY2VzcyddID8/
|
96
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVNYW5hZ2VyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1sncHJvY2VzcyddID8/IHtcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7XG4gIE1heWJlUHJvbWlzZSxcbiAgUmV0cnlPcHRpb25zXG59IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJy4uL09iamVjdC50cyc7XG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHsgZ2V0RmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRNYXR0ZXIgfSBmcm9tICcuL0Zyb250TWF0dGVyLnRzJztcbmltcG9ydCB7XG4gIHBhcnNlRnJvbnRNYXR0ZXIsXG4gIHNldEZyb250TWF0dGVyXG59IGZyb20gJy4vRnJvbnRNYXR0ZXIudHMnO1xuaW1wb3J0IHsgcHJvY2VzcyB9IGZyb20gJy4vVmF1bHQudHMnO1xuXG4vKipcbiAqIFByb2Nlc3NlcyB0aGUgZnJvbnQgbWF0dGVyIG9mIGEgZ2l2ZW4gZmlsZSwgYWxsb3dpbmcgbW9kaWZpY2F0aW9ucyB2aWEgYSBwcm92aWRlZCBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIEN1c3RvbUZyb250TWF0dGVyIC0gVGhlIHR5cGUgb2YgY3VzdG9tIGZyb250IG1hdHRlci5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBURmlsZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBub3RlLlxuICogQHBhcmFtIGZyb250TWF0dGVyRm4gLSBBIGZ1bmN0aW9uIHRoYXQgbW9kaWZpZXMgdGhlIGZyb250IG1hdHRlci5cbiAqIEBwYXJhbSByZXRyeU9wdGlvbnMgLSBPcHRpb25hbC4gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciByZXRyeWluZyB0aGUgcHJvY2Vzcy4gSWYgbm90IHByb3ZpZGVkLCBkZWZhdWx0IG9wdGlvbnMgd2lsbCBiZSB1c2VkLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZnJvbnQgbWF0dGVyIGhhcyBiZWVuIHByb2Nlc3NlZCBhbmQgc2F2ZWQuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGVcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzRnJvbnRNYXR0ZXI8Q3VzdG9tRnJvbnRNYXR0ZXIgPSB1bmtub3duPihhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgZnJvbnRNYXR0ZXJGbjogKGZyb250TWF0dGVyOiBDb21iaW5lZEZyb250TWF0dGVyPEN1c3RvbUZyb250TWF0dGVyPikgPT4gTWF5YmVQcm9taXNlPHZvaWQgfCBudWxsPiwgcmV0cnlPcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGhPckZpbGUpO1xuICBjb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlM6IFBhcnRpYWw8UmV0cnlPcHRpb25zPiA9IHsgdGltZW91dEluTWlsbGlzZWNvbmRzOiA2MDAwMCB9O1xuICBjb25zdCBvdmVycmlkZGVuT3B0aW9uczogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0geyAuLi5ERUZBVUxUX1JFVFJZX09QVElPTlMsIC4uLnJldHJ5T3B0aW9ucyB9O1xuXG4gIGF3YWl0IHByb2Nlc3MoYXBwLCBmaWxlLCBhc3luYyAoY29udGVudCkgPT4ge1xuICAgIGNvbnN0IG9sZEZyb250TWF0dGVyID0gcGFyc2VGcm9udE1hdHRlcjxDdXN0b21Gcm9udE1hdHRlcj4oY29udGVudCk7XG4gICAgY29uc3QgbmV3RnJvbnRNYXR0ZXIgPSBwYXJzZUZyb250TWF0dGVyPEN1c3RvbUZyb250TWF0dGVyPihjb250ZW50KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmcm9udE1hdHRlckZuKG5ld0Zyb250TWF0dGVyKTtcbiAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZGVlcEVxdWFsKG9sZEZyb250TWF0dGVyLCBuZXdGcm9udE1hdHRlcikpIHtcbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cblxuICAgIHJldHVybiBzZXRGcm9udE1hdHRlcihjb250ZW50LCBuZXdGcm9udE1hdHRlcik7XG4gIH0sIG92ZXJyaWRkZW5PcHRpb25zKTtcbn1cblxuLyoqXG4gKiBBZGRzIGFuIGFsaWFzIHRvIHRoZSBmcm9udCBtYXR0ZXIgb2YgYSBnaXZlbiBmaWxlIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIFRGaWxlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIG5vdGUuXG4gKiBAcGFyYW0gYWxpYXMgLSBUaGUgYWxpYXMgdG8gYWRkLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYWxpYXMgaGFzIGJlZW4gYWRkZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRBbGlhcyhhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgYWxpYXM/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFhbGlhcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGlmIChhbGlhcyA9PT0gZmlsZS5iYXNlbmFtZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IHByb2Nlc3NGcm9udE1hdHRlcihhcHAsIHBhdGhPckZpbGUsIChmcm9udE1hdHRlcikgPT4ge1xuICAgIGlmICghZnJvbnRNYXR0ZXIuYWxpYXNlcykge1xuICAgICAgZnJvbnRNYXR0ZXIuYWxpYXNlcyA9IFtdO1xuICAgIH1cblxuICAgIGlmICghZnJvbnRNYXR0ZXIuYWxpYXNlcy5pbmNsdWRlcyhhbGlhcykpIHtcbiAgICAgIGZyb250TWF0dGVyLmFsaWFzZXMucHVzaChhbGlhcyk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBEZWxldGVzIGFuIGFsaWFzIGZyb20gdGhlIGZyb250IG1hdHRlciBvZiBhIGdpdmVuIGZpbGUgaWYgaXQgZXhpc3RzLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBURmlsZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBub3RlLlxuICogQHBhcmFtIGFsaWFzIC0gVGhlIGFsaWFzIHRvIGRlbGV0ZS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFsaWFzIGhhcyBiZWVuIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVBbGlhcyhhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgYWxpYXM/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFhbGlhcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IHByb2Nlc3NGcm9udE1hdHRlcihhcHAsIHBhdGhPckZpbGUsIChmcm9udE1hdHRlcikgPT4ge1xuICAgIGlmICghZnJvbnRNYXR0ZXIuYWxpYXNlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZyb250TWF0dGVyLmFsaWFzZXMgPSBmcm9udE1hdHRlci5hbGlhc2VzLmZpbHRlcigoYSkgPT4gYSAhPSBhbGlhcyk7XG5cbiAgICBpZiAoZnJvbnRNYXR0ZXIuYWxpYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGRlbGV0ZSBmcm9udE1hdHRlci5hbGlhc2VzO1xuICAgIH1cbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQSxvQkFBMEI7QUFFMUIsd0JBQXdCO0FBRXhCLHlCQUdPO0FBQ1AsbUJBQXdCO0FBbkJ4QixJQUFJLFlBQVksV0FBVyxTQUFTLEtBQUs7QUFBQSxFQUN2QyxPQUFPLE1BQUk7QUFBQSxFQUNYLE9BQU8sQ0FBQztBQUFBLEVBQ1IsWUFBWTtBQUNkO0FBNEJBLGVBQXNCLG1CQUFnRCxLQUFVLFlBQXdCLGVBQW1HLGVBQXNDLENBQUMsR0FBa0I7QUFDbFEsUUFBTSxXQUFPLDJCQUFRLEtBQUssVUFBVTtBQUNwQyxRQUFNLHdCQUErQyxFQUFFLHVCQUF1QixJQUFNO0FBQ3BGLFFBQU0sb0JBQTJDLEVBQUUsR0FBRyx1QkFBdUIsR0FBRyxhQUFhO0FBRTdGLFlBQU0sc0JBQVEsS0FBSyxNQUFNLE9BQU8sWUFBWTtBQUMxQyxVQUFNLHFCQUFpQixxQ0FBb0MsT0FBTztBQUNsRSxVQUFNLHFCQUFpQixxQ0FBb0MsT0FBTztBQUNsRSxVQUFNLFNBQVMsTUFBTSxjQUFjLGNBQWM7QUFDakQsUUFBSSxXQUFXLE1BQU07QUFDbkIsYUFBTztBQUFBLElBQ1Q7QUFFQSxZQUFJLHlCQUFVLGdCQUFnQixjQUFjLEdBQUc7QUFDN0MsYUFBTztBQUFBLElBQ1Q7QUFFQSxlQUFPLG1DQUFlLFNBQVMsY0FBYztBQUFBLEVBQy9DLEdBQUcsaUJBQWlCO0FBQ3RCO0FBVUEsZUFBc0IsU0FBUyxLQUFVLFlBQXdCLE9BQStCO0FBQzlGLE1BQUksQ0FBQyxPQUFPO0FBQ1Y7QUFBQSxFQUNGO0FBRUEsUUFBTSxXQUFPLDJCQUFRLEtBQUssVUFBVTtBQUNwQyxNQUFJLFVBQVUsS0FBSyxVQUFVO0FBQzNCO0FBQUEsRUFDRjtBQUVBLFFBQU0sbUJBQW1CLEtBQUssWUFBWSxDQUFDLGdCQUFnQjtBQUN6RCxRQUFJLENBQUMsWUFBWSxTQUFTO0FBQ3hCLGtCQUFZLFVBQVUsQ0FBQztBQUFBLElBQ3pCO0FBRUEsUUFBSSxDQUFDLFlBQVksUUFBUSxTQUFTLEtBQUssR0FBRztBQUN4QyxrQkFBWSxRQUFRLEtBQUssS0FBSztBQUFBLElBQ2hDO0FBQUEsRUFDRixDQUFDO0FBQ0g7QUFVQSxlQUFzQixZQUFZLEtBQVUsWUFBd0IsT0FBK0I7QUFDakcsTUFBSSxDQUFDLE9BQU87QUFDVjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLG1CQUFtQixLQUFLLFlBQVksQ0FBQyxnQkFBZ0I7QUFDekQsUUFBSSxDQUFDLFlBQVksU0FBUztBQUN4QjtBQUFBLElBQ0Y7QUFFQSxnQkFBWSxVQUFVLFlBQVksUUFBUSxPQUFPLENBQUMsTUFBTSxLQUFLLEtBQUs7QUFFbEUsUUFBSSxZQUFZLFFBQVEsV0FBVyxHQUFHO0FBQ3BDLGFBQU8sWUFBWTtBQUFBLElBQ3JCO0FBQUEsRUFDRixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
@@ -40,13 +40,13 @@ __export(Link_exports, {
|
|
40
40
|
});
|
41
41
|
module.exports = __toCommonJS(Link_exports);
|
42
42
|
var import_obsidian = require('obsidian');
|
43
|
-
var import_implementations = require('obsidian-typings/implementations');
|
44
43
|
var import_Path = require('../Path.cjs');
|
45
44
|
var import_String = require('../String.cjs');
|
46
45
|
var import_FileChange = require('./FileChange.cjs');
|
47
46
|
var import_FileSystem = require('./FileSystem.cjs');
|
48
47
|
var import_MetadataCache = require('./MetadataCache.cjs');
|
49
48
|
var import_ObsidianSettings = require('./ObsidianSettings.cjs');
|
49
|
+
var import_Reference = require('./Reference.cjs');
|
50
50
|
const SPECIAL_LINK_SYMBOLS_REGEXP = /[\\\x00\x08\x0B\x0C\x0E-\x1F ]/g;
|
51
51
|
const SPECIAL_MARKDOWN_LINK_SYMBOLS_REGEX = /[\\[\]<>_*~=`$]/g;
|
52
52
|
function splitSubpath(link) {
|
@@ -246,20 +246,7 @@ async function editLinks(app, pathOrFile, linkConverter, retryOptions = {}) {
|
|
246
246
|
if (newContent === void 0) {
|
247
247
|
continue;
|
248
248
|
}
|
249
|
-
|
250
|
-
changes.push({
|
251
|
-
startIndex: link.position.start.offset,
|
252
|
-
endIndex: link.position.end.offset,
|
253
|
-
oldContent: link.original,
|
254
|
-
newContent
|
255
|
-
});
|
256
|
-
} else if ((0, import_implementations.isFrontmatterLinkCache)(link)) {
|
257
|
-
changes.push({
|
258
|
-
oldContent: link.original,
|
259
|
-
newContent,
|
260
|
-
frontMatterKey: link.key
|
261
|
-
});
|
262
|
-
}
|
249
|
+
changes.push((0, import_Reference.referenceToFileChange)(link, newContent));
|
263
250
|
}
|
264
251
|
return changes;
|
265
252
|
}, retryOptions);
|
@@ -291,4 +278,4 @@ function testAngleBrackets(link) {
|
|
291
278
|
updateLink,
|
292
279
|
updateLinksInFile
|
293
280
|
});
|
294
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0xpbmsudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIExpbmtcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdGllcyBmb3IgaGFuZGxpbmcgYW5kIHVwZGF0aW5nIGxpbmtzIHdpdGhpbiBPYnNpZGlhbiB2YXVsdHMuIEl0IGluY2x1ZGVzXG4gKiBmdW5jdGlvbnMgdG8gc3BsaXQgcGF0aHMsIHVwZGF0ZSBsaW5rcyBpbiBmaWxlcywgYW5kIGdlbmVyYXRlIG1hcmtkb3duIGxpbmtzIHdpdGggdmFyaW91cyBvcHRpb25zLlxuICogVGhlIGZ1bmN0aW9ucyBpbnRlZ3JhdGUgd2l0aCBPYnNpZGlhbidzIEFQSSB0byBlbnN1cmUgdGhhdCBsaW5rcyBhcmUgbWFuYWdlZCBjb3JyZWN0bHkgd2l0aGluIHRoZSB2YXVsdC5cbiAqKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIFJlZmVyZW5jZSxcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplUGF0aCxcbiAgcGFyc2VMaW5rdGV4dFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge1xuICBpc0Zyb250bWF0dGVyTGlua0NhY2hlLFxuICBpc1JlZmVyZW5jZUNhY2hlXG59IGZyb20gJ29ic2lkaWFuLXR5cGluZ3MvaW1wbGVtZW50YXRpb25zJztcblxuaW1wb3J0IHR5cGUge1xuICBNYXliZVByb21pc2UsXG4gIFJldHJ5T3B0aW9uc1xufSBmcm9tICcuLi9Bc3luYy50cyc7XG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZGlybmFtZSxcbiAgZXh0bmFtZSxcbiAgam9pbixcbiAgcmVsYXRpdmVcbn0gZnJvbSAnLi4vUGF0aC50cyc7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tICcuLi9TdHJpbmcudHMnO1xuaW1wb3J0IHR5cGUge1xuICBDb250ZW50Q2hhbmdlLFxuICBGaWxlQ2hhbmdlLFxuICBGcm9udG1hdHRlckNoYW5nZVxufSBmcm9tICcuL0ZpbGVDaGFuZ2UudHMnO1xuaW1wb3J0IHsgYXBwbHlGaWxlQ2hhbmdlcyB9IGZyb20gJy4vRmlsZUNoYW5nZS50cyc7XG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgZ2V0UGF0aCxcbiAgaXNNYXJrZG93bkZpbGUsXG4gIHRyaW1NYXJrZG93bkV4dGVuc2lvblxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgZ2V0QWxsTGlua3MsXG4gIGdldENhY2hlU2FmZSxcbiAgdGVtcFJlZ2lzdGVyRmlsZUFuZFJ1blxufSBmcm9tICcuL01ldGFkYXRhQ2FjaGUudHMnO1xuaW1wb3J0IHtcbiAgc2hvdWxkVXNlUmVsYXRpdmVMaW5rcyxcbiAgc2hvdWxkVXNlV2lraWxpbmtzXG59IGZyb20gJy4vT2JzaWRpYW5TZXR0aW5ncy50cyc7XG5cbi8qKlxuICogUmVndWxhciBleHByZXNzaW9uIGZvciBzcGVjaWFsIGxpbmsgc3ltYm9scy5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRyb2wtcmVnZXhcbmNvbnN0IFNQRUNJQUxfTElOS19TWU1CT0xTX1JFR0VYUCA9IC9bXFxcXFxceDAwXFx4MDhcXHgwQlxceDBDXFx4MEUtXFx4MUYgXS9nO1xuXG4vKipcbiAqIFJlZ3VsYXIgZXhwcmVzc2lvbiBmb3Igc3BlY2lhbCBtYXJrZG93biBsaW5rIHN5bWJvbHMuXG4gKi9cbmNvbnN0IFNQRUNJQUxfTUFSS0RPV05fTElOS19TWU1CT0xTX1JFR0VYID0gL1tcXFxcW1xcXTw+Xyp+PWAkXS9nO1xuXG4vKipcbiAqIFNwbGl0cyBhIGxpbmsgaW50byBpdHMgbGluayBwYXRoIGFuZCBzdWJwYXRoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNwbGl0U3VicGF0aFJlc3VsdCB7XG4gIC8qKlxuICAgKiBUaGUgbGluayBwYXRoLlxuICAgKi9cbiAgbGlua1BhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN1YnBhdGguXG4gICAqL1xuICBzdWJwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogU3BsaXRzIGEgbGluayBpbnRvIGl0cyBsaW5rIHBhdGggYW5kIHN1YnBhdGguXG4gKlxuICogQHBhcmFtIGxpbmsgLSBUaGUgbGluayB0byBzcGxpdC5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBsaW5rIHBhdGggYW5kIHN1YnBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdFN1YnBhdGgobGluazogc3RyaW5nKTogU3BsaXRTdWJwYXRoUmVzdWx0IHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VMaW5rdGV4dChub3JtYWxpemUobGluaykpO1xuICByZXR1cm4ge1xuICAgIGxpbmtQYXRoOiBwYXJzZWQucGF0aCxcbiAgICBzdWJwYXRoOiBwYXJzZWQuc3VicGF0aFxuICB9O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHVwZGF0aW5nIGxpbmtzIGluIGEgZmlsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVMaW5rc0luRmlsZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSB0byB1cGRhdGUgdGhlIGxpbmtzIGluLlxuICAgKi9cbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogVGhlIG9sZCBwYXRoIG9mIHRoZSBmaWxlLlxuICAgKi9cbiAgb2xkUGF0aE9yRmlsZT86IFBhdGhPckZpbGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIG9sZCBhbmQgbmV3IHBhdGhzIGZvciByZW5hbWluZyBsaW5rcy5cbiAgICovXG4gIHJlbmFtZU1hcD86IE1hcDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZm9yY2UgdGhlIGxpbmtzIHRvIGJlIGluIE1hcmtkb3duIGZvcm1hdC5cbiAgICovXG4gIGZvcmNlTWFya2Rvd25MaW5rcz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXBkYXRlIG9ubHkgZW1iZWRkZWQgbGlua3MuXG4gICAqL1xuICBlbWJlZE9ubHlMaW5rcz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXBkYXRlIGZpbGVuYW1lIGFsaWFzLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICBzaG91bGRVcGRhdGVGaWxlbmFtZUFsaWFzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIHRoZSBsaW5rcyBpbiBhIGZpbGUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdXBkYXRpbmcgdGhlIGxpbmtzLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbGlua3MgYXJlIHVwZGF0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVMaW5rc0luRmlsZShvcHRpb25zOiBVcGRhdGVMaW5rc0luRmlsZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBwYXRoT3JGaWxlLFxuICAgIG9sZFBhdGhPckZpbGUsXG4gICAgcmVuYW1lTWFwLFxuICAgIGZvcmNlTWFya2Rvd25MaW5rcyxcbiAgICBlbWJlZE9ubHlMaW5rcyxcbiAgICBzaG91bGRVcGRhdGVGaWxlbmFtZUFsaWFzXG4gIH0gPSBvcHRpb25zO1xuICBhd2FpdCBlZGl0TGlua3MoYXBwLCBwYXRoT3JGaWxlLCAobGluaykgPT4ge1xuICAgIGNvbnN0IGlzRW1iZWRMaW5rID0gdGVzdEVtYmVkKGxpbmsub3JpZ2luYWwpO1xuICAgIGlmIChlbWJlZE9ubHlMaW5rcyAhPT0gdW5kZWZpbmVkICYmIGVtYmVkT25seUxpbmtzICE9PSBpc0VtYmVkTGluaykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gY29udmVydExpbmsoe1xuICAgICAgYXBwLFxuICAgICAgbGluayxcbiAgICAgIHNvdXJjZVBhdGhPckZpbGU6IHBhdGhPckZpbGUsXG4gICAgICBvbGRQYXRoT3JGaWxlLFxuICAgICAgcmVuYW1lTWFwLFxuICAgICAgZm9yY2VNYXJrZG93bkxpbmtzLFxuICAgICAgc2hvdWxkVXBkYXRlRmlsZW5hbWVBbGlhc1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb252ZXJ0aW5nIGEgbGluay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb252ZXJ0TGlua09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVmZXJlbmNlIGZvciB0aGUgbGluay5cbiAgICovXG4gIGxpbms6IFJlZmVyZW5jZTtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGxpbmsuXG4gICAqL1xuICBzb3VyY2VQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgb2xkIHBhdGggb2YgdGhlIGxpbmsuXG4gICAqL1xuICBvbGRQYXRoT3JGaWxlPzogUGF0aE9yRmlsZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBtYXAgb2Ygb2xkIGFuZCBuZXcgZmlsZSBwYXRocy5cbiAgICovXG4gIHJlbmFtZU1hcD86IE1hcDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZm9yY2UgbWFya2Rvd24gbGlua3MuXG4gICAqL1xuICBmb3JjZU1hcmtkb3duTGlua3M/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVwZGF0ZSBmaWxlbmFtZSBhbGlhcy4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgKi9cbiAgc2hvdWxkVXBkYXRlRmlsZW5hbWVBbGlhcz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBsaW5rIHRvIGEgbmV3IHBhdGguXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgY29udmVydGluZyB0aGUgbGluay5cbiAqIEByZXR1cm5zIFRoZSBjb252ZXJ0ZWQgbGluay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRMaW5rKG9wdGlvbnM6IENvbnZlcnRMaW5rT3B0aW9ucyk6IHN0cmluZyB7XG4gIHJldHVybiB1cGRhdGVMaW5rKHtcbiAgICBhcHA6IG9wdGlvbnMuYXBwLFxuICAgIGxpbms6IG9wdGlvbnMubGluayxcbiAgICBwYXRoT3JGaWxlOiBleHRyYWN0TGlua0ZpbGUob3B0aW9ucy5hcHAsIG9wdGlvbnMubGluaywgb3B0aW9ucy5zb3VyY2VQYXRoT3JGaWxlKSxcbiAgICBvbGRQYXRoT3JGaWxlOiBvcHRpb25zLm9sZFBhdGhPckZpbGUsXG4gICAgc291cmNlUGF0aE9yRmlsZTogb3B0aW9ucy5zb3VyY2VQYXRoT3JGaWxlLFxuICAgIHJlbmFtZU1hcDogb3B0aW9ucy5yZW5hbWVNYXAsXG4gICAgZm9yY2VNYXJrZG93bkxpbmtzOiBvcHRpb25zLmZvcmNlTWFya2Rvd25MaW5rcyxcbiAgICBzaG91bGRVcGRhdGVGaWxlbmFtZUFsaWFzOiBvcHRpb25zLnNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXNcbiAgfSk7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIGEgbGluay5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIGxpbmsgLSBUaGUgcmVmZXJlbmNlIGNhY2hlIGZvciB0aGUgbGluay5cbiAqIEBwYXJhbSBub3RlUGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgb2YgdGhlIG5vdGUgY29udGFpbmluZyB0aGUgbGluay5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGluaywgb3IgbnVsbCBpZiBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0TGlua0ZpbGUoYXBwOiBBcHAsIGxpbms6IFJlZmVyZW5jZSwgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBURmlsZSB8IG51bGwge1xuICBjb25zdCB7IGxpbmtQYXRoIH0gPSBzcGxpdFN1YnBhdGgobGluay5saW5rKTtcbiAgcmV0dXJuIGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KGxpbmtQYXRoLCBnZXRQYXRoKG5vdGVQYXRoT3JGaWxlKSk7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdXBkYXRpbmcgYSBsaW5rLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUxpbmtPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHJlZmVyZW5jZSBmb3IgdGhlIGxpbmsuXG4gICAqL1xuICBsaW5rOiBSZWZlcmVuY2U7XG5cbiAgLyoqXG4gICAqIFRoZSBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGluay5cbiAgICovXG4gIHBhdGhPckZpbGU6IFBhdGhPckZpbGUgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgb2xkIHBhdGggb2YgdGhlIGZpbGUuXG4gICAqL1xuICBvbGRQYXRoT3JGaWxlPzogUGF0aE9yRmlsZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGxpbmsuXG4gICAqL1xuICBzb3VyY2VQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIG1hcCBvZiBvbGQgYW5kIG5ldyBmaWxlIHBhdGhzLlxuICAgKi9cbiAgcmVuYW1lTWFwPzogTWFwPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBmb3JjZSBtYXJrZG93biBsaW5rcy5cbiAgICovXG4gIGZvcmNlTWFya2Rvd25MaW5rcz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXBkYXRlIGZpbGVuYW1lIGFsaWFzLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICBzaG91bGRVcGRhdGVGaWxlbmFtZUFsaWFzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIGEgbGluayBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB1cGRhdGluZyB0aGUgbGluay5cbiAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIGxpbmsuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVMaW5rKG9wdGlvbnM6IFVwZGF0ZUxpbmtPcHRpb25zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBsaW5rLFxuICAgIHBhdGhPckZpbGUsXG4gICAgb2xkUGF0aE9yRmlsZSxcbiAgICBzb3VyY2VQYXRoT3JGaWxlLFxuICAgIHJlbmFtZU1hcCxcbiAgICBmb3JjZU1hcmtkb3duTGlua3MsXG4gICAgc2hvdWxkVXBkYXRlRmlsZW5hbWVBbGlhc1xuICB9ID0gb3B0aW9ucztcbiAgaWYgKCFwYXRoT3JGaWxlKSB7XG4gICAgcmV0dXJuIGxpbmsub3JpZ2luYWw7XG4gIH1cbiAgbGV0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGNvbnN0IG9sZFBhdGggPSBnZXRQYXRoKG9sZFBhdGhPckZpbGUgPz8gc291cmNlUGF0aE9yRmlsZSk7XG4gIGNvbnN0IGlzV2lraWxpbmsgPSB0ZXN0V2lraWxpbmsobGluay5vcmlnaW5hbCkgJiYgZm9yY2VNYXJrZG93bkxpbmtzICE9PSB0cnVlO1xuICBjb25zdCB7IHN1YnBhdGggfSA9IHNwbGl0U3VicGF0aChsaW5rLmxpbmspO1xuXG4gIGNvbnN0IG5ld1BhdGggPSByZW5hbWVNYXA/LmdldChmaWxlLnBhdGgpO1xuICBsZXQgYWxpYXMgPSBzaG91bGRSZXNldEFsaWFzKHtcbiAgICBhcHAsXG4gICAgZGlzcGxheVRleHQ6IGxpbmsuZGlzcGxheVRleHQsXG4gICAgcGF0aE9yRmlsZSxcbiAgICBvdGhlclBhdGhPckZpbGVzOiBbb2xkUGF0aCwgbmV3UGF0aF0sXG4gICAgc291cmNlUGF0aE9yRmlsZSxcbiAgICBpc1dpa2lsaW5rXG4gIH0pXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IGxpbmsuZGlzcGxheVRleHQ7XG5cbiAgaWYgKHNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXMgPz8gdHJ1ZSkge1xuICAgIGlmIChhbGlhcz8udG9Mb3dlckNhc2UoKSA9PT0gYmFzZW5hbWUob2xkUGF0aCwgZXh0bmFtZShvbGRQYXRoKSkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgYWxpYXMgPSBmaWxlLmJhc2VuYW1lO1xuICAgIH0gZWxzZSBpZiAoYWxpYXM/LnRvTG93ZXJDYXNlKCkgPT09IGJhc2VuYW1lKG9sZFBhdGgpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGFsaWFzID0gZmlsZS5uYW1lO1xuICAgIH1cbiAgfVxuXG4gIGlmIChuZXdQYXRoKSB7XG4gICAgZmlsZSA9IGdldEZpbGUoYXBwLCBuZXdQYXRoLCB0cnVlKTtcbiAgfVxuXG4gIGNvbnN0IG5ld0xpbmsgPSBnZW5lcmF0ZU1hcmtkb3duTGluayh7XG4gICAgYXBwLFxuICAgIHBhdGhPckZpbGU6IGZpbGUsXG4gICAgc291cmNlUGF0aE9yRmlsZSxcbiAgICBzdWJwYXRoLFxuICAgIGFsaWFzLFxuICAgIGlzV2lraWxpbms6IGZvcmNlTWFya2Rvd25MaW5rcyA/IGZhbHNlIDogdW5kZWZpbmVkLFxuICAgIG9yaWdpbmFsTGluazogbGluay5vcmlnaW5hbFxuICB9KTtcbiAgcmV0dXJuIG5ld0xpbms7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZGV0ZXJtaW5pbmcgaWYgdGhlIGFsaWFzIG9mIGEgbGluayBzaG91bGQgYmUgcmVzZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2hvdWxkUmVzZXRBbGlhc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlzcGxheSB0ZXh0IG9mIHRoZSBsaW5rLlxuICAgKi9cbiAgZGlzcGxheVRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSBvZiB0aGUgbGluay5cbiAgICovXG4gIHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIE90aGVyIHBhdGhzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGluay5cbiAgICovXG4gIG90aGVyUGF0aE9yRmlsZXM6IChQYXRoT3JGaWxlIHwgdW5kZWZpbmVkKVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIHBhdGggb2YgdGhlIGxpbmsuXG4gICAqL1xuICBzb3VyY2VQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGxpbmsgaXMgYSB3aWtpbGluay5cbiAgICovXG4gIGlzV2lraWxpbms/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgaWYgdGhlIGFsaWFzIG9mIGEgbGluayBzaG91bGQgYmUgcmVzZXQuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgZGV0ZXJtaW5pbmcgaWYgdGhlIGFsaWFzIHNob3VsZCBiZSByZXNldC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGFsaWFzIHNob3VsZCBiZSByZXNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFJlc2V0QWxpYXMob3B0aW9uczogU2hvdWxkUmVzZXRBbGlhc09wdGlvbnMpOiBib29sZWFuIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBkaXNwbGF5VGV4dCxcbiAgICBwYXRoT3JGaWxlLFxuICAgIG90aGVyUGF0aE9yRmlsZXMsXG4gICAgc291cmNlUGF0aE9yRmlsZSxcbiAgICBpc1dpa2lsaW5rXG4gIH0gPSBvcHRpb25zO1xuICBpZiAoaXNXaWtpbGluayA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGhPckZpbGUpO1xuXG4gIGlmICghZGlzcGxheVRleHQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZVBhdGggPSBnZXRQYXRoKHNvdXJjZVBhdGhPckZpbGUpO1xuICBjb25zdCBzb3VyY2VEaXIgPSBkaXJuYW1lKHNvdXJjZVBhdGgpO1xuXG4gIGNvbnN0IGFsaWFzZXNUb1Jlc2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgZm9yIChjb25zdCBwYXRoT3JGaWxlIG9mIFtmaWxlLnBhdGgsIC4uLm90aGVyUGF0aE9yRmlsZXNdKSB7XG4gICAgaWYgKCFwYXRoT3JGaWxlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXRoID0gZ2V0UGF0aChwYXRoT3JGaWxlKTtcbiAgICBhbGlhc2VzVG9SZXNldC5hZGQocGF0aCk7XG4gICAgYWxpYXNlc1RvUmVzZXQuYWRkKGJhc2VuYW1lKHBhdGgpKTtcbiAgICBhbGlhc2VzVG9SZXNldC5hZGQocmVsYXRpdmUoc291cmNlRGlyLCBwYXRoKSk7XG4gIH1cblxuICBhbGlhc2VzVG9SZXNldC5hZGQoYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZVRvTGlua3RleHQoZmlsZSwgc291cmNlUGF0aCwgZmFsc2UpKTtcblxuICBjb25zdCBjbGVhbkRpc3BsYXlUZXh0ID0gbm9ybWFsaXplUGF0aChkaXNwbGF5VGV4dC5zcGxpdCgnID4gJylbMF0gPz8gJycpLnJlcGxhY2UoL15cXC5cXC8vLCAnJykudG9Mb3dlckNhc2UoKTtcblxuICBmb3IgKGNvbnN0IGFsaWFzIG9mIGFsaWFzZXNUb1Jlc2V0KSB7XG4gICAgaWYgKGFsaWFzLnRvTG93ZXJDYXNlKCkgPT09IGNsZWFuRGlzcGxheVRleHQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGRpciA9IGRpcm5hbWUoYWxpYXMpO1xuICAgIGNvbnN0IGJhc2UgPSBiYXNlbmFtZShhbGlhcywgZXh0bmFtZShhbGlhcykpO1xuICAgIGlmIChqb2luKGRpciwgYmFzZSkudG9Mb3dlckNhc2UoKSA9PT0gY2xlYW5EaXNwbGF5VGV4dCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFdyYXBwZXIgZm9yIGRlZmF1bHQgb3B0aW9ucyBmb3IgZ2VuZXJhdGluZyBtYXJrZG93biBsaW5rcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZU1hcmtkb3duTGlua0RlZmF1bHRPcHRpb25zV3JhcHBlciB7XG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBvcHRpb25zIGZvciBnZW5lcmF0aW5nIG1hcmtkb3duIGxpbmtzLlxuICAgKi9cbiAgZGVmYXVsdE9wdGlvbnNGbjogKCkgPT4gUGFydGlhbDxHZW5lcmF0ZU1hcmtkb3duTGlua09wdGlvbnM+O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGdlbmVyYXRpbmcgYSBtYXJrZG93biBsaW5rLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlTWFya2Rvd25MaW5rT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBmaWxlIHRvIGxpbmsgdG8uXG4gICAqL1xuICBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIHBhdGggb2YgdGhlIGxpbmsuXG4gICAqL1xuICBzb3VyY2VQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VicGF0aCBvZiB0aGUgbGluay5cbiAgICovXG4gIHN1YnBhdGg/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBhbGlhcyBmb3IgdGhlIGxpbmsuXG4gICAqL1xuICBhbGlhcz86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBsaW5rIHNob3VsZCBiZSBlbWJlZGRlZC4gSWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIGJlIGluZmVycmVkIGJhc2VkIG9uIHRoZSBmaWxlIHR5cGUuXG4gICAqL1xuICBpc0VtYmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBsaW5rIHNob3VsZCBiZSBhIHdpa2lsaW5rLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgYmUgaW5mZXJyZWQgYmFzZWQgb24gdGhlIE9ic2lkaWFuIHNldHRpbmdzLlxuICAgKi9cbiAgaXNXaWtpbGluaz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGluayBzaG91bGQgYmUgcmVsYXRpdmUuIElmIG5vdCBwcm92aWRlZCBvciBgZmFsc2VgLCBpdCB3aWxsIGJlIGluZmVycmVkIGJhc2VkIG9uIHRoZSBPYnNpZGlhbiBzZXR0aW5ncy5cbiAgICovXG4gIGZvcmNlUmVsYXRpdmVQYXRoPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBsaW5rIHNob3VsZCB1c2UgYSBsZWFkaW5nIGRvdC4gRGVmYXVsdHMgdG8gYGZhbHNlYC4gSGFzIG5vIGVmZmVjdCBpZiBgaXNXaWtpbGlua2AgaXMgYHRydWVgIG9yIGBpc1JlbGF0aXZlYCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgdXNlTGVhZGluZ0RvdD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGluayBzaG91bGQgdXNlIGFuZ2xlIGJyYWNrZXRzLiBEZWZhdWx0cyB0byBgZmFsc2VgLiBIYXMgbm8gZWZmZWN0IGlmIGBpc1dpa2lsaW5rYCBpcyBgdHJ1ZWBcbiAgICovXG4gIHVzZUFuZ2xlQnJhY2tldHM/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgICogVGhlIG9yaWdpbmFsIGxpbmsgdGV4dC4gSWYgcHJvdmlkZWQsIGl0IHdpbGwgYmUgdXNlZCB0byBpbmZlciB0aGUgdmFsdWVzIG9mIGBpc0VtYmVkYCwgYGlzV2lraWxpbmtgLCBgdXNlTGVhZGluZ0RvdGAsIGFuZCBgdXNlQW5nbGVCcmFja2V0c2AuXG4gICAgKiBUaGVzZSBpbmZlcnJlZCB2YWx1ZXMgd2lsbCBiZSBvdmVycmlkZGVuIGJ5IGNvcnJlc3BvbmRpbmcgc2V0dGluZ3MgaWYgc3BlY2lmaWVkLlxuICAgICovXG4gIG9yaWdpbmFsTGluaz86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyBub24tZXhpc3RpbmcgZmlsZXMuIElmIGBmYWxzZWAgYW5kIGBwYXRoT3JGaWxlYCBpcyBhIG5vbi1leGlzdGluZyBmaWxlLCBhbiBlcnJvciB3aWxsIGJlIHRocm93bi4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIGFsbG93Tm9uRXhpc3RpbmdGaWxlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyBhbiBlbXB0eSBhbGlhcyBmb3IgZW1iZWRzLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICBhbGxvd0VtcHR5RW1iZWRBbGlhcz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgYXR0YWNobWVudCBleHRlbnNpb24gaW4gdGhlIGVtYmVkIGFsaWFzLiBIYXMgbm8gZWZmZWN0IGlmIGBhbGxvd0VtcHR5RW1iZWRBbGlhc2AgaXMgYHRydWVgLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgaW5jbHVkZUF0dGFjaG1lbnRFeHRlbnNpb25Ub0VtYmVkQWxpYXM/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIG1hcmtkb3duIGxpbmsgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgZ2VuZXJhdGluZyB0aGUgbWFya2Rvd24gbGluay5cbiAqIEByZXR1cm5zIFRoZSBnZW5lcmF0ZWQgbWFya2Rvd24gbGluay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlTWFya2Rvd25MaW5rKG9wdGlvbnM6IEdlbmVyYXRlTWFya2Rvd25MaW5rT3B0aW9ucyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgYXBwIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGNvbmZpZ3VyYWJsZURlZmF1bHRPcHRpb25zRm4gPSAoYXBwLmZpbGVNYW5hZ2VyLmdlbmVyYXRlTWFya2Rvd25MaW5rIGFzIFBhcnRpYWw8R2VuZXJhdGVNYXJrZG93bkxpbmtEZWZhdWx0T3B0aW9uc1dyYXBwZXI+KS5kZWZhdWx0T3B0aW9uc0ZuID8/ICgoKTogUGFydGlhbDxHZW5lcmF0ZU1hcmtkb3duTGlua09wdGlvbnM+ID0+ICh7fSkpO1xuICBjb25zdCBjb25maWd1cmFibGVEZWZhdWx0T3B0aW9ucyA9IGNvbmZpZ3VyYWJsZURlZmF1bHRPcHRpb25zRm4oKTtcblxuICBjb25zdCBERUZBVUxUX09QVElPTlM6IFBhcnRpYWw8R2VuZXJhdGVNYXJrZG93bkxpbmtPcHRpb25zPiA9IHtcbiAgICBhbGxvd0VtcHR5RW1iZWRBbGlhczogdHJ1ZVxuICB9O1xuXG4gIG9wdGlvbnMgPSB7IC4uLkRFRkFVTFRfT1BUSU9OUywgLi4uY29uZmlndXJhYmxlRGVmYXVsdE9wdGlvbnMsIC4uLm9wdGlvbnMgfTtcblxuICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIG9wdGlvbnMucGF0aE9yRmlsZSwgb3B0aW9ucy5hbGxvd05vbkV4aXN0aW5nRmlsZSk7XG5cbiAgcmV0dXJuIHRlbXBSZWdpc3RlckZpbGVBbmRSdW4oYXBwLCBmaWxlLCAoKSA9PiB7XG4gICAgY29uc3Qgc291cmNlUGF0aCA9IGdldFBhdGgob3B0aW9ucy5zb3VyY2VQYXRoT3JGaWxlKTtcbiAgICBjb25zdCBzdWJwYXRoID0gb3B0aW9ucy5zdWJwYXRoID8/ICcnO1xuICAgIGxldCBhbGlhcyA9IG9wdGlvbnMuYWxpYXMgPz8gJyc7XG4gICAgY29uc3QgaXNFbWJlZCA9IG9wdGlvbnMuaXNFbWJlZCA/PyAob3B0aW9ucy5vcmlnaW5hbExpbmsgPyB0ZXN0RW1iZWQob3B0aW9ucy5vcmlnaW5hbExpbmspIDogdW5kZWZpbmVkKSA/PyAhaXNNYXJrZG93bkZpbGUoZmlsZSk7XG4gICAgY29uc3QgaXNXaWtpbGluayA9IG9wdGlvbnMuaXNXaWtpbGluayA/PyAob3B0aW9ucy5vcmlnaW5hbExpbmsgPyB0ZXN0V2lraWxpbmsob3B0aW9ucy5vcmlnaW5hbExpbmspIDogdW5kZWZpbmVkKSA/PyBzaG91bGRVc2VXaWtpbGlua3MoYXBwKTtcbiAgICBjb25zdCBmb3JjZVJlbGF0aXZlUGF0aCA9IG9wdGlvbnMuZm9yY2VSZWxhdGl2ZVBhdGggPz8gc2hvdWxkVXNlUmVsYXRpdmVMaW5rcyhhcHApO1xuICAgIGNvbnN0IHVzZUxlYWRpbmdEb3QgPSBvcHRpb25zLnVzZUxlYWRpbmdEb3QgPz8gKG9wdGlvbnMub3JpZ2luYWxMaW5rID8gdGVzdExlYWRpbmdEb3Qob3B0aW9ucy5vcmlnaW5hbExpbmspIDogdW5kZWZpbmVkKSA/PyBmYWxzZTtcbiAgICBjb25zdCB1c2VBbmdsZUJyYWNrZXRzID0gb3B0aW9ucy51c2VBbmdsZUJyYWNrZXRzID8/IChvcHRpb25zLm9yaWdpbmFsTGluayA/IHRlc3RBbmdsZUJyYWNrZXRzKG9wdGlvbnMub3JpZ2luYWxMaW5rKSA6IHVuZGVmaW5lZCkgPz8gZmFsc2U7XG5cbiAgICBsZXQgbGlua1RleHQgPSBmaWxlLnBhdGggPT09IHNvdXJjZVBhdGggJiYgc3VicGF0aFxuICAgICAgPyBzdWJwYXRoXG4gICAgICA6IGZvcmNlUmVsYXRpdmVQYXRoXG4gICAgICAgID8gcmVsYXRpdmUoZGlybmFtZShzb3VyY2VQYXRoKSwgaXNXaWtpbGluayA/IHRyaW1NYXJrZG93bkV4dGVuc2lvbihmaWxlKSA6IGZpbGUucGF0aCkgKyBzdWJwYXRoXG4gICAgICAgIDogYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZVRvTGlua3RleHQoZmlsZSwgc291cmNlUGF0aCwgaXNXaWtpbGluaykgKyBzdWJwYXRoO1xuXG4gICAgaWYgKGZvcmNlUmVsYXRpdmVQYXRoICYmIHVzZUxlYWRpbmdEb3QgJiYgIWxpbmtUZXh0LnN0YXJ0c1dpdGgoJy4nKSAmJiAhbGlua1RleHQuc3RhcnRzV2l0aCgnIycpKSB7XG4gICAgICBsaW5rVGV4dCA9ICcuLycgKyBsaW5rVGV4dDtcbiAgICB9XG5cbiAgICBjb25zdCBlbWJlZFByZWZpeCA9IGlzRW1iZWQgPyAnIScgOiAnJztcblxuICAgIGlmICghaXNXaWtpbGluaykge1xuICAgICAgaWYgKHVzZUFuZ2xlQnJhY2tldHMpIHtcbiAgICAgICAgbGlua1RleHQgPSBgPCR7bGlua1RleHR9PmA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaW5rVGV4dCA9IGxpbmtUZXh0LnJlcGxhY2UoU1BFQ0lBTF9MSU5LX1NZTUJPTFNfUkVHRVhQLCBmdW5jdGlvbiAoc3BlY2lhbExpbmtTeW1ib2wpIHtcbiAgICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHNwZWNpYWxMaW5rU3ltYm9sKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghYWxpYXMgJiYgKCFpc0VtYmVkIHx8ICFvcHRpb25zLmFsbG93RW1wdHlFbWJlZEFsaWFzKSkge1xuICAgICAgICBhbGlhcyA9ICFvcHRpb25zLmluY2x1ZGVBdHRhY2htZW50RXh0ZW5zaW9uVG9FbWJlZEFsaWFzIHx8IGlzTWFya2Rvd25GaWxlKGZpbGUpID8gZmlsZS5iYXNlbmFtZSA6IGZpbGUubmFtZTtcbiAgICAgIH1cblxuICAgICAgYWxpYXMgPSBhbGlhcy5yZXBsYWNlKFNQRUNJQUxfTUFSS0RPV05fTElOS19TWU1CT0xTX1JFR0VYLCAnXFxcXCQmJyk7XG5cbiAgICAgIHJldHVybiBgJHtlbWJlZFByZWZpeH1bJHthbGlhc31dKCR7bGlua1RleHR9KWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChhbGlhcyAmJiBhbGlhcy50b0xvd2VyQ2FzZSgpID09PSBsaW5rVGV4dC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgIGxpbmtUZXh0ID0gYWxpYXM7XG4gICAgICAgIGFsaWFzID0gJyc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFsaWFzUGFydCA9IGFsaWFzID8gYHwke2FsaWFzfWAgOiAnJztcbiAgICAgIHJldHVybiBgJHtlbWJlZFByZWZpeH1bWyR7bGlua1RleHR9JHthbGlhc1BhcnR9XV1gO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRWRpdHMgdGhlIGxpbmtzIGluIHRoZSBzcGVjaWZpZWQgZmlsZSBvciBwYXRoIHVzaW5nIHRoZSBwcm92aWRlZCBsaW5rIGNvbnZlcnRlciBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGVkaXQgdGhlIGxpbmtzIGluLlxuICogQHBhcmFtIGxpbmtDb252ZXJ0ZXIgLSBUaGUgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBlYWNoIGxpbmsuXG4gKiBAcGFyYW0gcmV0cnlPcHRpb25zIC0gT3B0aW9uYWwgb3B0aW9ucyBmb3IgcmV0cnlpbmcgdGhlIG9wZXJhdGlvbi5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGxpbmtzIGhhdmUgYmVlbiBlZGl0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlZGl0TGlua3MoXG4gIGFwcDogQXBwLFxuICBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdm9pZC10eXBlXG4gIGxpbmtDb252ZXJ0ZXI6IChsaW5rOiBSZWZlcmVuY2UpID0+IE1heWJlUHJvbWlzZTxzdHJpbmcgfCB2b2lkPixcbiAgcmV0cnlPcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBhcHBseUZpbGVDaGFuZ2VzKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNhY2hlID0gYXdhaXQgZ2V0Q2FjaGVTYWZlKGFwcCwgcGF0aE9yRmlsZSk7XG4gICAgaWYgKCFjYWNoZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGNoYW5nZXM6IEZpbGVDaGFuZ2VbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBsaW5rIG9mIGdldEFsbExpbmtzKGNhY2hlKSkge1xuICAgICAgY29uc3QgbmV3Q29udGVudCA9IGF3YWl0IGxpbmtDb252ZXJ0ZXIobGluayk7XG4gICAgICBpZiAobmV3Q29udGVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNSZWZlcmVuY2VDYWNoZShsaW5rKSkge1xuICAgICAgICBjaGFuZ2VzLnB1c2goe1xuICAgICAgICAgIHN0YXJ0SW5kZXg6IGxpbmsucG9zaXRpb24uc3RhcnQub2Zmc2V0LFxuICAgICAgICAgIGVuZEluZGV4OiBsaW5rLnBvc2l0aW9uLmVuZC5vZmZzZXQsXG4gICAgICAgICAgb2xkQ29udGVudDogbGluay5vcmlnaW5hbCxcbiAgICAgICAgICBuZXdDb250ZW50XG4gICAgICAgIH0gYXMgQ29udGVudENoYW5nZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUobGluaykpIHtcbiAgICAgICAgY2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICBvbGRDb250ZW50OiBsaW5rLm9yaWdpbmFsLFxuICAgICAgICAgIG5ld0NvbnRlbnQsXG4gICAgICAgICAgZnJvbnRNYXR0ZXJLZXk6IGxpbmsua2V5XG4gICAgICAgIH0gYXMgRnJvbnRtYXR0ZXJDaGFuZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaGFuZ2VzO1xuICB9LCByZXRyeU9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFRlc3RzIHdoZXRoZXIgYSBsaW5rIGlzIGFuIGVtYmVkIGxpbms6XG4gKiBgIVtbbGlua11dYCwgYCFbdGl0bGVdKGxpbmspYC5cbiAqXG4gKiBAcGFyYW0gbGluayAtIExpbmsgdG8gdGVzdFxuICogQHJldHVybnMgV2hldGhlciB0aGUgbGluayBpcyBhbiBlbWJlZCBsaW5rXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0RW1iZWQobGluazogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBsaW5rLnN0YXJ0c1dpdGgoJyFbJyk7XG59XG5cbi8qKlxuICogVGVzdHMgd2hldGhlciBhIGxpbmsgaXMgYSB3aWtpbGluaywgcG9zc2libHkgZW1iZWQ6XG4gKiBgW1tsaW5rXV1gLCBgIVtbbGlua11dYC5cbiAqXG4gKiBAcGFyYW0gbGluayAtIExpbmsgdG8gdGVzdFxuICogQHJldHVybnMgV2hldGhlciB0aGUgbGluayBpcyBhIHdpa2lsaW5rXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0V2lraWxpbmsobGluazogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBsaW5rLmluY2x1ZGVzKCdbWycpO1xufVxuXG4vKipcbiAqIFRlc3RzIHdoZXRoZXIgYSBsaW5rIGhhcyBhIGxlYWRpbmcgZG90LCBwb3NzaWJseSBlbWJlZDpcbiAqIGBbWy4vbGlua11dYCwgYFt0aXRsZV0oLi9saW5rKWAsIGBbdGl0bGVdKDwuL2xpbms+KWAsXG4gKiBgIVtbLi9saW5rXV1gLCBgIVt0aXRsZV0oLi9saW5rKWAsIGAhW3RpdGxlXSg8Li9saW5rPilgLlxuICpcbiAqIEBwYXJhbSBsaW5rIC0gTGluayB0byB0ZXN0XG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBsaW5rIGhhcyBhIGxlYWRpbmcgZG90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0TGVhZGluZ0RvdChsaW5rOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGxpbmsuaW5jbHVkZXMoJ1tbLi8nKSB8fCBsaW5rLmluY2x1ZGVzKCddKC4vJykgfHwgbGluay5pbmNsdWRlcygnXSg8Li8nKTtcbn1cblxuLyoqXG4gKiBUZXN0cyB3aGV0aGVyIGEgbGluayB1c2VzIGFuZ2xlIGJyYWNrZXRzLCBwb3NzaWJseSBlbWJlZDpcbiAqIGBbdGl0bGVdKDxsaW5rPilgLCBgIVt0aXRsZV0oPGxpbms+KWAuXG4gKlxuICogQHBhcmFtIGxpbmsgLSBMaW5rIHRvIHRlc3RcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGxpbmsgdXNlcyBhbmdsZSBicmFja2V0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gdGVzdEFuZ2xlQnJhY2tldHMobGluazogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBsaW5rLmluY2x1ZGVzKCddKDwnKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtB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
|
281
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0xpbmsudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIExpbmtcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdGllcyBmb3IgaGFuZGxpbmcgYW5kIHVwZGF0aW5nIGxpbmtzIHdpdGhpbiBPYnNpZGlhbiB2YXVsdHMuIEl0IGluY2x1ZGVzXG4gKiBmdW5jdGlvbnMgdG8gc3BsaXQgcGF0aHMsIHVwZGF0ZSBsaW5rcyBpbiBmaWxlcywgYW5kIGdlbmVyYXRlIG1hcmtkb3duIGxpbmtzIHdpdGggdmFyaW91cyBvcHRpb25zLlxuICogVGhlIGZ1bmN0aW9ucyBpbnRlZ3JhdGUgd2l0aCBPYnNpZGlhbidzIEFQSSB0byBlbnN1cmUgdGhhdCBsaW5rcyBhcmUgbWFuYWdlZCBjb3JyZWN0bHkgd2l0aGluIHRoZSB2YXVsdC5cbiAqKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIFJlZmVyZW5jZSxcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplUGF0aCxcbiAgcGFyc2VMaW5rdGV4dFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHtcbiAgTWF5YmVQcm9taXNlLFxuICBSZXRyeU9wdGlvbnNcbn0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHtcbiAgYmFzZW5hbWUsXG4gIGRpcm5hbWUsXG4gIGV4dG5hbWUsXG4gIGpvaW4sXG4gIHJlbGF0aXZlXG59IGZyb20gJy4uL1BhdGgudHMnO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnLi4vU3RyaW5nLnRzJztcbmltcG9ydCB0eXBlIHsgRmlsZUNoYW5nZSB9IGZyb20gJy4vRmlsZUNoYW5nZS50cyc7XG5pbXBvcnQgeyBhcHBseUZpbGVDaGFuZ2VzIH0gZnJvbSAnLi9GaWxlQ2hhbmdlLnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRQYXRoLFxuICBpc01hcmtkb3duRmlsZSxcbiAgdHJpbU1hcmtkb3duRXh0ZW5zaW9uXG59IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBnZXRBbGxMaW5rcyxcbiAgZ2V0Q2FjaGVTYWZlLFxuICB0ZW1wUmVnaXN0ZXJGaWxlQW5kUnVuXG59IGZyb20gJy4vTWV0YWRhdGFDYWNoZS50cyc7XG5pbXBvcnQge1xuICBzaG91bGRVc2VSZWxhdGl2ZUxpbmtzLFxuICBzaG91bGRVc2VXaWtpbGlua3Ncbn0gZnJvbSAnLi9PYnNpZGlhblNldHRpbmdzLnRzJztcbmltcG9ydCB7IHJlZmVyZW5jZVRvRmlsZUNoYW5nZSB9IGZyb20gJy4vUmVmZXJlbmNlLnRzJztcblxuLyoqXG4gKiBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIHNwZWNpYWwgbGluayBzeW1ib2xzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udHJvbC1yZWdleFxuY29uc3QgU1BFQ0lBTF9MSU5LX1NZTUJPTFNfUkVHRVhQID0gL1tcXFxcXFx4MDBcXHgwOFxceDBCXFx4MENcXHgwRS1cXHgxRiBdL2c7XG5cbi8qKlxuICogUmVndWxhciBleHByZXNzaW9uIGZvciBzcGVjaWFsIG1hcmtkb3duIGxpbmsgc3ltYm9scy5cbiAqL1xuY29uc3QgU1BFQ0lBTF9NQVJLRE9XTl9MSU5LX1NZTUJPTFNfUkVHRVggPSAvW1xcXFxbXFxdPD5fKn49YCRdL2c7XG5cbi8qKlxuICogU3BsaXRzIGEgbGluayBpbnRvIGl0cyBsaW5rIHBhdGggYW5kIHN1YnBhdGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BsaXRTdWJwYXRoUmVzdWx0IHtcbiAgLyoqXG4gICAqIFRoZSBsaW5rIHBhdGguXG4gICAqL1xuICBsaW5rUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VicGF0aC5cbiAgICovXG4gIHN1YnBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTcGxpdHMgYSBsaW5rIGludG8gaXRzIGxpbmsgcGF0aCBhbmQgc3VicGF0aC5cbiAqXG4gKiBAcGFyYW0gbGluayAtIFRoZSBsaW5rIHRvIHNwbGl0LlxuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGxpbmsgcGF0aCBhbmQgc3VicGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0U3VicGF0aChsaW5rOiBzdHJpbmcpOiBTcGxpdFN1YnBhdGhSZXN1bHQge1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZUxpbmt0ZXh0KG5vcm1hbGl6ZShsaW5rKSk7XG4gIHJldHVybiB7XG4gICAgbGlua1BhdGg6IHBhcnNlZC5wYXRoLFxuICAgIHN1YnBhdGg6IHBhcnNlZC5zdWJwYXRoXG4gIH07XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdXBkYXRpbmcgbGlua3MgaW4gYSBmaWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUxpbmtzSW5GaWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgb2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBmaWxlIHRvIHVwZGF0ZSB0aGUgbGlua3MgaW4uXG4gICAqL1xuICBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgb2xkIHBhdGggb2YgdGhlIGZpbGUuXG4gICAqL1xuICBvbGRQYXRoT3JGaWxlPzogUGF0aE9yRmlsZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBtYXAgb2Ygb2xkIGFuZCBuZXcgcGF0aHMgZm9yIHJlbmFtaW5nIGxpbmtzLlxuICAgKi9cbiAgcmVuYW1lTWFwPzogTWFwPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBmb3JjZSB0aGUgbGlua3MgdG8gYmUgaW4gTWFya2Rvd24gZm9ybWF0LlxuICAgKi9cbiAgZm9yY2VNYXJrZG93bkxpbmtzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byB1cGRhdGUgb25seSBlbWJlZGRlZCBsaW5rcy5cbiAgICovXG4gIGVtYmVkT25seUxpbmtzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byB1cGRhdGUgZmlsZW5hbWUgYWxpYXMuIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICovXG4gIHNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXM/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIGxpbmtzIGluIGEgZmlsZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB1cGRhdGluZyB0aGUgbGlua3MuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBsaW5rcyBhcmUgdXBkYXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUxpbmtzSW5GaWxlKG9wdGlvbnM6IFVwZGF0ZUxpbmtzSW5GaWxlT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIHBhdGhPckZpbGUsXG4gICAgb2xkUGF0aE9yRmlsZSxcbiAgICByZW5hbWVNYXAsXG4gICAgZm9yY2VNYXJrZG93bkxpbmtzLFxuICAgIGVtYmVkT25seUxpbmtzLFxuICAgIHNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXNcbiAgfSA9IG9wdGlvbnM7XG4gIGF3YWl0IGVkaXRMaW5rcyhhcHAsIHBhdGhPckZpbGUsIChsaW5rKSA9PiB7XG4gICAgY29uc3QgaXNFbWJlZExpbmsgPSB0ZXN0RW1iZWQobGluay5vcmlnaW5hbCk7XG4gICAgaWYgKGVtYmVkT25seUxpbmtzICE9PSB1bmRlZmluZWQgJiYgZW1iZWRPbmx5TGlua3MgIT09IGlzRW1iZWRMaW5rKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBjb252ZXJ0TGluayh7XG4gICAgICBhcHAsXG4gICAgICBsaW5rLFxuICAgICAgc291cmNlUGF0aE9yRmlsZTogcGF0aE9yRmlsZSxcbiAgICAgIG9sZFBhdGhPckZpbGUsXG4gICAgICByZW5hbWVNYXAsXG4gICAgICBmb3JjZU1hcmtkb3duTGlua3MsXG4gICAgICBzaG91bGRVcGRhdGVGaWxlbmFtZUFsaWFzXG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbnZlcnRpbmcgYSBsaW5rLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnRMaW5rT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSByZWZlcmVuY2UgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgbGluazogUmVmZXJlbmNlO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIGZpbGUgY29udGFpbmluZyB0aGUgbGluay5cbiAgICovXG4gIHNvdXJjZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcGF0aCBvZiB0aGUgbGluay5cbiAgICovXG4gIG9sZFBhdGhPckZpbGU/OiBQYXRoT3JGaWxlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIG1hcCBvZiBvbGQgYW5kIG5ldyBmaWxlIHBhdGhzLlxuICAgKi9cbiAgcmVuYW1lTWFwPzogTWFwPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBmb3JjZSBtYXJrZG93biBsaW5rcy5cbiAgICovXG4gIGZvcmNlTWFya2Rvd25MaW5rcz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXBkYXRlIGZpbGVuYW1lIGFsaWFzLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICBzaG91bGRVcGRhdGVGaWxlbmFtZUFsaWFzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGxpbmsgdG8gYSBuZXcgcGF0aC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBjb252ZXJ0aW5nIHRoZSBsaW5rLlxuICogQHJldHVybnMgVGhlIGNvbnZlcnRlZCBsaW5rLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydExpbmsob3B0aW9uczogQ29udmVydExpbmtPcHRpb25zKTogc3RyaW5nIHtcbiAgcmV0dXJuIHVwZGF0ZUxpbmsoe1xuICAgIGFwcDogb3B0aW9ucy5hcHAsXG4gICAgbGluazogb3B0aW9ucy5saW5rLFxuICAgIHBhdGhPckZpbGU6IGV4dHJhY3RMaW5rRmlsZShvcHRpb25zLmFwcCwgb3B0aW9ucy5saW5rLCBvcHRpb25zLnNvdXJjZVBhdGhPckZpbGUpLFxuICAgIG9sZFBhdGhPckZpbGU6IG9wdGlvbnMub2xkUGF0aE9yRmlsZSxcbiAgICBzb3VyY2VQYXRoT3JGaWxlOiBvcHRpb25zLnNvdXJjZVBhdGhPckZpbGUsXG4gICAgcmVuYW1lTWFwOiBvcHRpb25zLnJlbmFtZU1hcCxcbiAgICBmb3JjZU1hcmtkb3duTGlua3M6IG9wdGlvbnMuZm9yY2VNYXJrZG93bkxpbmtzLFxuICAgIHNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXM6IG9wdGlvbnMuc2hvdWxkVXBkYXRlRmlsZW5hbWVBbGlhc1xuICB9KTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgZmlsZSBhc3NvY2lhdGVkIHdpdGggYSBsaW5rLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gbGluayAtIFRoZSByZWZlcmVuY2UgY2FjaGUgZm9yIHRoZSBsaW5rLlxuICogQHBhcmFtIG5vdGVQYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSBvZiB0aGUgbm90ZSBjb250YWluaW5nIHRoZSBsaW5rLlxuICogQHJldHVybnMgVGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rLCBvciBudWxsIGlmIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RMaW5rRmlsZShhcHA6IEFwcCwgbGluazogUmVmZXJlbmNlLCBub3RlUGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFRGaWxlIHwgbnVsbCB7XG4gIGNvbnN0IHsgbGlua1BhdGggfSA9IHNwbGl0U3VicGF0aChsaW5rLmxpbmspO1xuICByZXR1cm4gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3QobGlua1BhdGgsIGdldFBhdGgobm90ZVBhdGhPckZpbGUpKTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB1cGRhdGluZyBhIGxpbmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlTGlua09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVmZXJlbmNlIGZvciB0aGUgbGluay5cbiAgICovXG4gIGxpbms6IFJlZmVyZW5jZTtcblxuICAvKipcbiAgICogVGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rLlxuICAgKi9cbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcGF0aCBvZiB0aGUgZmlsZS5cbiAgICovXG4gIG9sZFBhdGhPckZpbGU/OiBQYXRoT3JGaWxlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIGZpbGUgY29udGFpbmluZyB0aGUgbGluay5cbiAgICovXG4gIHNvdXJjZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIG9sZCBhbmQgbmV3IGZpbGUgcGF0aHMuXG4gICAqL1xuICByZW5hbWVNYXA/OiBNYXA8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGZvcmNlIG1hcmtkb3duIGxpbmtzLlxuICAgKi9cbiAgZm9yY2VNYXJrZG93bkxpbmtzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byB1cGRhdGUgZmlsZW5hbWUgYWxpYXMuIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICovXG4gIHNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXM/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgYSBsaW5rIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHVwZGF0aW5nIHRoZSBsaW5rLlxuICogQHJldHVybnMgVGhlIHVwZGF0ZWQgbGluay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUxpbmsob3B0aW9uczogVXBkYXRlTGlua09wdGlvbnMpOiBzdHJpbmcge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGxpbmssXG4gICAgcGF0aE9yRmlsZSxcbiAgICBvbGRQYXRoT3JGaWxlLFxuICAgIHNvdXJjZVBhdGhPckZpbGUsXG4gICAgcmVuYW1lTWFwLFxuICAgIGZvcmNlTWFya2Rvd25MaW5rcyxcbiAgICBzaG91bGRVcGRhdGVGaWxlbmFtZUFsaWFzXG4gIH0gPSBvcHRpb25zO1xuICBpZiAoIXBhdGhPckZpbGUpIHtcbiAgICByZXR1cm4gbGluay5vcmlnaW5hbDtcbiAgfVxuICBsZXQgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoT3JGaWxlKTtcbiAgY29uc3Qgb2xkUGF0aCA9IGdldFBhdGgob2xkUGF0aE9yRmlsZSA/PyBzb3VyY2VQYXRoT3JGaWxlKTtcbiAgY29uc3QgaXNXaWtpbGluayA9IHRlc3RXaWtpbGluayhsaW5rLm9yaWdpbmFsKSAmJiBmb3JjZU1hcmtkb3duTGlua3MgIT09IHRydWU7XG4gIGNvbnN0IHsgc3VicGF0aCB9ID0gc3BsaXRTdWJwYXRoKGxpbmsubGluayk7XG5cbiAgY29uc3QgbmV3UGF0aCA9IHJlbmFtZU1hcD8uZ2V0KGZpbGUucGF0aCk7XG4gIGxldCBhbGlhcyA9IHNob3VsZFJlc2V0QWxpYXMoe1xuICAgIGFwcCxcbiAgICBkaXNwbGF5VGV4dDogbGluay5kaXNwbGF5VGV4dCxcbiAgICBwYXRoT3JGaWxlLFxuICAgIG90aGVyUGF0aE9yRmlsZXM6IFtvbGRQYXRoLCBuZXdQYXRoXSxcbiAgICBzb3VyY2VQYXRoT3JGaWxlLFxuICAgIGlzV2lraWxpbmtcbiAgfSlcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogbGluay5kaXNwbGF5VGV4dDtcblxuICBpZiAoc2hvdWxkVXBkYXRlRmlsZW5hbWVBbGlhcyA/PyB0cnVlKSB7XG4gICAgaWYgKGFsaWFzPy50b0xvd2VyQ2FzZSgpID09PSBiYXNlbmFtZShvbGRQYXRoLCBleHRuYW1lKG9sZFBhdGgpKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBhbGlhcyA9IGZpbGUuYmFzZW5hbWU7XG4gICAgfSBlbHNlIGlmIChhbGlhcz8udG9Mb3dlckNhc2UoKSA9PT0gYmFzZW5hbWUob2xkUGF0aCkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgYWxpYXMgPSBmaWxlLm5hbWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKG5ld1BhdGgpIHtcbiAgICBmaWxlID0gZ2V0RmlsZShhcHAsIG5ld1BhdGgsIHRydWUpO1xuICB9XG5cbiAgY29uc3QgbmV3TGluayA9IGdlbmVyYXRlTWFya2Rvd25MaW5rKHtcbiAgICBhcHAsXG4gICAgcGF0aE9yRmlsZTogZmlsZSxcbiAgICBzb3VyY2VQYXRoT3JGaWxlLFxuICAgIHN1YnBhdGgsXG4gICAgYWxpYXMsXG4gICAgaXNXaWtpbGluazogZm9yY2VNYXJrZG93bkxpbmtzID8gZmFsc2UgOiB1bmRlZmluZWQsXG4gICAgb3JpZ2luYWxMaW5rOiBsaW5rLm9yaWdpbmFsXG4gIH0pO1xuICByZXR1cm4gbmV3TGluaztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBkZXRlcm1pbmluZyBpZiB0aGUgYWxpYXMgb2YgYSBsaW5rIHNob3VsZCBiZSByZXNldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaG91bGRSZXNldEFsaWFzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwbGF5IHRleHQgb2YgdGhlIGxpbmsuXG4gICAqL1xuICBkaXNwbGF5VGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBmaWxlIG9mIHRoZSBsaW5rLlxuICAgKi9cbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogT3RoZXIgcGF0aHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rLlxuICAgKi9cbiAgb3RoZXJQYXRoT3JGaWxlczogKFBhdGhPckZpbGUgfCB1bmRlZmluZWQpW107XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgcGF0aCBvZiB0aGUgbGluay5cbiAgICovXG4gIHNvdXJjZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGluayBpcyBhIHdpa2lsaW5rLlxuICAgKi9cbiAgaXNXaWtpbGluaz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiB0aGUgYWxpYXMgb2YgYSBsaW5rIHNob3VsZCBiZSByZXNldC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBkZXRlcm1pbmluZyBpZiB0aGUgYWxpYXMgc2hvdWxkIGJlIHJlc2V0LlxuICogQHJldHVybnMgV2hldGhlciB0aGUgYWxpYXMgc2hvdWxkIGJlIHJlc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkUmVzZXRBbGlhcyhvcHRpb25zOiBTaG91bGRSZXNldEFsaWFzT3B0aW9ucyk6IGJvb2xlYW4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGRpc3BsYXlUZXh0LFxuICAgIHBhdGhPckZpbGUsXG4gICAgb3RoZXJQYXRoT3JGaWxlcyxcbiAgICBzb3VyY2VQYXRoT3JGaWxlLFxuICAgIGlzV2lraWxpbmtcbiAgfSA9IG9wdGlvbnM7XG4gIGlmIChpc1dpa2lsaW5rID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgaWYgKCFkaXNwbGF5VGV4dCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3Qgc291cmNlUGF0aCA9IGdldFBhdGgoc291cmNlUGF0aE9yRmlsZSk7XG4gIGNvbnN0IHNvdXJjZURpciA9IGRpcm5hbWUoc291cmNlUGF0aCk7XG5cbiAgY29uc3QgYWxpYXNlc1RvUmVzZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBmb3IgKGNvbnN0IHBhdGhPckZpbGUgb2YgW2ZpbGUucGF0aCwgLi4ub3RoZXJQYXRoT3JGaWxlc10pIHtcbiAgICBpZiAoIXBhdGhPckZpbGUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHBhdGggPSBnZXRQYXRoKHBhdGhPckZpbGUpO1xuICAgIGFsaWFzZXNUb1Jlc2V0LmFkZChwYXRoKTtcbiAgICBhbGlhc2VzVG9SZXNldC5hZGQoYmFzZW5hbWUocGF0aCkpO1xuICAgIGFsaWFzZXNUb1Jlc2V0LmFkZChyZWxhdGl2ZShzb3VyY2VEaXIsIHBhdGgpKTtcbiAgfVxuXG4gIGFsaWFzZXNUb1Jlc2V0LmFkZChhcHAubWV0YWRhdGFDYWNoZS5maWxlVG9MaW5rdGV4dChmaWxlLCBzb3VyY2VQYXRoLCBmYWxzZSkpO1xuXG4gIGNvbnN0IGNsZWFuRGlzcGxheVRleHQgPSBub3JtYWxpemVQYXRoKGRpc3BsYXlUZXh0LnNwbGl0KCcgPiAnKVswXSA/PyAnJykucmVwbGFjZSgvXlxcLlxcLy8sICcnKS50b0xvd2VyQ2FzZSgpO1xuXG4gIGZvciAoY29uc3QgYWxpYXMgb2YgYWxpYXNlc1RvUmVzZXQpIHtcbiAgICBpZiAoYWxpYXMudG9Mb3dlckNhc2UoKSA9PT0gY2xlYW5EaXNwbGF5VGV4dCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZGlyID0gZGlybmFtZShhbGlhcyk7XG4gICAgY29uc3QgYmFzZSA9IGJhc2VuYW1lKGFsaWFzLCBleHRuYW1lKGFsaWFzKSk7XG4gICAgaWYgKGpvaW4oZGlyLCBiYXNlKS50b0xvd2VyQ2FzZSgpID09PSBjbGVhbkRpc3BsYXlUZXh0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogV3JhcHBlciBmb3IgZGVmYXVsdCBvcHRpb25zIGZvciBnZW5lcmF0aW5nIG1hcmtkb3duIGxpbmtzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlTWFya2Rvd25MaW5rRGVmYXVsdE9wdGlvbnNXcmFwcGVyIHtcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IG9wdGlvbnMgZm9yIGdlbmVyYXRpbmcgbWFya2Rvd24gbGlua3MuXG4gICAqL1xuICBkZWZhdWx0T3B0aW9uc0ZuOiAoKSA9PiBQYXJ0aWFsPEdlbmVyYXRlTWFya2Rvd25MaW5rT3B0aW9ucz47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZ2VuZXJhdGluZyBhIG1hcmtkb3duIGxpbmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVNYXJrZG93bkxpbmtPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGZpbGUgdG8gbGluayB0by5cbiAgICovXG4gIHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgcGF0aCBvZiB0aGUgbGluay5cbiAgICovXG4gIHNvdXJjZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJwYXRoIG9mIHRoZSBsaW5rLlxuICAgKi9cbiAgc3VicGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGFsaWFzIGZvciB0aGUgbGluay5cbiAgICovXG4gIGFsaWFzPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGxpbmsgc2hvdWxkIGJlIGVtYmVkZGVkLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgYmUgaW5mZXJyZWQgYmFzZWQgb24gdGhlIGZpbGUgdHlwZS5cbiAgICovXG4gIGlzRW1iZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGxpbmsgc2hvdWxkIGJlIGEgd2lraWxpbmsuIElmIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBiZSBpbmZlcnJlZCBiYXNlZCBvbiB0aGUgT2JzaWRpYW4gc2V0dGluZ3MuXG4gICAqL1xuICBpc1dpa2lsaW5rPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBsaW5rIHNob3VsZCBiZSByZWxhdGl2ZS4gSWYgbm90IHByb3ZpZGVkIG9yIGBmYWxzZWAsIGl0IHdpbGwgYmUgaW5mZXJyZWQgYmFzZWQgb24gdGhlIE9ic2lkaWFuIHNldHRpbmdzLlxuICAgKi9cbiAgZm9yY2VSZWxhdGl2ZVBhdGg/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGxpbmsgc2hvdWxkIHVzZSBhIGxlYWRpbmcgZG90LiBEZWZhdWx0cyB0byBgZmFsc2VgLiBIYXMgbm8gZWZmZWN0IGlmIGBpc1dpa2lsaW5rYCBpcyBgdHJ1ZWAgb3IgYGlzUmVsYXRpdmVgIGlzIGBmYWxzZWAuXG4gICAqL1xuICB1c2VMZWFkaW5nRG90PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBsaW5rIHNob3VsZCB1c2UgYW5nbGUgYnJhY2tldHMuIERlZmF1bHRzIHRvIGBmYWxzZWAuIEhhcyBubyBlZmZlY3QgaWYgYGlzV2lraWxpbmtgIGlzIGB0cnVlYFxuICAgKi9cbiAgdXNlQW5nbGVCcmFja2V0cz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAgKiBUaGUgb3JpZ2luYWwgbGluayB0ZXh0LiBJZiBwcm92aWRlZCwgaXQgd2lsbCBiZSB1c2VkIHRvIGluZmVyIHRoZSB2YWx1ZXMgb2YgYGlzRW1iZWRgLCBgaXNXaWtpbGlua2AsIGB1c2VMZWFkaW5nRG90YCwgYW5kIGB1c2VBbmdsZUJyYWNrZXRzYC5cbiAgICAqIFRoZXNlIGluZmVycmVkIHZhbHVlcyB3aWxsIGJlIG92ZXJyaWRkZW4gYnkgY29ycmVzcG9uZGluZyBzZXR0aW5ncyBpZiBzcGVjaWZpZWQuXG4gICAgKi9cbiAgb3JpZ2luYWxMaW5rPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IG5vbi1leGlzdGluZyBmaWxlcy4gSWYgYGZhbHNlYCBhbmQgYHBhdGhPckZpbGVgIGlzIGEgbm9uLWV4aXN0aW5nIGZpbGUsIGFuIGVycm9yIHdpbGwgYmUgdGhyb3duLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgYWxsb3dOb25FeGlzdGluZ0ZpbGU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IGFuIGVtcHR5IGFsaWFzIGZvciBlbWJlZHMuIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICovXG4gIGFsbG93RW1wdHlFbWJlZEFsaWFzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHRoZSBhdHRhY2htZW50IGV4dGVuc2lvbiBpbiB0aGUgZW1iZWQgYWxpYXMuIEhhcyBubyBlZmZlY3QgaWYgYGFsbG93RW1wdHlFbWJlZEFsaWFzYCBpcyBgdHJ1ZWAuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICBpbmNsdWRlQXR0YWNobWVudEV4dGVuc2lvblRvRW1iZWRBbGlhcz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgbWFya2Rvd24gbGluayBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBnZW5lcmF0aW5nIHRoZSBtYXJrZG93biBsaW5rLlxuICogQHJldHVybnMgVGhlIGdlbmVyYXRlZCBtYXJrZG93biBsaW5rLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVNYXJrZG93bkxpbmsob3B0aW9uczogR2VuZXJhdGVNYXJrZG93bkxpbmtPcHRpb25zKTogc3RyaW5nIHtcbiAgY29uc3QgeyBhcHAgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgY29uZmlndXJhYmxlRGVmYXVsdE9wdGlvbnNGbiA9IChhcHAuZmlsZU1hbmFnZXIuZ2VuZXJhdGVNYXJrZG93bkxpbmsgYXMgUGFydGlhbDxHZW5lcmF0ZU1hcmtkb3duTGlua0RlZmF1bHRPcHRpb25zV3JhcHBlcj4pLmRlZmF1bHRPcHRpb25zRm4gPz8gKCgpOiBQYXJ0aWFsPEdlbmVyYXRlTWFya2Rvd25MaW5rT3B0aW9ucz4gPT4gKHt9KSk7XG4gIGNvbnN0IGNvbmZpZ3VyYWJsZURlZmF1bHRPcHRpb25zID0gY29uZmlndXJhYmxlRGVmYXVsdE9wdGlvbnNGbigpO1xuXG4gIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogUGFydGlhbDxHZW5lcmF0ZU1hcmtkb3duTGlua09wdGlvbnM+ID0ge1xuICAgIGFsbG93RW1wdHlFbWJlZEFsaWFzOiB0cnVlXG4gIH07XG5cbiAgb3B0aW9ucyA9IHsgLi4uREVGQVVMVF9PUFRJT05TLCAuLi5jb25maWd1cmFibGVEZWZhdWx0T3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuXG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgb3B0aW9ucy5wYXRoT3JGaWxlLCBvcHRpb25zLmFsbG93Tm9uRXhpc3RpbmdGaWxlKTtcblxuICByZXR1cm4gdGVtcFJlZ2lzdGVyRmlsZUFuZFJ1bihhcHAsIGZpbGUsICgpID0+IHtcbiAgICBjb25zdCBzb3VyY2VQYXRoID0gZ2V0UGF0aChvcHRpb25zLnNvdXJjZVBhdGhPckZpbGUpO1xuICAgIGNvbnN0IHN1YnBhdGggPSBvcHRpb25zLnN1YnBhdGggPz8gJyc7XG4gICAgbGV0IGFsaWFzID0gb3B0aW9ucy5hbGlhcyA/PyAnJztcbiAgICBjb25zdCBpc0VtYmVkID0gb3B0aW9ucy5pc0VtYmVkID8/IChvcHRpb25zLm9yaWdpbmFsTGluayA/IHRlc3RFbWJlZChvcHRpb25zLm9yaWdpbmFsTGluaykgOiB1bmRlZmluZWQpID8/ICFpc01hcmtkb3duRmlsZShmaWxlKTtcbiAgICBjb25zdCBpc1dpa2lsaW5rID0gb3B0aW9ucy5pc1dpa2lsaW5rID8/IChvcHRpb25zLm9yaWdpbmFsTGluayA/IHRlc3RXaWtpbGluayhvcHRpb25zLm9yaWdpbmFsTGluaykgOiB1bmRlZmluZWQpID8/IHNob3VsZFVzZVdpa2lsaW5rcyhhcHApO1xuICAgIGNvbnN0IGZvcmNlUmVsYXRpdmVQYXRoID0gb3B0aW9ucy5mb3JjZVJlbGF0aXZlUGF0aCA/PyBzaG91bGRVc2VSZWxhdGl2ZUxpbmtzKGFwcCk7XG4gICAgY29uc3QgdXNlTGVhZGluZ0RvdCA9IG9wdGlvbnMudXNlTGVhZGluZ0RvdCA/PyAob3B0aW9ucy5vcmlnaW5hbExpbmsgPyB0ZXN0TGVhZGluZ0RvdChvcHRpb25zLm9yaWdpbmFsTGluaykgOiB1bmRlZmluZWQpID8/IGZhbHNlO1xuICAgIGNvbnN0IHVzZUFuZ2xlQnJhY2tldHMgPSBvcHRpb25zLnVzZUFuZ2xlQnJhY2tldHMgPz8gKG9wdGlvbnMub3JpZ2luYWxMaW5rID8gdGVzdEFuZ2xlQnJhY2tldHMob3B0aW9ucy5vcmlnaW5hbExpbmspIDogdW5kZWZpbmVkKSA/PyBmYWxzZTtcblxuICAgIGxldCBsaW5rVGV4dCA9IGZpbGUucGF0aCA9PT0gc291cmNlUGF0aCAmJiBzdWJwYXRoXG4gICAgICA/IHN1YnBhdGhcbiAgICAgIDogZm9yY2VSZWxhdGl2ZVBhdGhcbiAgICAgICAgPyByZWxhdGl2ZShkaXJuYW1lKHNvdXJjZVBhdGgpLCBpc1dpa2lsaW5rID8gdHJpbU1hcmtkb3duRXh0ZW5zaW9uKGZpbGUpIDogZmlsZS5wYXRoKSArIHN1YnBhdGhcbiAgICAgICAgOiBhcHAubWV0YWRhdGFDYWNoZS5maWxlVG9MaW5rdGV4dChmaWxlLCBzb3VyY2VQYXRoLCBpc1dpa2lsaW5rKSArIHN1YnBhdGg7XG5cbiAgICBpZiAoZm9yY2VSZWxhdGl2ZVBhdGggJiYgdXNlTGVhZGluZ0RvdCAmJiAhbGlua1RleHQuc3RhcnRzV2l0aCgnLicpICYmICFsaW5rVGV4dC5zdGFydHNXaXRoKCcjJykpIHtcbiAgICAgIGxpbmtUZXh0ID0gJy4vJyArIGxpbmtUZXh0O1xuICAgIH1cblxuICAgIGNvbnN0IGVtYmVkUHJlZml4ID0gaXNFbWJlZCA/ICchJyA6ICcnO1xuXG4gICAgaWYgKCFpc1dpa2lsaW5rKSB7XG4gICAgICBpZiAodXNlQW5nbGVCcmFja2V0cykge1xuICAgICAgICBsaW5rVGV4dCA9IGA8JHtsaW5rVGV4dH0+YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpbmtUZXh0ID0gbGlua1RleHQucmVwbGFjZShTUEVDSUFMX0xJTktfU1lNQk9MU19SRUdFWFAsIGZ1bmN0aW9uIChzcGVjaWFsTGlua1N5bWJvbCkge1xuICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoc3BlY2lhbExpbmtTeW1ib2wpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFhbGlhcyAmJiAoIWlzRW1iZWQgfHwgIW9wdGlvbnMuYWxsb3dFbXB0eUVtYmVkQWxpYXMpKSB7XG4gICAgICAgIGFsaWFzID0gIW9wdGlvbnMuaW5jbHVkZUF0dGFjaG1lbnRFeHRlbnNpb25Ub0VtYmVkQWxpYXMgfHwgaXNNYXJrZG93bkZpbGUoZmlsZSkgPyBmaWxlLmJhc2VuYW1lIDogZmlsZS5uYW1lO1xuICAgICAgfVxuXG4gICAgICBhbGlhcyA9IGFsaWFzLnJlcGxhY2UoU1BFQ0lBTF9NQVJLRE9XTl9MSU5LX1NZTUJPTFNfUkVHRVgsICdcXFxcJCYnKTtcblxuICAgICAgcmV0dXJuIGAke2VtYmVkUHJlZml4fVske2FsaWFzfV0oJHtsaW5rVGV4dH0pYDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGFsaWFzICYmIGFsaWFzLnRvTG93ZXJDYXNlKCkgPT09IGxpbmtUZXh0LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgbGlua1RleHQgPSBhbGlhcztcbiAgICAgICAgYWxpYXMgPSAnJztcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWxpYXNQYXJ0ID0gYWxpYXMgPyBgfCR7YWxpYXN9YCA6ICcnO1xuICAgICAgcmV0dXJuIGAke2VtYmVkUHJlZml4fVtbJHtsaW5rVGV4dH0ke2FsaWFzUGFydH1dXWA7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBFZGl0cyB0aGUgbGlua3MgaW4gdGhlIHNwZWNpZmllZCBmaWxlIG9yIHBhdGggdXNpbmcgdGhlIHByb3ZpZGVkIGxpbmsgY29udmVydGVyIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gZWRpdCB0aGUgbGlua3MgaW4uXG4gKiBAcGFyYW0gbGlua0NvbnZlcnRlciAtIFRoZSBmdW5jdGlvbiB0aGF0IGNvbnZlcnRzIGVhY2ggbGluay5cbiAqIEBwYXJhbSByZXRyeU9wdGlvbnMgLSBPcHRpb25hbCBvcHRpb25zIGZvciByZXRyeWluZyB0aGUgb3BlcmF0aW9uLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbGlua3MgaGF2ZSBiZWVuIGVkaXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVkaXRMaW5rcyhcbiAgYXBwOiBBcHAsXG4gIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGVcbiAgbGlua0NvbnZlcnRlcjogKGxpbms6IFJlZmVyZW5jZSkgPT4gTWF5YmVQcm9taXNlPHN0cmluZyB8IHZvaWQ+LFxuICByZXRyeU9wdGlvbnM6IFBhcnRpYWw8UmV0cnlPcHRpb25zPiA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGFwcGx5RmlsZUNoYW5nZXMoYXBwLCBwYXRoT3JGaWxlLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY2FjaGUgPSBhd2FpdCBnZXRDYWNoZVNhZmUoYXBwLCBwYXRoT3JGaWxlKTtcbiAgICBpZiAoIWNhY2hlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgY2hhbmdlczogRmlsZUNoYW5nZVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGxpbmsgb2YgZ2V0QWxsTGlua3MoY2FjaGUpKSB7XG4gICAgICBjb25zdCBuZXdDb250ZW50ID0gYXdhaXQgbGlua0NvbnZlcnRlcihsaW5rKTtcbiAgICAgIGlmIChuZXdDb250ZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNoYW5nZXMucHVzaChyZWZlcmVuY2VUb0ZpbGVDaGFuZ2UobGluaywgbmV3Q29udGVudCkpO1xuICAgIH1cblxuICAgIHJldHVybiBjaGFuZ2VzO1xuICB9LCByZXRyeU9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFRlc3RzIHdoZXRoZXIgYSBsaW5rIGlzIGFuIGVtYmVkIGxpbms6XG4gKiBgIVtbbGlua11dYCwgYCFbdGl0bGVdKGxpbmspYC5cbiAqXG4gKiBAcGFyYW0gbGluayAtIExpbmsgdG8gdGVzdFxuICogQHJldHVybnMgV2hldGhlciB0aGUgbGluayBpcyBhbiBlbWJlZCBsaW5rXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0RW1iZWQobGluazogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBsaW5rLnN0YXJ0c1dpdGgoJyFbJyk7XG59XG5cbi8qKlxuICogVGVzdHMgd2hldGhlciBhIGxpbmsgaXMgYSB3aWtpbGluaywgcG9zc2libHkgZW1iZWQ6XG4gKiBgW1tsaW5rXV1gLCBgIVtbbGlua11dYC5cbiAqXG4gKiBAcGFyYW0gbGluayAtIExpbmsgdG8gdGVzdFxuICogQHJldHVybnMgV2hldGhlciB0aGUgbGluayBpcyBhIHdpa2lsaW5rXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0V2lraWxpbmsobGluazogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBsaW5rLmluY2x1ZGVzKCdbWycpO1xufVxuXG4vKipcbiAqIFRlc3RzIHdoZXRoZXIgYSBsaW5rIGhhcyBhIGxlYWRpbmcgZG90LCBwb3NzaWJseSBlbWJlZDpcbiAqIGBbWy4vbGlua11dYCwgYFt0aXRsZV0oLi9saW5rKWAsIGBbdGl0bGVdKDwuL2xpbms+KWAsXG4gKiBgIVtbLi9saW5rXV1gLCBgIVt0aXRsZV0oLi9saW5rKWAsIGAhW3RpdGxlXSg8Li9saW5rPilgLlxuICpcbiAqIEBwYXJhbSBsaW5rIC0gTGluayB0byB0ZXN0XG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBsaW5rIGhhcyBhIGxlYWRpbmcgZG90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0TGVhZGluZ0RvdChsaW5rOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGxpbmsuaW5jbHVkZXMoJ1tbLi8nKSB8fCBsaW5rLmluY2x1ZGVzKCddKC4vJykgfHwgbGluay5pbmNsdWRlcygnXSg8Li8nKTtcbn1cblxuLyoqXG4gKiBUZXN0cyB3aGV0aGVyIGEgbGluayB1c2VzIGFuZ2xlIGJyYWNrZXRzLCBwb3NzaWJseSBlbWJlZDpcbiAqIGBbdGl0bGVdKDxsaW5rPilgLCBgIVt0aXRsZV0oPGxpbms+KWAuXG4gKlxuICogQHBhcmFtIGxpbmsgLSBMaW5rIHRvIHRlc3RcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGxpbmsgdXNlcyBhbmdsZSBicmFja2V0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gdGVzdEFuZ2xlQnJhY2tldHMobGluazogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBsaW5rLmluY2x1ZGVzKCddKDwnKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBLHNCQUdPO0FBTVAsa0JBTU87QUFDUCxvQkFBMEI7QUFFMUIsd0JBQWlDO0FBRWpDLHdCQUtPO0FBQ1AsMkJBSU87QUFDUCw4QkFHTztBQUNQLHVCQUFzQztBQU10QyxNQUFNLDhCQUE4QjtBQUtwQyxNQUFNLHNDQUFzQztBQXVCckMsU0FBUyxhQUFhLE1BQWtDO0FBQzdELFFBQU0sYUFBUyxtQ0FBYyx5QkFBVSxJQUFJLENBQUM7QUFDNUMsU0FBTztBQUFBLElBQ0wsVUFBVSxPQUFPO0FBQUEsSUFDakIsU0FBUyxPQUFPO0FBQUEsRUFDbEI7QUFDRjtBQWdEQSxlQUFzQixrQkFBa0IsU0FBa0Q7QUFDeEYsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixRQUFNLFVBQVUsS0FBSyxZQUFZLENBQUMsU0FBUztBQUN6QyxVQUFNLGNBQWMsVUFBVSxLQUFLLFFBQVE7QUFDM0MsUUFBSSxtQkFBbUIsVUFBYSxtQkFBbUIs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
|
@@ -42,6 +42,7 @@ var import_Function = require('../Function.cjs');
|
|
42
42
|
var import_Object = require('../Object.cjs');
|
43
43
|
var import_FileSystem = require('./FileSystem.cjs');
|
44
44
|
var import_FrontMatter = require('./FrontMatter.cjs');
|
45
|
+
var import_Reference = require('./Reference.cjs');
|
45
46
|
var __process = globalThis["process"] ?? {
|
46
47
|
"cwd": () => "/",
|
47
48
|
"env": {},
|
@@ -96,15 +97,7 @@ function getAllLinks(cache) {
|
|
96
97
|
if (cache.frontmatterLinks) {
|
97
98
|
links.push(...cache.frontmatterLinks);
|
98
99
|
}
|
99
|
-
|
100
|
-
if ((0, import_implementations.isFrontmatterLinkCache)(a) && (0, import_implementations.isFrontmatterLinkCache)(b)) {
|
101
|
-
return a.key.localeCompare(b.key);
|
102
|
-
}
|
103
|
-
if ((0, import_implementations.isReferenceCache)(a) && (0, import_implementations.isReferenceCache)(b)) {
|
104
|
-
return a.position.start.offset - b.position.start.offset;
|
105
|
-
}
|
106
|
-
return (0, import_implementations.isFrontmatterLinkCache)(a) ? 1 : -1;
|
107
|
-
});
|
100
|
+
(0, import_Reference.sortReferences)(links);
|
108
101
|
links = links.filter((link, index) => {
|
109
102
|
if (index === 0) {
|
110
103
|
return true;
|
@@ -256,4 +249,4 @@ async function ensureMetadataCacheReady(app) {
|
|
256
249
|
registerFile,
|
257
250
|
tempRegisterFileAndRun
|
258
251
|
});
|
259
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL01ldGFkYXRhQ2FjaGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzWydwcm9jZXNzJ10gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gTWV0YWRhdGFDYWNoZVxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgbWV0YWRhdGEgY2FjaGUgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIENhY2hlZE1ldGFkYXRhLFxuICBNYXJrZG93blZpZXcsXG4gIFJlZmVyZW5jZSxcbiAgVEFic3RyYWN0RmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEN1c3RvbUFycmF5RGljdCB9IGZyb20gJ29ic2lkaWFuLXR5cGluZ3MnO1xuaW1wb3J0IHtcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgaXNSZWZlcmVuY2VDYWNoZSxcbiAgcGFyZW50Rm9sZGVyUGF0aFxufSBmcm9tICdvYnNpZGlhbi10eXBpbmdzL2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHsgcmV0cnlXaXRoVGltZW91dCB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuLi9GdW5jdGlvbi50cyc7XG5pbXBvcnQgeyBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlIH0gZnJvbSAnLi4vT2JqZWN0LnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGb2xkZXIsXG4gIGdldFBhdGgsXG4gIGlzRmlsZSxcbiAgaXNNYXJrZG93bkZpbGVcbn0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB0eXBlIHsgQ29tYmluZWRGcm9udE1hdHRlciB9IGZyb20gJy4vRnJvbnRNYXR0ZXIudHMnO1xuaW1wb3J0IHsgcGFyc2VGcm9udE1hdHRlciB9IGZyb20gJy4vRnJvbnRNYXR0ZXIudHMnO1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgY2FjaGVkIG1ldGFkYXRhIGZvciBhIGdpdmVuIGZpbGUgb3IgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlT3JQYXRoIC0gVGhlIGZpbGUgb3IgcGF0aCB0byByZXRyaWV2ZSB0aGUgbWV0YWRhdGEgZm9yLlxuICogQHBhcmFtIHJldHJ5T3B0aW9ucyAtIE9wdGlvbmFsIHJldHJ5IG9wdGlvbnMgZm9yIHRoZSByZXRyaWV2YWwgcHJvY2Vzcy5cbiAqIEByZXR1cm5zIFRoZSBjYWNoZWQgbWV0YWRhdGEgZm9yIHRoZSBmaWxlLCBvciBudWxsIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDYWNoZVNhZmUoYXBwOiBBcHAsIGZpbGVPclBhdGg6IFBhdGhPckZpbGUsIHJldHJ5T3B0aW9uczogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0ge30pOiBQcm9taXNlPENhY2hlZE1ldGFkYXRhIHwgbnVsbD4ge1xuICBjb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlM6IFBhcnRpYWw8UmV0cnlPcHRpb25zPiA9IHsgdGltZW91dEluTWlsbGlzZWNvbmRzOiA2MDAwMCB9O1xuICBjb25zdCBvdmVycmlkZGVuT3B0aW9uczogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0geyAuLi5ERUZBVUxUX1JFVFJZX09QVElPTlMsIC4uLnJldHJ5T3B0aW9ucyB9O1xuICBsZXQgY2FjaGU6IENhY2hlZE1ldGFkYXRhIHwgbnVsbCA9IG51bGw7XG5cbiAgYXdhaXQgcmV0cnlXaXRoVGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBmaWxlT3JQYXRoKTtcblxuICAgIGlmICghZmlsZSB8fCBmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIGNhY2hlID0gbnVsbDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGF3YWl0IHNhdmVOb3RlKGFwcCwgZmlsZSk7XG5cbiAgICBjb25zdCBmaWxlSW5mbyA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVJbmZvKGZpbGUucGF0aCk7XG4gICAgY29uc3Qgc3RhdCA9IGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLnN0YXQoZmlsZS5wYXRoKTtcblxuICAgIGlmICghZmlsZUluZm8pIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYEZpbGUgY2FjaGUgaW5mbyBmb3IgJHtmaWxlLnBhdGh9IGlzIG1pc3NpbmdgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKCFzdGF0KSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGBGaWxlIHN0YXQgZm9yICR7ZmlsZS5wYXRofSBpcyBtaXNzaW5nYCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChmaWxlLnN0YXQubXRpbWUgPCBzdGF0Lm10aW1lKSB7XG4gICAgICBhcHAudmF1bHQub25DaGFuZ2UoJ21vZGlmaWVkJywgZmlsZS5wYXRoLCB1bmRlZmluZWQsIHN0YXQpO1xuICAgICAgY29uc29sZS5kZWJ1ZyhgQ2FjaGVkIHRpbWVzdGFtcCBmb3IgJHtmaWxlLnBhdGh9IGlzIGZyb20gJHtuZXcgRGF0ZShmaWxlLnN0YXQubXRpbWUpLnRvU3RyaW5nKCl9IHdoaWNoIGlzIG9sZGVyIHRoYW4gdGhlIGZpbGUgc3lzdGVtIG1vZGlmaWNhdGlvbiB0aW1lc3RhbXAgJHtuZXcgRGF0ZShzdGF0Lm10aW1lKS50b1N0cmluZygpfWApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoZmlsZUluZm8ubXRpbWUgPCBzdGF0Lm10aW1lKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGBGaWxlIGNhY2hlIGluZm8gZm9yICR7ZmlsZS5wYXRofSBpcyBmcm9tICR7bmV3IERhdGUoZmlsZUluZm8ubXRpbWUpLnRvU3RyaW5nKCl9IHdoaWNoIGlzIG9sZGVyIHRoYW4gdGhlIGZpbGUgbW9kaWZpY2F0aW9uIHRpbWVzdGFtcCAke25ldyBEYXRlKHN0YXQubXRpbWUpLnRvU3RyaW5nKCl9YCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xuICAgICAgaWYgKCFjYWNoZSkge1xuICAgICAgICBjb25zb2xlLmRlYnVnKGBGaWxlIGNhY2hlIGZvciAke2ZpbGUucGF0aH0gaXMgbWlzc2luZ2ApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIG92ZXJyaWRkZW5PcHRpb25zKTtcblxuICByZXR1cm4gY2FjaGU7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGFsbCBsaW5rcyBmcm9tIHRoZSBwcm92aWRlZCBjYWNoZS5cbiAqXG4gKiBAcGFyYW0gY2FjaGUgLSBUaGUgY2FjaGVkIG1ldGFkYXRhLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVmZXJlbmNlIGNhY2hlcyByZXByZXNlbnRpbmcgdGhlIGxpbmtzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsTGlua3MoY2FjaGU6IENhY2hlZE1ldGFkYXRhKTogUmVmZXJlbmNlW10ge1xuICBsZXQgbGlua3M6IFJlZmVyZW5jZVtdID0gW107XG5cbiAgaWYgKGNhY2hlLmxpbmtzKSB7XG4gICAgbGlua3MucHVzaCguLi5jYWNoZS5saW5rcyk7XG4gIH1cblxuICBpZiAoY2FjaGUuZW1iZWRzKSB7XG4gICAgbGlua3MucHVzaCguLi5jYWNoZS5lbWJlZHMpO1xuICB9XG5cbiAgaWYgKGNhY2hlLmZyb250bWF0dGVyTGlua3MpIHtcbiAgICBsaW5rcy5wdXNoKC4uLmNhY2hlLmZyb250bWF0dGVyTGlua3MpO1xuICB9XG5cbiAgbGlua3Muc29ydCgoYSwgYikgPT4ge1xuICAgIGlmIChpc0Zyb250bWF0dGVyTGlua0NhY2hlKGEpICYmIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUoYikpIHtcbiAgICAgIHJldHVybiBhLmtleS5sb2NhbGVDb21wYXJlKGIua2V5KTtcbiAgICB9XG5cbiAgICBpZiAoaXNSZWZlcmVuY2VDYWNoZShhKSAmJiBpc1JlZmVyZW5jZUNhY2hlKGIpKSB7XG4gICAgICByZXR1cm4gYS5wb3NpdGlvbi5zdGFydC5vZmZzZXQgLSBiLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNGcm9udG1hdHRlckxpbmtDYWNoZShhKSA/IDEgOiAtMTtcbiAgfSk7XG5cbiAgLy8gQlVHOiBodHRwczovL2ZvcnVtLm9ic2lkaWFuLm1kL3QvYnVnLWR1cGxpY2F0ZWQtbGlua3MtaW4tbWV0YWRhdGFjYWNoZS1pbnNpZGUtZm9vdG5vdGVzLzg1NTUxXG4gIGxpbmtzID0gbGlua3MuZmlsdGVyKChsaW5rLCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNMaW5rID0gbGlua3NbaW5kZXggLSAxXTtcbiAgICBpZiAoIXByZXZpb3VzTGluaykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGlzUmVmZXJlbmNlQ2FjaGUobGluaykgJiYgaXNSZWZlcmVuY2VDYWNoZShwcmV2aW91c0xpbmspKSB7XG4gICAgICByZXR1cm4gbGluay5wb3NpdGlvbi5zdGFydC5vZmZzZXQgIT09IHByZXZpb3VzTGluay5wb3NpdGlvbi5zdGFydC5vZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUobGluaykgJiYgaXNGcm9udG1hdHRlckxpbmtDYWNoZShwcmV2aW91c0xpbmspKSB7XG4gICAgICByZXR1cm4gbGluay5rZXkgIT09IHByZXZpb3VzTGluay5rZXk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xuXG4gIHJldHVybiBsaW5rcztcbn1cblxuLyoqXG4gKiBXcmFwcGVyIGZvciB0aGUgZ2V0QmFja2xpbmtzRm9yRmlsZSBtZXRob2QgdGhhdCBwcm92aWRlcyBhIHNhZmUgb3ZlcmxvYWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QmFja2xpbmtzRm9yRmlsZVNhZmVXcmFwcGVyIHtcbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgYmFja2xpbmtzIGZvciBhIGZpbGUgc2FmZWx5LlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBkaWN0aW9uYXJ5IG9mIGJhY2tsaW5rcy5cbiAgICovXG4gIHNhZmUocGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8Q3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4+O1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgYmFja2xpbmtzIGZvciBhIGZpbGUgb3IgcGF0aC5cbiAqIE5PVEU6IFRoZSBmaWxlIG1heSBiZSBub24tZXhpc3RlbnQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSBvYmplY3QuXG4gKiBAcmV0dXJucyBUaGUgYmFja2xpbmtzIGZvciB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSwgdHJ1ZSk7XG4gIHJldHVybiB0ZW1wUmVnaXN0ZXJGaWxlQW5kUnVuKGFwcCwgZmlsZSwgKCkgPT4gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0QmFja2xpbmtzRm9yRmlsZShmaWxlKSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBiYWNrbGlua3MgZm9yIGEgZmlsZSBzYWZlbHkuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSBvYmplY3QuXG4gKiBAcGFyYW0gcmV0cnlPcHRpb25zIC0gT3B0aW9uYWwgcmV0cnkgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IGRpY3Rpb25hcnkgb2YgYmFja2xpbmtzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsIHJldHJ5T3B0aW9uczogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0ge30pOiBQcm9taXNlPEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+PiB7XG4gIGNvbnN0IHNhZmVPdmVybG9hZCA9IChhcHAubWV0YWRhdGFDYWNoZS5nZXRCYWNrbGlua3NGb3JGaWxlIGFzIFBhcnRpYWw8R2V0QmFja2xpbmtzRm9yRmlsZVNhZmVXcmFwcGVyPikuc2FmZTtcbiAgaWYgKHNhZmVPdmVybG9hZCkge1xuICAgIHJldHVybiBzYWZlT3ZlcmxvYWQocGF0aE9yRmlsZSk7XG4gIH1cbiAgY29uc3QgREVGQVVMVF9SRVRSWV9PUFRJT05TOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7IHRpbWVvdXRJbk1pbGxpc2Vjb25kczogNjAwMDAgfTtcbiAgY29uc3Qgb3ZlcnJpZGRlbk9wdGlvbnM6IFBhcnRpYWw8UmV0cnlPcHRpb25zPiA9IHsgLi4uREVGQVVMVF9SRVRSWV9PUFRJT05TLCAuLi5yZXRyeU9wdGlvbnMgfTtcbiAgbGV0IGJhY2tsaW5rczogQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4gPSBudWxsIGFzIHVua25vd24gYXMgQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT47XG4gIGF3YWl0IHJldHJ5V2l0aFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG4gICAgYXdhaXQgZW5zdXJlTWV0YWRhdGFDYWNoZVJlYWR5KGFwcCk7XG4gICAgYmFja2xpbmtzID0gZ2V0QmFja2xpbmtzRm9yRmlsZU9yUGF0aChhcHAsIGZpbGUpO1xuICAgIGZvciAoY29uc3Qgbm90ZVBhdGggb2YgYmFja2xpbmtzLmtleXMoKSkge1xuICAgICAgY29uc3Qgbm90ZSA9IGdldEZpbGVPck51bGwoYXBwLCBub3RlUGF0aCk7XG4gICAgICBpZiAoIW5vdGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBzYXZlTm90ZShhcHAsIG5vdGUpO1xuXG4gICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQobm90ZSk7XG4gICAgICBjb25zdCBmcm9udE1hdHRlciA9IHBhcnNlRnJvbnRNYXR0ZXIoY29udGVudCk7XG4gICAgICBjb25zdCBsaW5rcyA9IGJhY2tsaW5rcy5nZXQobm90ZVBhdGgpO1xuICAgICAgaWYgKCFsaW5rcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcykge1xuICAgICAgICBsZXQgYWN0dWFsTGluazogc3RyaW5nO1xuICAgICAgICBpZiAoaXNSZWZlcmVuY2VDYWNoZShsaW5rKSkge1xuICAgICAgICAgIGFjdHVhbExpbmsgPSBjb250ZW50LnNsaWNlKGxpbmsucG9zaXRpb24uc3RhcnQub2Zmc2V0LCBsaW5rLnBvc2l0aW9uLmVuZC5vZmZzZXQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUobGluaykpIHtcbiAgICAgICAgICBjb25zdCBsaW5rVmFsdWUgPSBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKGZyb250TWF0dGVyLCBsaW5rLmtleSk7XG4gICAgICAgICAgaWYgKHR5cGVvZiBsaW5rVmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFjdHVhbExpbmsgPSBsaW5rVmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdHVhbExpbmsgIT09IGxpbmsub3JpZ2luYWwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSwgb3ZlcnJpZGRlbk9wdGlvbnMpO1xuXG4gIHJldHVybiBiYWNrbGlua3M7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmFja2xpbmtzIG1hcCBmb3IgdGhlIHNwZWNpZmllZCBmaWxlcy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlcyAtIFRoZSBwYXRocyBvciBmaWxlcyB0byBnZXQgdGhlIGJhY2tsaW5rcyBmb3IuXG4gKiBAcGFyYW0gcmV0cnlPcHRpb25zIC0gT3B0aW9uYWwgcmV0cnkgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgbWFwIG9mIGJhY2tsaW5rcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJhY2tsaW5rc01hcChhcHA6IEFwcCwgcGF0aE9yRmlsZXM6IFBhdGhPckZpbGVbXSwgcmV0cnlPcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7fSk6IFByb21pc2U8TWFwPHN0cmluZywgUmVmZXJlbmNlW10+PiB7XG4gIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZWZlcmVuY2VbXT4oKTtcbiAgZm9yIChjb25zdCBwYXRoT3JGaWxlIG9mIHBhdGhPckZpbGVzKSB7XG4gICAgY29uc3QgY3VzdG9tQXJyYXlEaWN0ID0gYXdhaXQgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUoYXBwLCBwYXRoT3JGaWxlLCByZXRyeU9wdGlvbnMpO1xuICAgIGZvciAoY29uc3QgcGF0aCBvZiBjdXN0b21BcnJheURpY3Qua2V5cygpKSB7XG4gICAgICBjb25zdCBtYXBMaW5rcyA9IG1hcC5nZXQocGF0aCkgPz8gW107XG4gICAgICBjb25zdCBwYXRoTGlua3MgPSBjdXN0b21BcnJheURpY3QuZ2V0KHBhdGgpID8/IFtdO1xuICAgICAgbWFwTGlua3MucHVzaCguLi5wYXRoTGlua3MpO1xuICAgICAgbWFwLnNldChwYXRoLCBtYXBMaW5rcyk7XG4gICAgfVxuICB9XG4gIHJldHVybiBtYXA7XG59XG5cbi8qKlxuICogU2F2ZXMgdGhlIHNwZWNpZmllZCBub3RlIGluIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBub3RlIHRvIGJlIHNhdmVkLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbm90ZSBpcyBzYXZlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2F2ZU5vdGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFpc01hcmtkb3duRmlsZShwYXRoT3JGaWxlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKHBhdGhPckZpbGUpO1xuXG4gIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZSgnbWFya2Rvd24nKSkge1xuICAgIGNvbnN0IHZpZXcgPSBsZWFmLnZpZXcgYXMgTWFya2Rvd25WaWV3O1xuICAgIGlmICh2aWV3LmZpbGU/LnBhdGggPT09IHBhdGgpIHtcbiAgICAgIGF3YWl0IHZpZXcuc2F2ZSgpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZnJvbnQgbWF0dGVyIGZyb20gdGhlIG1ldGFkYXRhIGNhY2hlIHNhZmVseS5cbiAqXG4gKiBAdHlwZVBhcmFtIEN1c3RvbUZyb250TWF0dGVyIC0gVGhlIHR5cGUgb2YgY3VzdG9tIGZyb250IG1hdHRlci5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJldHJpZXZlIHRoZSBmcm9udCBtYXR0ZXIgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBjb21iaW5lZCBmcm9udCBtYXR0ZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGcm9udE1hdHRlclNhZmU8Q3VzdG9tRnJvbnRNYXR0ZXIgPSB1bmtub3duPihhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8Q29tYmluZWRGcm9udE1hdHRlcjxDdXN0b21Gcm9udE1hdHRlcj4+IHtcbiAgY29uc3QgY2FjaGUgPSBhd2FpdCBnZXRDYWNoZVNhZmUoYXBwLCBwYXRoT3JGaWxlKTtcbiAgcmV0dXJuIChjYWNoZT8uZnJvbnRtYXR0ZXIgPz8ge30pIGFzIENvbWJpbmVkRnJvbnRNYXR0ZXI8Q3VzdG9tRnJvbnRNYXR0ZXI+O1xufVxuXG4vKipcbiAqIFRlbXBvcmFyaWx5IHJlZ2lzdGVycyBhIGZpbGUgYW5kIHJ1bnMgYSBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gdGVtcG9yYXJpbHkgcmVnaXN0ZXIuXG4gKiBAcGFyYW0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gcnVuLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZW1wUmVnaXN0ZXJGaWxlQW5kUnVuPFQ+KGFwcDogQXBwLCBmaWxlOiBUQWJzdHJhY3RGaWxlLCBmbjogKCkgPT4gVCk6IFQge1xuICBjb25zdCB1bnJlZ2lzdGVyID0gcmVnaXN0ZXJGaWxlKGFwcCwgZmlsZSk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gZm4oKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB1bnJlZ2lzdGVyKCk7XG4gIH1cbn1cblxuLyoqKlxuICogUmVnaXN0ZXJzIGEgZmlsZSBpbiB0aGUgT2JzaWRpYW4gYXBwLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byByZWdpc3Rlci5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCB1bnJlZ2lzdGVycyB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRmlsZShhcHA6IEFwcCwgZmlsZTogVEFic3RyYWN0RmlsZSk6ICgpID0+IHZvaWQge1xuICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgIHJldHVybiBub29wO1xuICB9XG5cbiAgY29uc3QgZGVsZXRlZFBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGxldCBkZWxldGVkRmlsZTogVEFic3RyYWN0RmlsZSA9IGZpbGU7XG5cbiAgd2hpbGUgKGRlbGV0ZWRGaWxlLmRlbGV0ZWQpIHtcbiAgICBkZWxldGVkUGF0aHMucHVzaChkZWxldGVkRmlsZS5wYXRoKTtcbiAgICBhcHAudmF1bHQuZmlsZU1hcFtkZWxldGVkRmlsZS5wYXRoXSA9IGRlbGV0ZWRGaWxlO1xuICAgIGRlbGV0ZWRGaWxlID0gZGVsZXRlZEZpbGUucGFyZW50ID8/IGdldEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgoZGVsZXRlZEZpbGUucGF0aCksIHRydWUpO1xuICB9XG5cbiAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgIGFwcC5tZXRhZGF0YUNhY2hlLnVuaXF1ZUZpbGVMb29rdXAuYWRkKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLCBmaWxlKTtcbiAgfVxuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgZm9yIChjb25zdCBwYXRoIG9mIGRlbGV0ZWRQYXRocykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZVxuICAgICAgZGVsZXRlIGFwcC52YXVsdC5maWxlTWFwW3BhdGhdO1xuICAgIH1cblxuICAgIGlmIChpc0ZpbGUoZmlsZSkpIHtcbiAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLnVuaXF1ZUZpbGVMb29rdXAucmVtb3ZlKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLCBmaWxlKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IHRoZSBtZXRhZGF0YSBjYWNoZSBpcyByZWFkeSBmb3IgYWxsIGZpbGVzLlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBtZXRhZGF0YSBjYWNoZSBpcyByZWFkeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZU1ldGFkYXRhQ2FjaGVSZWFkeShhcHA6IEFwcCk6IFByb21pc2U8dm9pZD4ge1xuICBmb3IgKGNvbnN0IFtwYXRoLCBjYWNoZV0gb2YgT2JqZWN0LmVudHJpZXMoYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlKSkge1xuICAgIGlmICghY2FjaGUuaGFzaCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbY2FjaGUuaGFzaF0pIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGF3YWl0IGdldENhY2hlU2FmZShhcHAsIHBhdGgpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrQkEsNkJBSU87QUFHUCxtQkFBaUM7QUFDakMsc0JBQXFCO0FBQ3JCLG9CQUF1QztBQUV2Qyx3QkFPTztBQUVQLHlCQUFpQztBQXRDakMsSUFBSSxZQUFZLFdBQVcsU0FBUyxLQUFLO0FBQUEsRUFDdkMsT0FBTyxNQUFJO0FBQUEsRUFDWCxPQUFPLENBQUM7QUFBQSxFQUNSLFlBQVk7QUFDZDtBQTRDQSxlQUFzQixhQUFhLEtBQVUsWUFBd0IsZUFBc0MsQ0FBQyxHQUFtQztBQUM3SSxRQUFNLHdCQUErQyxFQUFFLHVCQUF1QixJQUFNO0FBQ3BGLFFBQU0sb0JBQTJDLEVBQUUsR0FBRyx1QkFBdUIsR0FBRyxhQUFhO0FBQzdGLE1BQUksUUFBK0I7QUFFbkMsWUFBTSwrQkFBaUIsWUFBWTtBQUNqQyxVQUFNLFdBQU8saUNBQWMsS0FBSyxVQUFVO0FBRTFDLFFBQUksQ0FBQyxRQUFRLEtBQUssU0FBUztBQUN6QixjQUFRO0FBQ1IsYUFBTztBQUFBLElBQ1Q7QUFFQSxVQUFNLFNBQVMsS0FBSyxJQUFJO0FBRXhCLFVBQU0sV0FBVyxJQUFJLGNBQWMsWUFBWSxLQUFLLElBQUk7QUFDeEQsVUFBTSxPQUFPLE1BQU0sSUFBSSxNQUFNLFFBQVEsS0FBSyxLQUFLLElBQUk7QUFFbkQsUUFBSSxDQUFDLFVBQVU7QUFDYixjQUFRLE1BQU0sdUJBQXVCLEtBQUssSUFBSSxhQUFhO0FBQzNELGFB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
|
252
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL01ldGFkYXRhQ2FjaGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzWydwcm9jZXNzJ10gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gTWV0YWRhdGFDYWNoZVxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgbWV0YWRhdGEgY2FjaGUgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIENhY2hlZE1ldGFkYXRhLFxuICBNYXJrZG93blZpZXcsXG4gIFJlZmVyZW5jZSxcbiAgVEFic3RyYWN0RmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEN1c3RvbUFycmF5RGljdCB9IGZyb20gJ29ic2lkaWFuLXR5cGluZ3MnO1xuaW1wb3J0IHtcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgaXNSZWZlcmVuY2VDYWNoZSxcbiAgcGFyZW50Rm9sZGVyUGF0aFxufSBmcm9tICdvYnNpZGlhbi10eXBpbmdzL2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHsgcmV0cnlXaXRoVGltZW91dCB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuLi9GdW5jdGlvbi50cyc7XG5pbXBvcnQgeyBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlIH0gZnJvbSAnLi4vT2JqZWN0LnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGb2xkZXIsXG4gIGdldFBhdGgsXG4gIGlzRmlsZSxcbiAgaXNNYXJrZG93bkZpbGVcbn0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB0eXBlIHsgQ29tYmluZWRGcm9udE1hdHRlciB9IGZyb20gJy4vRnJvbnRNYXR0ZXIudHMnO1xuaW1wb3J0IHsgcGFyc2VGcm9udE1hdHRlciB9IGZyb20gJy4vRnJvbnRNYXR0ZXIudHMnO1xuaW1wb3J0IHsgc29ydFJlZmVyZW5jZXMgfSBmcm9tICcuL1JlZmVyZW5jZS50cyc7XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBjYWNoZWQgbWV0YWRhdGEgZm9yIGEgZ2l2ZW4gZmlsZSBvciBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGVPclBhdGggLSBUaGUgZmlsZSBvciBwYXRoIHRvIHJldHJpZXZlIHRoZSBtZXRhZGF0YSBmb3IuXG4gKiBAcGFyYW0gcmV0cnlPcHRpb25zIC0gT3B0aW9uYWwgcmV0cnkgb3B0aW9ucyBmb3IgdGhlIHJldHJpZXZhbCBwcm9jZXNzLlxuICogQHJldHVybnMgVGhlIGNhY2hlZCBtZXRhZGF0YSBmb3IgdGhlIGZpbGUsIG9yIG51bGwgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENhY2hlU2FmZShhcHA6IEFwcCwgZmlsZU9yUGF0aDogUGF0aE9yRmlsZSwgcmV0cnlPcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7fSk6IFByb21pc2U8Q2FjaGVkTWV0YWRhdGEgfCBudWxsPiB7XG4gIGNvbnN0IERFRkFVTFRfUkVUUllfT1BUSU9OUzogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0geyB0aW1lb3V0SW5NaWxsaXNlY29uZHM6IDYwMDAwIH07XG4gIGNvbnN0IG92ZXJyaWRkZW5PcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7IC4uLkRFRkFVTFRfUkVUUllfT1BUSU9OUywgLi4ucmV0cnlPcHRpb25zIH07XG4gIGxldCBjYWNoZTogQ2FjaGVkTWV0YWRhdGEgfCBudWxsID0gbnVsbDtcblxuICBhd2FpdCByZXRyeVdpdGhUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIGZpbGVPclBhdGgpO1xuXG4gICAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgICAgY2FjaGUgPSBudWxsO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXdhaXQgc2F2ZU5vdGUoYXBwLCBmaWxlKTtcblxuICAgIGNvbnN0IGZpbGVJbmZvID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUluZm8oZmlsZS5wYXRoKTtcbiAgICBjb25zdCBzdGF0ID0gYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIuc3RhdChmaWxlLnBhdGgpO1xuXG4gICAgaWYgKCFmaWxlSW5mbykge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgRmlsZSBjYWNoZSBpbmZvIGZvciAke2ZpbGUucGF0aH0gaXMgbWlzc2luZ2ApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIXN0YXQpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYEZpbGUgc3RhdCBmb3IgJHtmaWxlLnBhdGh9IGlzIG1pc3NpbmdgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGZpbGUuc3RhdC5tdGltZSA8IHN0YXQubXRpbWUpIHtcbiAgICAgIGFwcC52YXVsdC5vbkNoYW5nZSgnbW9kaWZpZWQnLCBmaWxlLnBhdGgsIHVuZGVmaW5lZCwgc3RhdCk7XG4gICAgICBjb25zb2xlLmRlYnVnKGBDYWNoZWQgdGltZXN0YW1wIGZvciAke2ZpbGUucGF0aH0gaXMgZnJvbSAke25ldyBEYXRlKGZpbGUuc3RhdC5tdGltZSkudG9TdHJpbmcoKX0gd2hpY2ggaXMgb2xkZXIgdGhhbiB0aGUgZmlsZSBzeXN0ZW0gbW9kaWZpY2F0aW9uIHRpbWVzdGFtcCAke25ldyBEYXRlKHN0YXQubXRpbWUpLnRvU3RyaW5nKCl9YCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChmaWxlSW5mby5tdGltZSA8IHN0YXQubXRpbWUpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYEZpbGUgY2FjaGUgaW5mbyBmb3IgJHtmaWxlLnBhdGh9IGlzIGZyb20gJHtuZXcgRGF0ZShmaWxlSW5mby5tdGltZSkudG9TdHJpbmcoKX0gd2hpY2ggaXMgb2xkZXIgdGhhbiB0aGUgZmlsZSBtb2RpZmljYXRpb24gdGltZXN0YW1wICR7bmV3IERhdGUoc3RhdC5tdGltZSkudG9TdHJpbmcoKX1gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FjaGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG4gICAgICBpZiAoIWNhY2hlKSB7XG4gICAgICAgIGNvbnNvbGUuZGVidWcoYEZpbGUgY2FjaGUgZm9yICR7ZmlsZS5wYXRofSBpcyBtaXNzaW5nYCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSwgb3ZlcnJpZGRlbk9wdGlvbnMpO1xuXG4gIHJldHVybiBjYWNoZTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYWxsIGxpbmtzIGZyb20gdGhlIHByb3ZpZGVkIGNhY2hlLlxuICpcbiAqIEBwYXJhbSBjYWNoZSAtIFRoZSBjYWNoZWQgbWV0YWRhdGEuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiByZWZlcmVuY2UgY2FjaGVzIHJlcHJlc2VudGluZyB0aGUgbGlua3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxMaW5rcyhjYWNoZTogQ2FjaGVkTWV0YWRhdGEpOiBSZWZlcmVuY2VbXSB7XG4gIGxldCBsaW5rczogUmVmZXJlbmNlW10gPSBbXTtcblxuICBpZiAoY2FjaGUubGlua3MpIHtcbiAgICBsaW5rcy5wdXNoKC4uLmNhY2hlLmxpbmtzKTtcbiAgfVxuXG4gIGlmIChjYWNoZS5lbWJlZHMpIHtcbiAgICBsaW5rcy5wdXNoKC4uLmNhY2hlLmVtYmVkcyk7XG4gIH1cblxuICBpZiAoY2FjaGUuZnJvbnRtYXR0ZXJMaW5rcykge1xuICAgIGxpbmtzLnB1c2goLi4uY2FjaGUuZnJvbnRtYXR0ZXJMaW5rcyk7XG4gIH1cblxuICBzb3J0UmVmZXJlbmNlcyhsaW5rcyk7XG5cbiAgLy8gQlVHOiBodHRwczovL2ZvcnVtLm9ic2lkaWFuLm1kL3QvYnVnLWR1cGxpY2F0ZWQtbGlua3MtaW4tbWV0YWRhdGFjYWNoZS1pbnNpZGUtZm9vdG5vdGVzLzg1NTUxXG4gIGxpbmtzID0gbGlua3MuZmlsdGVyKChsaW5rLCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNMaW5rID0gbGlua3NbaW5kZXggLSAxXTtcbiAgICBpZiAoIXByZXZpb3VzTGluaykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGlzUmVmZXJlbmNlQ2FjaGUobGluaykgJiYgaXNSZWZlcmVuY2VDYWNoZShwcmV2aW91c0xpbmspKSB7XG4gICAgICByZXR1cm4gbGluay5wb3NpdGlvbi5zdGFydC5vZmZzZXQgIT09IHByZXZpb3VzTGluay5wb3NpdGlvbi5zdGFydC5vZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUobGluaykgJiYgaXNGcm9udG1hdHRlckxpbmtDYWNoZShwcmV2aW91c0xpbmspKSB7XG4gICAgICByZXR1cm4gbGluay5rZXkgIT09IHByZXZpb3VzTGluay5rZXk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xuXG4gIHJldHVybiBsaW5rcztcbn1cblxuLyoqXG4gKiBXcmFwcGVyIGZvciB0aGUgZ2V0QmFja2xpbmtzRm9yRmlsZSBtZXRob2QgdGhhdCBwcm92aWRlcyBhIHNhZmUgb3ZlcmxvYWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QmFja2xpbmtzRm9yRmlsZVNhZmVXcmFwcGVyIHtcbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgYmFja2xpbmtzIGZvciBhIGZpbGUgc2FmZWx5LlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBkaWN0aW9uYXJ5IG9mIGJhY2tsaW5rcy5cbiAgICovXG4gIHNhZmUocGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8Q3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4+O1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgYmFja2xpbmtzIGZvciBhIGZpbGUgb3IgcGF0aC5cbiAqIE5PVEU6IFRoZSBmaWxlIG1heSBiZSBub24tZXhpc3RlbnQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSBvYmplY3QuXG4gKiBAcmV0dXJucyBUaGUgYmFja2xpbmtzIGZvciB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSwgdHJ1ZSk7XG4gIHJldHVybiB0ZW1wUmVnaXN0ZXJGaWxlQW5kUnVuKGFwcCwgZmlsZSwgKCkgPT4gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0QmFja2xpbmtzRm9yRmlsZShmaWxlKSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBiYWNrbGlua3MgZm9yIGEgZmlsZSBzYWZlbHkuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSBvYmplY3QuXG4gKiBAcGFyYW0gcmV0cnlPcHRpb25zIC0gT3B0aW9uYWwgcmV0cnkgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IGRpY3Rpb25hcnkgb2YgYmFja2xpbmtzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsIHJldHJ5T3B0aW9uczogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0ge30pOiBQcm9taXNlPEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+PiB7XG4gIGNvbnN0IHNhZmVPdmVybG9hZCA9IChhcHAubWV0YWRhdGFDYWNoZS5nZXRCYWNrbGlua3NGb3JGaWxlIGFzIFBhcnRpYWw8R2V0QmFja2xpbmtzRm9yRmlsZVNhZmVXcmFwcGVyPikuc2FmZTtcbiAgaWYgKHNhZmVPdmVybG9hZCkge1xuICAgIHJldHVybiBzYWZlT3ZlcmxvYWQocGF0aE9yRmlsZSk7XG4gIH1cbiAgY29uc3QgREVGQVVMVF9SRVRSWV9PUFRJT05TOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7IHRpbWVvdXRJbk1pbGxpc2Vjb25kczogNjAwMDAgfTtcbiAgY29uc3Qgb3ZlcnJpZGRlbk9wdGlvbnM6IFBhcnRpYWw8UmV0cnlPcHRpb25zPiA9IHsgLi4uREVGQVVMVF9SRVRSWV9PUFRJT05TLCAuLi5yZXRyeU9wdGlvbnMgfTtcbiAgbGV0IGJhY2tsaW5rczogQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4gPSBudWxsIGFzIHVua25vd24gYXMgQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT47XG4gIGF3YWl0IHJldHJ5V2l0aFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG4gICAgYXdhaXQgZW5zdXJlTWV0YWRhdGFDYWNoZVJlYWR5KGFwcCk7XG4gICAgYmFja2xpbmtzID0gZ2V0QmFja2xpbmtzRm9yRmlsZU9yUGF0aChhcHAsIGZpbGUpO1xuICAgIGZvciAoY29uc3Qgbm90ZVBhdGggb2YgYmFja2xpbmtzLmtleXMoKSkge1xuICAgICAgY29uc3Qgbm90ZSA9IGdldEZpbGVPck51bGwoYXBwLCBub3RlUGF0aCk7XG4gICAgICBpZiAoIW5vdGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBzYXZlTm90ZShhcHAsIG5vdGUpO1xuXG4gICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQobm90ZSk7XG4gICAgICBjb25zdCBmcm9udE1hdHRlciA9IHBhcnNlRnJvbnRNYXR0ZXIoY29udGVudCk7XG4gICAgICBjb25zdCBsaW5rcyA9IGJhY2tsaW5rcy5nZXQobm90ZVBhdGgpO1xuICAgICAgaWYgKCFsaW5rcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcykge1xuICAgICAgICBsZXQgYWN0dWFsTGluazogc3RyaW5nO1xuICAgICAgICBpZiAoaXNSZWZlcmVuY2VDYWNoZShsaW5rKSkge1xuICAgICAgICAgIGFjdHVhbExpbmsgPSBjb250ZW50LnNsaWNlKGxpbmsucG9zaXRpb24uc3RhcnQub2Zmc2V0LCBsaW5rLnBvc2l0aW9uLmVuZC5vZmZzZXQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUobGluaykpIHtcbiAgICAgICAgICBjb25zdCBsaW5rVmFsdWUgPSBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKGZyb250TWF0dGVyLCBsaW5rLmtleSk7XG4gICAgICAgICAgaWYgKHR5cGVvZiBsaW5rVmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFjdHVhbExpbmsgPSBsaW5rVmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdHVhbExpbmsgIT09IGxpbmsub3JpZ2luYWwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSwgb3ZlcnJpZGRlbk9wdGlvbnMpO1xuXG4gIHJldHVybiBiYWNrbGlua3M7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmFja2xpbmtzIG1hcCBmb3IgdGhlIHNwZWNpZmllZCBmaWxlcy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlcyAtIFRoZSBwYXRocyBvciBmaWxlcyB0byBnZXQgdGhlIGJhY2tsaW5rcyBmb3IuXG4gKiBAcGFyYW0gcmV0cnlPcHRpb25zIC0gT3B0aW9uYWwgcmV0cnkgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgbWFwIG9mIGJhY2tsaW5rcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJhY2tsaW5rc01hcChhcHA6IEFwcCwgcGF0aE9yRmlsZXM6IFBhdGhPckZpbGVbXSwgcmV0cnlPcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7fSk6IFByb21pc2U8TWFwPHN0cmluZywgUmVmZXJlbmNlW10+PiB7XG4gIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZWZlcmVuY2VbXT4oKTtcbiAgZm9yIChjb25zdCBwYXRoT3JGaWxlIG9mIHBhdGhPckZpbGVzKSB7XG4gICAgY29uc3QgY3VzdG9tQXJyYXlEaWN0ID0gYXdhaXQgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUoYXBwLCBwYXRoT3JGaWxlLCByZXRyeU9wdGlvbnMpO1xuICAgIGZvciAoY29uc3QgcGF0aCBvZiBjdXN0b21BcnJheURpY3Qua2V5cygpKSB7XG4gICAgICBjb25zdCBtYXBMaW5rcyA9IG1hcC5nZXQocGF0aCkgPz8gW107XG4gICAgICBjb25zdCBwYXRoTGlua3MgPSBjdXN0b21BcnJheURpY3QuZ2V0KHBhdGgpID8/IFtdO1xuICAgICAgbWFwTGlua3MucHVzaCguLi5wYXRoTGlua3MpO1xuICAgICAgbWFwLnNldChwYXRoLCBtYXBMaW5rcyk7XG4gICAgfVxuICB9XG4gIHJldHVybiBtYXA7XG59XG5cbi8qKlxuICogU2F2ZXMgdGhlIHNwZWNpZmllZCBub3RlIGluIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBub3RlIHRvIGJlIHNhdmVkLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbm90ZSBpcyBzYXZlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2F2ZU5vdGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFpc01hcmtkb3duRmlsZShwYXRoT3JGaWxlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKHBhdGhPckZpbGUpO1xuXG4gIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZSgnbWFya2Rvd24nKSkge1xuICAgIGNvbnN0IHZpZXcgPSBsZWFmLnZpZXcgYXMgTWFya2Rvd25WaWV3O1xuICAgIGlmICh2aWV3LmZpbGU/LnBhdGggPT09IHBhdGgpIHtcbiAgICAgIGF3YWl0IHZpZXcuc2F2ZSgpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZnJvbnQgbWF0dGVyIGZyb20gdGhlIG1ldGFkYXRhIGNhY2hlIHNhZmVseS5cbiAqXG4gKiBAdHlwZVBhcmFtIEN1c3RvbUZyb250TWF0dGVyIC0gVGhlIHR5cGUgb2YgY3VzdG9tIGZyb250IG1hdHRlci5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJldHJpZXZlIHRoZSBmcm9udCBtYXR0ZXIgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBjb21iaW5lZCBmcm9udCBtYXR0ZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGcm9udE1hdHRlclNhZmU8Q3VzdG9tRnJvbnRNYXR0ZXIgPSB1bmtub3duPihhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8Q29tYmluZWRGcm9udE1hdHRlcjxDdXN0b21Gcm9udE1hdHRlcj4+IHtcbiAgY29uc3QgY2FjaGUgPSBhd2FpdCBnZXRDYWNoZVNhZmUoYXBwLCBwYXRoT3JGaWxlKTtcbiAgcmV0dXJuIChjYWNoZT8uZnJvbnRtYXR0ZXIgPz8ge30pIGFzIENvbWJpbmVkRnJvbnRNYXR0ZXI8Q3VzdG9tRnJvbnRNYXR0ZXI+O1xufVxuXG4vKipcbiAqIFRlbXBvcmFyaWx5IHJlZ2lzdGVycyBhIGZpbGUgYW5kIHJ1bnMgYSBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gdGVtcG9yYXJpbHkgcmVnaXN0ZXIuXG4gKiBAcGFyYW0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gcnVuLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZW1wUmVnaXN0ZXJGaWxlQW5kUnVuPFQ+KGFwcDogQXBwLCBmaWxlOiBUQWJzdHJhY3RGaWxlLCBmbjogKCkgPT4gVCk6IFQge1xuICBjb25zdCB1bnJlZ2lzdGVyID0gcmVnaXN0ZXJGaWxlKGFwcCwgZmlsZSk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gZm4oKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB1bnJlZ2lzdGVyKCk7XG4gIH1cbn1cblxuLyoqKlxuICogUmVnaXN0ZXJzIGEgZmlsZSBpbiB0aGUgT2JzaWRpYW4gYXBwLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byByZWdpc3Rlci5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCB1bnJlZ2lzdGVycyB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRmlsZShhcHA6IEFwcCwgZmlsZTogVEFic3RyYWN0RmlsZSk6ICgpID0+IHZvaWQge1xuICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgIHJldHVybiBub29wO1xuICB9XG5cbiAgY29uc3QgZGVsZXRlZFBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGxldCBkZWxldGVkRmlsZTogVEFic3RyYWN0RmlsZSA9IGZpbGU7XG5cbiAgd2hpbGUgKGRlbGV0ZWRGaWxlLmRlbGV0ZWQpIHtcbiAgICBkZWxldGVkUGF0aHMucHVzaChkZWxldGVkRmlsZS5wYXRoKTtcbiAgICBhcHAudmF1bHQuZmlsZU1hcFtkZWxldGVkRmlsZS5wYXRoXSA9IGRlbGV0ZWRGaWxlO1xuICAgIGRlbGV0ZWRGaWxlID0gZGVsZXRlZEZpbGUucGFyZW50ID8/IGdldEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgoZGVsZXRlZEZpbGUucGF0aCksIHRydWUpO1xuICB9XG5cbiAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgIGFwcC5tZXRhZGF0YUNhY2hlLnVuaXF1ZUZpbGVMb29rdXAuYWRkKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLCBmaWxlKTtcbiAgfVxuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgZm9yIChjb25zdCBwYXRoIG9mIGRlbGV0ZWRQYXRocykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZVxuICAgICAgZGVsZXRlIGFwcC52YXVsdC5maWxlTWFwW3BhdGhdO1xuICAgIH1cblxuICAgIGlmIChpc0ZpbGUoZmlsZSkpIHtcbiAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLnVuaXF1ZUZpbGVMb29rdXAucmVtb3ZlKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLCBmaWxlKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IHRoZSBtZXRhZGF0YSBjYWNoZSBpcyByZWFkeSBmb3IgYWxsIGZpbGVzLlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBtZXRhZGF0YSBjYWNoZSBpcyByZWFkeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZU1ldGFkYXRhQ2FjaGVSZWFkeShhcHA6IEFwcCk6IFByb21pc2U8dm9pZD4ge1xuICBmb3IgKGNvbnN0IFtwYXRoLCBjYWNoZV0gb2YgT2JqZWN0LmVudHJpZXMoYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlKSkge1xuICAgIGlmICghY2FjaGUuaGFzaCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbY2FjaGUuaGFzaF0pIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGF3YWl0IGdldENhY2hlU2FmZShhcHAsIHBhdGgpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtB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QUksS0FBSyxNQUFNLFNBQVMsTUFBTTtBQUM1QixZQUFNLEtBQUssS0FBSztBQUFBLElBQ2xCO0FBQUEsRUFDRjtBQUNGO0FBVUEsZUFBc0IsbUJBQWdELEtBQVUsWUFBeUU7QUFDdkosUUFBTSxRQUFRLE1BQU0sYUFBYSxLQUFLLFVBQVU7QUFDaEQsU0FBUSxPQUFPLGVBQWUsQ0FBQztBQUNqQztBQVVPLFNBQVMsdUJBQTBCLEtBQVUsTUFBcUIsSUFBZ0I7QUFDdkYsUUFBTSxhQUFhLGFBQWEsS0FBSyxJQUFJO0FBRXpDLE1BQUk7QUFDRixXQUFPLEdBQUc7QUFBQSxFQUNaLFVBQUU7QUFDQSxlQUFXO0FBQUEsRUFDYjtBQUNGO0FBU08sU0FBUyxhQUFhLEtBQVUsTUFBaUM7QUFDdEUsTUFBSSxDQUFDLEtBQUssU0FBUztBQUNqQixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sZUFBeUIsQ0FBQztBQUVoQyxNQUFJLGNBQTZCO0FBRWpDLFNBQU8sWUFBWSxTQUFTO0FBQzFCLGlCQUFhLEtBQUssWUFBWSxJQUFJO0FBQ2xDLFFBQUksTUFBTSxRQUFRLFlBQVksSUFBSSxJQUFJO0FBQ3RDLGtCQUFjLFlBQVksY0FBVSw2QkFBVSxTQUFLLHlDQUFpQixZQUFZLElBQUksR0FBRyxJQUFJO0FBQUEsRUFDN0Y7QUFFQSxVQUFJLDBCQUFPLElBQUksR0FBRztBQUNoQixRQUFJLGNBQWMsaUJBQWlCLElBQUksS0FBSyxLQUFLLFlBQVksR0FBRyxJQUFJO0FBQUEsRUFDdEU7QUFFQSxTQUFPLE1BQU07QUFDWCxlQUFXLFFBQVEsY0FBYztBQUUvQixhQUFPLElBQUksTUFBTSxRQUFRLElBQUk7QUFBQSxJQUMvQjtBQUVBLFlBQUksMEJBQU8sSUFBSSxHQUFHO0FBQ2hCLFVBQUksY0FBYyxpQkFBaUIsT0FBTyxLQUFLLEtBQUssWUFBWSxHQUFHLElBQUk7QUFBQSxJQUN6RTtBQUFBLEVBQ0Y7QUFDRjtBQU9BLGVBQXNCLHlCQUF5QixLQUF5QjtBQUN0RSxhQUFXLENBQUMsTUFBTSxLQUFLLEtBQUssT0FBTyxRQUFRLElBQUksY0FBYyxTQUFTLEdBQUc7QUFDdkUsUUFBSSxDQUFDLE1BQU0sTUFBTTtBQUNmO0FBQUEsSUFDRjtBQUVBLFFBQUksSUFBSSxjQUFjLGNBQWMsTUFBTSxJQUFJLEdBQUc7QUFDL0M7QUFBQSxJQUNGO0FBRUEsVUFBTSxhQUFhLEtBQUssSUFBSTtBQUFBLEVBQzlCO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
@@ -0,0 +1,66 @@
|
|
1
|
+
/*
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
4
|
+
*/
|
5
|
+
|
6
|
+
(function patchRequireEsmDefault(){const __require=require;require=Object.assign(id=>{const module=__require(id);return module.__esModule&&module.default?module.default:module},__require)})()
|
7
|
+
|
8
|
+
"use strict";
|
9
|
+
var __defProp = Object.defineProperty;
|
10
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
11
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
12
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
13
|
+
var __export = (target, all) => {
|
14
|
+
for (var name in all)
|
15
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
16
|
+
};
|
17
|
+
var __copyProps = (to, from, except, desc) => {
|
18
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
19
|
+
for (let key of __getOwnPropNames(from))
|
20
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
21
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
22
|
+
}
|
23
|
+
return to;
|
24
|
+
};
|
25
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
26
|
+
var Reference_exports = {};
|
27
|
+
__export(Reference_exports, {
|
28
|
+
referenceToFileChange: () => referenceToFileChange,
|
29
|
+
sortReferences: () => sortReferences
|
30
|
+
});
|
31
|
+
module.exports = __toCommonJS(Reference_exports);
|
32
|
+
var import_implementations = require('obsidian-typings/implementations');
|
33
|
+
function sortReferences(references) {
|
34
|
+
return references.sort((a, b) => {
|
35
|
+
if ((0, import_implementations.isFrontmatterLinkCache)(a) && (0, import_implementations.isFrontmatterLinkCache)(b)) {
|
36
|
+
return a.key.localeCompare(b.key);
|
37
|
+
}
|
38
|
+
if ((0, import_implementations.isReferenceCache)(a) && (0, import_implementations.isReferenceCache)(b)) {
|
39
|
+
return a.position.start.offset - b.position.start.offset;
|
40
|
+
}
|
41
|
+
return (0, import_implementations.isFrontmatterLinkCache)(a) ? 1 : -1;
|
42
|
+
});
|
43
|
+
}
|
44
|
+
function referenceToFileChange(reference, newContent) {
|
45
|
+
if ((0, import_implementations.isReferenceCache)(reference)) {
|
46
|
+
return {
|
47
|
+
startIndex: reference.position.start.offset,
|
48
|
+
endIndex: reference.position.end.offset,
|
49
|
+
oldContent: reference.original,
|
50
|
+
newContent
|
51
|
+
};
|
52
|
+
} else if ((0, import_implementations.isFrontmatterLinkCache)(reference)) {
|
53
|
+
return {
|
54
|
+
oldContent: reference.original,
|
55
|
+
newContent,
|
56
|
+
frontMatterKey: reference.key
|
57
|
+
};
|
58
|
+
}
|
59
|
+
throw new Error("Unknown link type");
|
60
|
+
}
|
61
|
+
// Annotate the CommonJS export names for ESM import in node:
|
62
|
+
0 && (module.exports = {
|
63
|
+
referenceToFileChange,
|
64
|
+
sortReferences
|
65
|
+
});
|
66
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1JlZmVyZW5jZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHR5cGUgeyBSZWZlcmVuY2UgfSBmcm9tICdvYnNpZGlhbic7XHJcbmltcG9ydCB7XG4gIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUsXG4gIGlzUmVmZXJlbmNlQ2FjaGVcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xyXG5cclxuaW1wb3J0IHR5cGUge1xuICBDb250ZW50Q2hhbmdlLFxuICBGaWxlQ2hhbmdlLFxuICBGcm9udG1hdHRlckNoYW5nZVxufSBmcm9tICcuL0ZpbGVDaGFuZ2UudHMnO1xyXG5cclxuLyoqXHJcbiAqIFNvcnRzIHJlZmVyZW5jZXMgYnkgdGhlaXIgdHlwZSBhbmQgcG9zaXRpb24uXHJcbiAqXHJcbiAqIEBwYXJhbSByZWZlcmVuY2VzIC0gVGhlIHJlZmVyZW5jZXMgdG8gc29ydC5cclxuICogQHJldHVybnMgVGhlIHNvcnRlZCByZWZlcmVuY2VzLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRSZWZlcmVuY2VzKHJlZmVyZW5jZXM6IFJlZmVyZW5jZVtdKTogUmVmZXJlbmNlW10ge1xyXG4gIHJldHVybiByZWZlcmVuY2VzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgIGlmIChpc0Zyb250bWF0dGVyTGlua0NhY2hlKGEpICYmIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUoYikpIHtcclxuICAgICAgcmV0dXJuIGEua2V5LmxvY2FsZUNvbXBhcmUoYi5rZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc1JlZmVyZW5jZUNhY2hlKGEpICYmIGlzUmVmZXJlbmNlQ2FjaGUoYikpIHtcclxuICAgICAgcmV0dXJuIGEucG9zaXRpb24uc3RhcnQub2Zmc2V0IC0gYi5wb3NpdGlvbi5zdGFydC5vZmZzZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUoYSkgPyAxIDogLTE7XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8qKlxyXG4qIENvbnZlcnRzIGEgcmVmZXJlbmNlIHRvIGEgZmlsZSBjaGFuZ2UuXHJcbipcclxuKiBAcGFyYW0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSB0byBjb252ZXJ0LlxyXG4qIEBwYXJhbSBuZXdDb250ZW50IC0gVGhlIG5ldyBjb250ZW50IGZvciB0aGUgcmVmZXJlbmNlLlxyXG4qIEByZXR1cm5zIFRoZSBmaWxlIGNoYW5nZS5cclxuKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZVRvRmlsZUNoYW5nZShyZWZlcmVuY2U6IFJlZmVyZW5jZSwgbmV3Q29udGVudDogc3RyaW5nKTogRmlsZUNoYW5nZSB7XHJcbiAgaWYgKGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc3RhcnRJbmRleDogcmVmZXJlbmNlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCxcclxuICAgICAgZW5kSW5kZXg6IHJlZmVyZW5jZS5wb3NpdGlvbi5lbmQub2Zmc2V0LFxyXG4gICAgICBvbGRDb250ZW50OiByZWZlcmVuY2Uub3JpZ2luYWwsXHJcbiAgICAgIG5ld0NvbnRlbnRcclxuICAgIH0gYXMgQ29udGVudENoYW5nZTtcclxuICB9IGVsc2UgaWYgKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUocmVmZXJlbmNlKSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgb2xkQ29udGVudDogcmVmZXJlbmNlLm9yaWdpbmFsLFxyXG4gICAgICBuZXdDb250ZW50LFxyXG4gICAgICBmcm9udE1hdHRlcktleTogcmVmZXJlbmNlLmtleVxyXG4gICAgfSBhcyBGcm9udG1hdHRlckNoYW5nZTtcclxuICB9XHJcblxyXG4gIHRocm93IG5ldyBFcnJvcignVW5rbm93biBsaW5rIHR5cGUnKTtcclxufVxyXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0EsNkJBR087QUFjQSxTQUFTLGVBQWUsWUFBc0M7QUFDbkUsU0FBTyxXQUFXLEtBQUssQ0FBQyxHQUFHLE1BQU07QUFDL0IsWUFBSSwrQ0FBdUIsQ0FBQyxTQUFLLCtDQUF1QixDQUFDLEdBQUc7QUFDMUQsYUFBTyxFQUFFLElBQUksY0FBYyxFQUFFLEdBQUc7QUFBQSxJQUNsQztBQUVBLFlBQUkseUNBQWlCLENBQUMsU0FBSyx5Q0FBaUIsQ0FBQyxHQUFHO0FBQzlDLGFBQU8sRUFBRSxTQUFTLE1BQU0sU0FBUyxFQUFFLFNBQVMsTUFBTTtBQUFBLElBQ3BEO0FBRUEsZUFBTywrQ0FBdUIsQ0FBQyxJQUFJLElBQUk7QUFBQSxFQUN6QyxDQUFDO0FBQ0g7QUFTTyxTQUFTLHNCQUFzQixXQUFzQixZQUFnQztBQUMxRixVQUFJLHlDQUFpQixTQUFTLEdBQUc7QUFDL0IsV0FBTztBQUFBLE1BQ0wsWUFBWSxVQUFVLFNBQVMsTUFBTTtBQUFBLE1BQ3JDLFVBQVUsVUFBVSxTQUFTLElBQUk7QUFBQSxNQUNqQyxZQUFZLFVBQVU7QUFBQSxNQUN0QjtBQUFBLElBQ0Y7QUFBQSxFQUNGLGVBQVcsK0NBQXVCLFNBQVMsR0FBRztBQUM1QyxXQUFPO0FBQUEsTUFDTCxZQUFZLFVBQVU7QUFBQSxNQUN0QjtBQUFBLE1BQ0EsZ0JBQWdCLFVBQVU7QUFBQSxJQUM1QjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLElBQUksTUFBTSxtQkFBbUI7QUFDckM7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import type { Reference } from 'obsidian';
|
2
|
+
import type { FileChange } from './FileChange.ts';
|
3
|
+
/**
|
4
|
+
* Sorts references by their type and position.
|
5
|
+
*
|
6
|
+
* @param references - The references to sort.
|
7
|
+
* @returns The sorted references.
|
8
|
+
*/
|
9
|
+
export declare function sortReferences(references: Reference[]): Reference[];
|
10
|
+
/**
|
11
|
+
* Converts a reference to a file change.
|
12
|
+
*
|
13
|
+
* @param reference - The reference to convert.
|
14
|
+
* @param newContent - The new content for the reference.
|
15
|
+
* @returns The file change.
|
16
|
+
*/
|
17
|
+
export declare function referenceToFileChange(reference: Reference, newContent: string): FileChange;
|
@@ -30,6 +30,7 @@ __export(RenameDeleteHandler_exports, {
|
|
30
30
|
module.exports = __toCommonJS(RenameDeleteHandler_exports);
|
31
31
|
var import_monkey_around = require('monkey-around');
|
32
32
|
var import_obsidian = require('obsidian');
|
33
|
+
var import_Error = require('../Error.cjs');
|
33
34
|
var import_Function = require('../Function.cjs');
|
34
35
|
var import_Object = require('../Object.cjs');
|
35
36
|
var import_Path = require('../Path.cjs');
|
@@ -167,7 +168,13 @@ async function handleRenameAsync(app, oldPath, newPath, backlinks) {
|
|
167
168
|
}
|
168
169
|
if ((0, import_FileSystem.isCanvasFile)(newPath)) {
|
169
170
|
await (0, import_Vault.process)(app, newPath, (content) => {
|
170
|
-
|
171
|
+
let canvasData;
|
172
|
+
try {
|
173
|
+
canvasData = JSON.parse(content);
|
174
|
+
} catch (e) {
|
175
|
+
(0, import_Error.printError)(new Error(`Failed to parse canvas data for ${newPath}`, { cause: e }));
|
176
|
+
return content;
|
177
|
+
}
|
171
178
|
for (const node of canvasData.nodes) {
|
172
179
|
if (node.type !== "file") {
|
173
180
|
continue;
|
@@ -343,4 +350,4 @@ async function renameHandled(app, oldPath, newPath) {
|
|
343
350
|
0 && (module.exports = {
|
344
351
|
registerRenameDeleteHandlers
|
345
352
|
});
|
346
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1JlbmFtZURlbGV0ZUhhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzWydwcm9jZXNzJ10gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuaW1wb3J0IHsgYXJvdW5kIH0gZnJvbSAnbW9ua2V5LWFyb3VuZCc7XG5pbXBvcnQgdHlwZSB7XG4gIENhY2hlZE1ldGFkYXRhLFxuICBQbHVnaW4sXG4gIFJlZmVyZW5jZSxcbiAgVEFic3RyYWN0RmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge1xuICBBcHAsXG4gIFRGaWxlLFxuICBWYXVsdFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IENhbnZhc0RhdGEgfSBmcm9tICdvYnNpZGlhbi9jYW52YXMuanMnO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdvYnNpZGlhbi10eXBpbmdzJztcblxuaW1wb3J0IHsgbm9vcEFzeW5jIH0gZnJvbSAnLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgdG9Kc29uIH0gZnJvbSAnLi4vT2JqZWN0LnRzJztcbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBqb2luLFxuICBtYWtlRmlsZU5hbWUsXG4gIHJlbGF0aXZlXG59IGZyb20gJy4uL1BhdGgudHMnO1xuaW1wb3J0IHsgZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlIH0gZnJvbSAnLi9BcHAudHMnO1xuaW1wb3J0IHsgZ2V0QXR0YWNobWVudEZvbGRlclBhdGggfSBmcm9tICcuL0F0dGFjaG1lbnRQYXRoLnRzJztcbmltcG9ydCB7IGNoYWluIH0gZnJvbSAnLi9DaGFpbmVkUHJvbWlzZS50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGb2xkZXJPck51bGwsXG4gIGlzQ2FudmFzRmlsZSxcbiAgaXNGaWxlLFxuICBpc01hcmtkb3duRmlsZSxcbiAgaXNOb3RlXG59IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBlZGl0TGlua3MsXG4gIGV4dHJhY3RMaW5rRmlsZSxcbiAgdXBkYXRlTGluayxcbiAgdXBkYXRlTGlua3NJbkZpbGVcbn0gZnJvbSAnLi9MaW5rLnRzJztcbmltcG9ydCB7XG4gIGdldEFsbExpbmtzLFxuICBnZXRCYWNrbGlua3NGb3JGaWxlT3JQYXRoLFxuICBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZSxcbiAgZ2V0QmFja2xpbmtzTWFwLFxuICBnZXRDYWNoZVNhZmVcbn0gZnJvbSAnLi9NZXRhZGF0YUNhY2hlLnRzJztcbmltcG9ydCB7XG4gIGRlbGV0ZUVtcHR5Rm9sZGVySGllcmFyY2h5LFxuICBkZWxldGVTYWZlLFxuICBnZXRTYWZlUmVuYW1lUGF0aCxcbiAgcHJvY2VzcyxcbiAgcmVuYW1lU2FmZVxufSBmcm9tICcuL1ZhdWx0LnRzJztcblxuY29uc3QgZGVsZXRlZE1ldGFkYXRhQ2FjaGVNYXAgPSBuZXcgTWFwPHN0cmluZywgQ2FjaGVkTWV0YWRhdGE+KCk7XG5jb25zdCBoYW5kbGVkUmVuYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4vKipcbiAqIFNldHRpbmdzIGZvciB0aGUgcmVuYW1lL2RlbGV0ZSBoYW5kbGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRlbGV0ZSBjb25mbGljdGluZyBhdHRhY2htZW50cy5cbiAgICovXG4gIHNob3VsZERlbGV0ZUNvbmZsaWN0aW5nQXR0YWNobWVudHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGVsZXRlIGVtcHR5IGZvbGRlcnMuXG4gICAqL1xuICBzaG91bGREZWxldGVFbXB0eUZvbGRlcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGVsZXRlIG9ycGhhbiBhdHRhY2htZW50cyBhZnRlciBhIGRlbGV0ZS5cbiAgICovXG4gIHNob3VsZERlbGV0ZU9ycGhhbkF0dGFjaG1lbnRzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlbmFtZSBhdHRhY2htZW50IGZpbGVzIHdoZW4gYSBub3RlIGlzIHJlbmFtZWQuXG4gICAqL1xuICBzaG91bGRSZW5hbWVBdHRhY2htZW50RmlsZXM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAgKiBXaGV0aGVyIHRvIHJlbmFtZSBhdHRhY2htZW50IGZvbGRlciB3aGVuIGEgbm90ZSBpcyByZW5hbWVkLlxuICAgICovXG4gIHNob3VsZFJlbmFtZUF0dGFjaG1lbnRGb2xkZXI6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXBkYXRlIGZpbGVuYW1lIGFsaWFzZXMgd2hlbiBhIG5vdGUgaXMgcmVuYW1lZC5cbiAgICovXG4gIHNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXNlczogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byB1cGRhdGUgbGlua3Mgd2hlbiBhIG5vdGUgb3IgYXR0YWNobWVudCBpcyByZW5hbWVkLlxuICAgKi9cbiAgc2hvdWxkVXBkYXRlTGlua3M6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSByZW5hbWUvZGVsZXRlIGhhbmRsZXJzLlxuICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4gaW5zdGFuY2UuXG4gKiBAcGFyYW0gc2V0dGluZ3NCdWlsZGVyIC0gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHNldHRpbmdzIGZvciB0aGUgcmVuYW1lIGRlbGV0ZSBoYW5kbGVyLlxuICogQHJldHVybnMgdm9pZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJSZW5hbWVEZWxldGVIYW5kbGVycyhwbHVnaW46IFBsdWdpbiwgc2V0dGluZ3NCdWlsZGVyOiAoKSA9PiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4pOiB2b2lkIHtcbiAgY29uc3QgcmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAgPSBnZXRSZW5hbWVEZWxldGVIYW5kbGVyc01hcChwbHVnaW4uYXBwKTtcbiAgY29uc3QgcGx1Z2luSWQgPSBwbHVnaW4ubWFuaWZlc3QuaWQ7XG5cbiAgcmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAuc2V0KHBsdWdpbklkLCBzZXR0aW5nc0J1aWxkZXIpO1xuICBsb2dSZWdpc3RlcmVkSGFuZGxlcnMocGx1Z2luLmFwcCk7XG5cbiAgcGx1Z2luLnJlZ2lzdGVyKCgpID0+IHtcbiAgICByZW5hbWVEZWxldGVIYW5kbGVyc01hcC5kZWxldGUocGx1Z2luSWQpO1xuICAgIGxvZ1JlZ2lzdGVyZWRIYW5kbGVycyhwbHVnaW4uYXBwKTtcbiAgfSk7XG5cbiAgY29uc3QgYXBwID0gcGx1Z2luLmFwcDtcbiAgcGx1Z2luLnJlZ2lzdGVyRXZlbnQoXG4gICAgYXBwLnZhdWx0Lm9uKCdkZWxldGUnLCAoZmlsZSkgPT4ge1xuICAgICAgaWYgKCFzaG91bGRJbnZva2VIYW5kbGVyKGFwcCwgcGx1Z2luSWQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhdGggPSBmaWxlLnBhdGg7XG4gICAgICBjaGFpbihhcHAsICgpID0+IGhhbmRsZURlbGV0ZShhcHAsIHBhdGgpKTtcbiAgICB9KVxuICApO1xuXG4gIHBsdWdpbi5yZWdpc3RlckV2ZW50KFxuICAgIGFwcC52YXVsdC5vbigncmVuYW1lJywgKGZpbGUsIG9sZFBhdGgpID0+IHtcbiAgICAgIGlmICghc2hvdWxkSW52b2tlSGFuZGxlcihhcHAsIHBsdWdpbklkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBuZXdQYXRoID0gZmlsZS5wYXRoO1xuICAgICAgaGFuZGxlUmVuYW1lKGFwcCwgb2xkUGF0aCwgbmV3UGF0aCk7XG4gICAgfSlcbiAgKTtcblxuICBwbHVnaW4ucmVnaXN0ZXJFdmVudChcbiAgICBhcHAubWV0YWRhdGFDYWNoZS5vbignZGVsZXRlZCcsIChmaWxlLCBwcmV2Q2FjaGUpID0+IHtcbiAgICAgIGhhbmRsZU1ldGFkYXRhRGVsZXRlZChhcHAsIGZpbGUsIHByZXZDYWNoZSk7XG4gICAgfSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkSW52b2tlSGFuZGxlcihhcHA6IEFwcCwgcGx1Z2luSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCByZW5hbWVEZWxldGVIYW5kbGVyUGx1Z2luSWRzID0gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAoYXBwKTtcbiAgY29uc3QgbWFpblBsdWdpbklkID0gQXJyYXkuZnJvbShyZW5hbWVEZWxldGVIYW5kbGVyUGx1Z2luSWRzLmtleXMoKSlbMF07XG4gIGlmIChtYWluUGx1Z2luSWQgIT09IHBsdWdpbklkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBnZXRSZW5hbWVEZWxldGVIYW5kbGVyc01hcChhcHA6IEFwcCk6IE1hcDxzdHJpbmcsICgpID0+IFBhcnRpYWw8UmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzPj4ge1xuICByZXR1cm4gZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlKGFwcCwgJ3JlbmFtZURlbGV0ZUhhbmRsZXJzTWFwJywgbmV3IE1hcDxzdHJpbmcsICgpID0+IFBhcnRpYWw8UmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzPj4oKSkudmFsdWU7XG59XG5cbmZ1bmN0aW9uIGxvZ1JlZ2lzdGVyZWRIYW5kbGVycyhhcHA6IEFwcCk6IHZvaWQge1xuICBjb25zdCByZW5hbWVEZWxldGVIYW5kbGVyc01hcCA9IGdldFJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwKGFwcCk7XG4gIGNvbnNvbGUuZGVidWcoYFBsdWdpbnMgd2l0aCByZWdpc3RlcmVkIHJlbmFtZS9kZWxldGUgaGFuZGxlcnM6ICR7QXJyYXkuZnJvbShyZW5hbWVEZWxldGVIYW5kbGVyc01hcC5rZXlzKCkpLmpvaW4oJywgJyl9YCk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVJlbmFtZShhcHA6IEFwcCwgb2xkUGF0aDogc3RyaW5nLCBuZXdQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3Qga2V5ID0gbWFrZUtleShvbGRQYXRoLCBuZXdQYXRoKTtcbiAgY29uc29sZS5kZWJ1ZyhgSGFuZGxlIFJlbmFtZSAke2tleX1gKTtcbiAgaWYgKGhhbmRsZWRSZW5hbWVzLmhhcyhrZXkpKSB7XG4gICAgaGFuZGxlZFJlbmFtZXMuZGVsZXRlKGtleSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYmFja2xpbmtzID0gZ2V0QmFja2xpbmtzRm9yRmlsZU9yUGF0aChhcHAsIG9sZFBhdGgpO1xuICBjaGFpbihhcHAsICgpID0+IGhhbmRsZVJlbmFtZUFzeW5jKGFwcCwgb2xkUGF0aCwgbmV3UGF0aCwgYmFja2xpbmtzKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZVJlbmFtZUFzeW5jKGFwcDogQXBwLCBvbGRQYXRoOiBzdHJpbmcsIG5ld1BhdGg6IHN0cmluZywgYmFja2xpbmtzOiBDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoYXBwLnZhdWx0LmFkYXB0ZXIuaW5zZW5zaXRpdmUgJiYgb2xkUGF0aC50b0xvd2VyQ2FzZSgpID09PSBuZXdQYXRoLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjb25zdCB0ZW1wUGF0aCA9IGpvaW4oZGlybmFtZShuZXdQYXRoKSwgJ19fdGVtcF9fJyArIGJhc2VuYW1lKG5ld1BhdGgpKTtcbiAgICBhd2FpdCByZW5hbWVIYW5kbGVkKGFwcCwgbmV3UGF0aCwgdGVtcFBhdGgpO1xuICAgIGF3YWl0IGhhbmRsZVJlbmFtZUFzeW5jKGFwcCwgb2xkUGF0aCwgdGVtcFBhdGgsIGJhY2tsaW5rcyk7XG4gICAgYXdhaXQgYXBwLnZhdWx0LnJlbmFtZShnZXRGaWxlKGFwcCwgdGVtcFBhdGgpLCBuZXdQYXRoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCByZXN0b3JlVXBkYXRlQWxsTGlua3MgPSBhcm91bmQoYXBwLmZpbGVNYW5hZ2VyLCB7XG4gICAgdXBkYXRlQWxsTGlua3M6ICgpID0+IG5vb3BBc3luY1xuICB9KTtcbiAgdHJ5IHtcbiAgICBjb25zdCByZW5hbWVNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGF3YWl0IGZpbGxSZW5hbWVNYXAoYXBwLCBvbGRQYXRoLCBuZXdQYXRoLCByZW5hbWVNYXApO1xuXG4gICAgY29uc3QgYmFja2xpbmtzTWFwID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIHN0cmluZz4+KCk7XG4gICAgaW5pdEJhY2tsaW5rc01hcChiYWNrbGlua3MuZGF0YSwgcmVuYW1lTWFwLCBiYWNrbGlua3NNYXAsIG9sZFBhdGgpO1xuXG4gICAgZm9yIChjb25zdCBhdHRhY2htZW50T2xkUGF0aCBvZiByZW5hbWVNYXAua2V5cygpKSB7XG4gICAgICBpZiAoYXR0YWNobWVudE9sZFBhdGggPT09IG9sZFBhdGgpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50QmFja2xpbmtzTWFwID0gYXdhaXQgZ2V0QmFja2xpbmtzTWFwKGFwcCwgW2F0dGFjaG1lbnRPbGRQYXRoXSk7XG4gICAgICBpbml0QmFja2xpbmtzTWFwKGN1cnJlbnRCYWNrbGlua3NNYXAsIHJlbmFtZU1hcCwgYmFja2xpbmtzTWFwLCBhdHRhY2htZW50T2xkUGF0aCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50Rm9sZGVycyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgZm9yIChjb25zdCBbb2xkUmVsYXRlZFBhdGgsIG5ld1JlbGF0ZWRQYXRoXSBvZiByZW5hbWVNYXAuZW50cmllcygpKSB7XG4gICAgICBpZiAob2xkUmVsYXRlZFBhdGggPT09IG9sZFBhdGgpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBmaXhlZE5ld1JlbGF0ZWRQYXRoID0gYXdhaXQgcmVuYW1lSGFuZGxlZChhcHAsIG9sZFJlbGF0ZWRQYXRoLCBuZXdSZWxhdGVkUGF0aCk7XG4gICAgICByZW5hbWVNYXAuc2V0KG9sZFJlbGF0ZWRQYXRoLCBmaXhlZE5ld1JlbGF0ZWRQYXRoKTtcbiAgICAgIHBhcmVudEZvbGRlcnMuYWRkKGRpcm5hbWUob2xkUmVsYXRlZFBhdGgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXR0aW5ncyA9IGdldFNldHRpbmdzKGFwcCk7XG4gICAgaWYgKHNldHRpbmdzLnNob3VsZERlbGV0ZUVtcHR5Rm9sZGVycykge1xuICAgICAgZm9yIChjb25zdCBwYXJlbnRGb2xkZXIgb2YgcGFyZW50Rm9sZGVycykge1xuICAgICAgICBhd2FpdCBkZWxldGVFbXB0eUZvbGRlckhpZXJhcmNoeShhcHAsIHBhcmVudEZvbGRlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbbmV3QmFja2xpbmtQYXRoLCBsaW5rSnNvblRvUGF0aE1hcF0gb2YgYmFja2xpbmtzTWFwLmVudHJpZXMoKSkge1xuICAgICAgYXdhaXQgZWRpdExpbmtzKGFwcCwgbmV3QmFja2xpbmtQYXRoLCAobGluaykgPT4ge1xuICAgICAgICBjb25zdCBvbGRSZWxhdGVkUGF0aCA9IGxpbmtKc29uVG9QYXRoTWFwLmdldCh0b0pzb24obGluaykpO1xuICAgICAgICBpZiAoIW9sZFJlbGF0ZWRQYXRoKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3UmVsYXRlZFBhdGggPSByZW5hbWVNYXAuZ2V0KG9sZFJlbGF0ZWRQYXRoKTtcbiAgICAgICAgaWYgKCFuZXdSZWxhdGVkUGF0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cGRhdGVMaW5rKHtcbiAgICAgICAgICBhcHA6IGFwcCxcbiAgICAgICAgICBsaW5rLFxuICAgICAgICAgIHBhdGhPckZpbGU6IG5ld1JlbGF0ZWRQYXRoLFxuICAgICAgICAgIG9sZFBhdGhPckZpbGU6IG9sZFJlbGF0ZWRQYXRoLFxuICAgICAgICAgIHNvdXJjZVBhdGhPckZpbGU6IG5ld0JhY2tsaW5rUGF0aCxcbiAgICAgICAgICByZW5hbWVNYXAsXG4gICAgICAgICAgc2hvdWxkVXBkYXRlRmlsZW5hbWVBbGlhczogc2V0dGluZ3Muc2hvdWxkVXBkYXRlRmlsZW5hbWVBbGlhc2VzXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGlzQ2FudmFzRmlsZShuZXdQYXRoKSkge1xuICAgICAgYXdhaXQgcHJvY2VzcyhhcHAsIG5ld1BhdGgsIChjb250ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGNhbnZhc0RhdGEgPSBKU09OLnBhcnNlKGNvbnRlbnQpIGFzIENhbnZhc0RhdGE7XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBjYW52YXNEYXRhLm5vZGVzKSB7XG4gICAgICAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbmV3UGF0aCA9IHJlbmFtZU1hcC5nZXQobm9kZS5maWxlKTtcbiAgICAgICAgICBpZiAoIW5ld1BhdGgpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBub2RlLmZpbGUgPSBuZXdQYXRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b0pzb24oY2FudmFzRGF0YSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGlzTWFya2Rvd25GaWxlKG5ld1BhdGgpKSB7XG4gICAgICBhd2FpdCB1cGRhdGVMaW5rc0luRmlsZSh7XG4gICAgICAgIGFwcDogYXBwLFxuICAgICAgICBwYXRoT3JGaWxlOiBuZXdQYXRoLFxuICAgICAgICBvbGRQYXRoT3JGaWxlOiBvbGRQYXRoLFxuICAgICAgICByZW5hbWVNYXAsXG4gICAgICAgIHNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXM6IHNldHRpbmdzLnNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXNlc1xuICAgICAgfSk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIHJlc3RvcmVVcGRhdGVBbGxMaW5rcygpO1xuICAgIGNvbnN0IG9ycGhhbktleXMgPSBBcnJheS5mcm9tKGhhbmRsZWRSZW5hbWVzKTtcbiAgICBjaGFpbihhcHAsICgpID0+IHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIG9ycGhhbktleXMpIHtcbiAgICAgICAgaGFuZGxlZFJlbmFtZXMuZGVsZXRlKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdEJhY2tsaW5rc01hcChjdXJyZW50QmFja2xpbmtzTWFwOiBNYXA8c3RyaW5nLCBSZWZlcmVuY2VbXT4sIHJlbmFtZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPiwgYmFja2xpbmtzTWFwOiBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBzdHJpbmc+PiwgcGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGZvciAoY29uc3QgW2JhY2tsaW5rUGF0aCwgbGlua3NdIG9mIGN1cnJlbnRCYWNrbGlua3NNYXAuZW50cmllcygpKSB7XG4gICAgY29uc3QgbmV3QmFja2xpbmtQYXRoID0gcmVuYW1lTWFwLmdldChiYWNrbGlua1BhdGgpID8/IGJhY2tsaW5rUGF0aDtcbiAgICBjb25zdCBsaW5rSnNvblRvUGF0aE1hcCA9IGJhY2tsaW5rc01hcC5nZXQobmV3QmFja2xpbmtQYXRoKSA/PyBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGJhY2tsaW5rc01hcC5zZXQobmV3QmFja2xpbmtQYXRoLCBsaW5rSnNvblRvUGF0aE1hcCk7XG4gICAgZm9yIChjb25zdCBsaW5rIG9mIGxpbmtzKSB7XG4gICAgICBsaW5rSnNvblRvUGF0aE1hcC5zZXQodG9Kc29uKGxpbmspLCBwYXRoKTtcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlRGVsZXRlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc29sZS5kZWJ1ZyhgSGFuZGxlIERlbGV0ZSAke3BhdGh9YCk7XG4gIGlmICghaXNOb3RlKHBhdGgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhhcHApO1xuICBpZiAoIXNldHRpbmdzLnNob3VsZERlbGV0ZU9ycGhhbkF0dGFjaG1lbnRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY2FjaGUgPSBkZWxldGVkTWV0YWRhdGFDYWNoZU1hcC5nZXQocGF0aCk7XG4gIGRlbGV0ZWRNZXRhZGF0YUNhY2hlTWFwLmRlbGV0ZShwYXRoKTtcbiAgaWYgKGNhY2hlKSB7XG4gICAgY29uc3QgbGlua3MgPSBnZXRBbGxMaW5rcyhjYWNoZSk7XG5cbiAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRGaWxlID0gZXh0cmFjdExpbmtGaWxlKGFwcCwgbGluaywgcGF0aCk7XG4gICAgICBpZiAoIWF0dGFjaG1lbnRGaWxlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNOb3RlKGF0dGFjaG1lbnRGaWxlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgZGVsZXRlU2FmZShhcHAsIGF0dGFjaG1lbnRGaWxlLCBwYXRoLCBzZXR0aW5ncy5zaG91bGREZWxldGVFbXB0eUZvbGRlcnMpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgoYXBwLCBwYXRoKTtcbiAgY29uc3QgYXR0YWNobWVudEZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIGF0dGFjaG1lbnRGb2xkZXJQYXRoKTtcblxuICBpZiAoIWF0dGFjaG1lbnRGb2xkZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBhd2FpdCBkZWxldGVTYWZlKGFwcCwgYXR0YWNobWVudEZvbGRlciwgcGF0aCwgZmFsc2UsIHNldHRpbmdzLnNob3VsZERlbGV0ZUVtcHR5Rm9sZGVycyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbGxSZW5hbWVNYXAoYXBwOiBBcHAsIG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nLCByZW5hbWVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmVuYW1lTWFwLnNldChvbGRQYXRoLCBuZXdQYXRoKTtcblxuICBpZiAoIWlzTm90ZShvbGRQYXRoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3MoYXBwKTtcblxuICBjb25zdCBvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKGFwcCwgb2xkUGF0aCk7XG4gIGNvbnN0IG5ld0F0dGFjaG1lbnRGb2xkZXJQYXRoID0gc2V0dGluZ3Muc2hvdWxkUmVuYW1lQXR0YWNobWVudEZvbGRlclxuICAgID8gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgoYXBwLCBuZXdQYXRoKVxuICAgIDogb2xkQXR0YWNobWVudEZvbGRlclBhdGg7XG4gIGNvbnN0IGR1bW15T2xkQXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHAsIGpvaW4oZGlybmFtZShvbGRQYXRoKSwgJ0RVTU1ZX0ZJTEUubWQnKSk7XG5cbiAgY29uc3Qgb2xkQXR0YWNobWVudEZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoKTtcblxuICBpZiAoIW9sZEF0dGFjaG1lbnRGb2xkZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAob2xkQXR0YWNobWVudEZvbGRlclBhdGggPT09IG5ld0F0dGFjaG1lbnRGb2xkZXJQYXRoICYmICFzZXR0aW5ncy5zaG91bGRSZW5hbWVBdHRhY2htZW50RmlsZXMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvbGRBdHRhY2htZW50RmlsZXM6IFRGaWxlW10gPSBbXTtcblxuICBpZiAob2xkQXR0YWNobWVudEZvbGRlclBhdGggPT09IGR1bW15T2xkQXR0YWNobWVudEZvbGRlclBhdGgpIHtcbiAgICBjb25zdCBvbGRDYWNoZSA9IGF3YWl0IGdldENhY2hlU2FmZShhcHAsIG9sZFBhdGgpO1xuICAgIGlmICghb2xkQ2FjaGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChjb25zdCBvbGRMaW5rIG9mIGdldEFsbExpbmtzKG9sZENhY2hlKSkge1xuICAgICAgY29uc3Qgb2xkQXR0YWNobWVudEZpbGUgPSBleHRyYWN0TGlua0ZpbGUoYXBwLCBvbGRMaW5rLCBvbGRQYXRoKTtcbiAgICAgIGlmICghb2xkQXR0YWNobWVudEZpbGUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChvbGRBdHRhY2htZW50RmlsZS5wYXRoLnN0YXJ0c1dpdGgob2xkQXR0YWNobWVudEZvbGRlclBhdGgpKSB7XG4gICAgICAgIGNvbnN0IG9sZEF0dGFjaG1lbnRCYWNrbGlua3MgPSBhd2FpdCBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZShhcHAsIG9sZEF0dGFjaG1lbnRGaWxlKTtcbiAgICAgICAgaWYgKG9sZEF0dGFjaG1lbnRCYWNrbGlua3Mua2V5cygpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIG9sZEF0dGFjaG1lbnRGaWxlcy5wdXNoKG9sZEF0dGFjaG1lbnRGaWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBWYXVsdC5yZWN1cnNlQ2hpbGRyZW4ob2xkQXR0YWNobWVudEZvbGRlciwgKG9sZEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgICBpZiAoaXNGaWxlKG9sZEF0dGFjaG1lbnRGaWxlKSkge1xuICAgICAgICBvbGRBdHRhY2htZW50RmlsZXMucHVzaChvbGRBdHRhY2htZW50RmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBvbGRCYXNlbmFtZSA9IGJhc2VuYW1lKG9sZFBhdGgsIGV4dG5hbWUob2xkUGF0aCkpO1xuICBjb25zdCBuZXdCYXNlbmFtZSA9IGJhc2VuYW1lKG5ld1BhdGgsIGV4dG5hbWUobmV3UGF0aCkpO1xuXG4gIGZvciAoY29uc3Qgb2xkQXR0YWNobWVudEZpbGUgb2Ygb2xkQXR0YWNobWVudEZpbGVzKSB7XG4gICAgaWYgKGlzTm90ZShvbGRBdHRhY2htZW50RmlsZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZShvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCwgb2xkQXR0YWNobWVudEZpbGUucGF0aCk7XG4gICAgY29uc3QgbmV3RGlyID0gam9pbihuZXdBdHRhY2htZW50Rm9sZGVyUGF0aCwgZGlybmFtZShyZWxhdGl2ZVBhdGgpKTtcbiAgICBjb25zdCBuZXdDaGlsZEJhc2VuYW1lID0gc2V0dGluZ3Muc2hvdWxkUmVuYW1lQXR0YWNobWVudEZpbGVzXG4gICAgICA/IG9sZEF0dGFjaG1lbnRGaWxlLmJhc2VuYW1lLnJlcGxhY2VBbGwob2xkQmFzZW5hbWUsIG5ld0Jhc2VuYW1lKVxuICAgICAgOiBvbGRBdHRhY2htZW50RmlsZS5iYXNlbmFtZTtcbiAgICBsZXQgbmV3Q2hpbGRQYXRoID0gam9pbihuZXdEaXIsIG1ha2VGaWxlTmFtZShuZXdDaGlsZEJhc2VuYW1lLCBvbGRBdHRhY2htZW50RmlsZS5leHRlbnNpb24pKTtcblxuICAgIGlmIChvbGRBdHRhY2htZW50RmlsZS5wYXRoID09PSBuZXdDaGlsZFBhdGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChzZXR0aW5ncy5zaG91bGREZWxldGVDb25mbGljdGluZ0F0dGFjaG1lbnRzKSB7XG4gICAgICBjb25zdCBuZXdDaGlsZEZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgbmV3Q2hpbGRQYXRoKTtcbiAgICAgIGlmIChuZXdDaGlsZEZpbGUpIHtcbiAgICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShuZXdDaGlsZEZpbGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdDaGlsZFBhdGggPSBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChqb2luKG5ld0RpciwgbmV3Q2hpbGRCYXNlbmFtZSksIG9sZEF0dGFjaG1lbnRGaWxlLmV4dGVuc2lvbik7XG4gICAgfVxuICAgIHJlbmFtZU1hcC5zZXQob2xkQXR0YWNobWVudEZpbGUucGF0aCwgbmV3Q2hpbGRQYXRoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTZXR0aW5ncyhhcHA6IEFwcCk6IFBhcnRpYWw8UmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzPiB7XG4gIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwID0gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAoYXBwKTtcbiAgY29uc3Qgc2V0dGluZ3NCdWlsZGVycyA9IEFycmF5LmZyb20ocmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAudmFsdWVzKCkpLnJldmVyc2UoKTtcblxuICBjb25zdCBzZXR0aW5nczogUGFydGlhbDxSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3M+ID0ge307XG4gIGZvciAoY29uc3Qgc2V0dGluZ3NCdWlsZGVyIG9mIHNldHRpbmdzQnVpbGRlcnMpIHtcbiAgICBjb25zdCBuZXdTZXR0aW5ncyA9IHNldHRpbmdzQnVpbGRlcigpO1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG5ld1NldHRpbmdzKSBhcyBba2V5b2YgUmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzLCBib29sZWFuXVtdKSB7XG4gICAgICBzZXR0aW5nc1trZXldIHx8PSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2V0dGluZ3M7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZU1ldGFkYXRhRGVsZXRlZChhcHA6IEFwcCwgZmlsZTogVEFic3RyYWN0RmlsZSwgcHJldkNhY2hlOiBDYWNoZWRNZXRhZGF0YSB8IG51bGwpOiB2b2lkIHtcbiAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhhcHApO1xuICBpZiAoIXNldHRpbmdzLnNob3VsZERlbGV0ZU9ycGhhbkF0dGFjaG1lbnRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChpc01hcmtkb3duRmlsZShmaWxlKSAmJiBwcmV2Q2FjaGUpIHtcbiAgICBkZWxldGVkTWV0YWRhdGFDYWNoZU1hcC5zZXQoZmlsZS5wYXRoLCBwcmV2Q2FjaGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VLZXkob2xkUGF0aDogc3RyaW5nLCBuZXdQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7b2xkUGF0aH0gLT4gJHtuZXdQYXRofWA7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbmFtZUhhbmRsZWQoYXBwOiBBcHAsIG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgbmV3UGF0aCA9IGdldFNhZmVSZW5hbWVQYXRoKGFwcCwgb2xkUGF0aCwgbmV3UGF0aCk7XG4gIGlmIChvbGRQYXRoID09PSBuZXdQYXRoKSB7XG4gICAgcmV0dXJuIG5ld1BhdGg7XG4gIH1cbiAgY29uc3Qga2V5ID0gbWFrZUtleShvbGRQYXRoLCBuZXdQYXRoKTtcbiAgaGFuZGxlZFJlbmFtZXMuYWRkKGtleSk7XG4gIG5ld1BhdGggPSBhd2FpdCByZW5hbWVTYWZlKGFwcCwgb2xkUGF0aCwgbmV3UGF0aCk7XG4gIHJldHVybiBuZXdQYXRoO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtB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
|
353
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1JlbmFtZURlbGV0ZUhhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzWydwcm9jZXNzJ10gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuaW1wb3J0IHsgYXJvdW5kIH0gZnJvbSAnbW9ua2V5LWFyb3VuZCc7XG5pbXBvcnQgdHlwZSB7XG4gIENhY2hlZE1ldGFkYXRhLFxuICBQbHVnaW4sXG4gIFJlZmVyZW5jZSxcbiAgVEFic3RyYWN0RmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge1xuICBBcHAsXG4gIFRGaWxlLFxuICBWYXVsdFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IENhbnZhc0RhdGEgfSBmcm9tICdvYnNpZGlhbi9jYW52YXMuanMnO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdvYnNpZGlhbi10eXBpbmdzJztcblxuaW1wb3J0IHsgcHJpbnRFcnJvciB9IGZyb20gJy4uL0Vycm9yLnRzJztcbmltcG9ydCB7IG5vb3BBc3luYyB9IGZyb20gJy4uL0Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IHRvSnNvbiB9IGZyb20gJy4uL09iamVjdC50cyc7XG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZGlybmFtZSxcbiAgZXh0bmFtZSxcbiAgam9pbixcbiAgbWFrZUZpbGVOYW1lLFxuICByZWxhdGl2ZVxufSBmcm9tICcuLi9QYXRoLnRzJztcbmltcG9ydCB7IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSB9IGZyb20gJy4vQXBwLnRzJztcbmltcG9ydCB7IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoIH0gZnJvbSAnLi9BdHRhY2htZW50UGF0aC50cyc7XG5pbXBvcnQgeyBjaGFpbiB9IGZyb20gJy4vQ2hhaW5lZFByb21pc2UudHMnO1xuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgZ2V0RmlsZU9yTnVsbCxcbiAgZ2V0Rm9sZGVyT3JOdWxsLFxuICBpc0NhbnZhc0ZpbGUsXG4gIGlzRmlsZSxcbiAgaXNNYXJrZG93bkZpbGUsXG4gIGlzTm90ZVxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgZWRpdExpbmtzLFxuICBleHRyYWN0TGlua0ZpbGUsXG4gIHVwZGF0ZUxpbmssXG4gIHVwZGF0ZUxpbmtzSW5GaWxlXG59IGZyb20gJy4vTGluay50cyc7XG5pbXBvcnQge1xuICBnZXRBbGxMaW5rcyxcbiAgZ2V0QmFja2xpbmtzRm9yRmlsZU9yUGF0aCxcbiAgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUsXG4gIGdldEJhY2tsaW5rc01hcCxcbiAgZ2V0Q2FjaGVTYWZlXG59IGZyb20gJy4vTWV0YWRhdGFDYWNoZS50cyc7XG5pbXBvcnQge1xuICBkZWxldGVFbXB0eUZvbGRlckhpZXJhcmNoeSxcbiAgZGVsZXRlU2FmZSxcbiAgZ2V0U2FmZVJlbmFtZVBhdGgsXG4gIHByb2Nlc3MsXG4gIHJlbmFtZVNhZmVcbn0gZnJvbSAnLi9WYXVsdC50cyc7XG5cbmNvbnN0IGRlbGV0ZWRNZXRhZGF0YUNhY2hlTWFwID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlZE1ldGFkYXRhPigpO1xuY29uc3QgaGFuZGxlZFJlbmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuLyoqXG4gKiBTZXR0aW5ncyBmb3IgdGhlIHJlbmFtZS9kZWxldGUgaGFuZGxlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3Mge1xuICAvKipcbiAgICogV2hldGhlciB0byBkZWxldGUgY29uZmxpY3RpbmcgYXR0YWNobWVudHMuXG4gICAqL1xuICBzaG91bGREZWxldGVDb25mbGljdGluZ0F0dGFjaG1lbnRzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRlbGV0ZSBlbXB0eSBmb2xkZXJzLlxuICAgKi9cbiAgc2hvdWxkRGVsZXRlRW1wdHlGb2xkZXJzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRlbGV0ZSBvcnBoYW4gYXR0YWNobWVudHMgYWZ0ZXIgYSBkZWxldGUuXG4gICAqL1xuICBzaG91bGREZWxldGVPcnBoYW5BdHRhY2htZW50czogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZW5hbWUgYXR0YWNobWVudCBmaWxlcyB3aGVuIGEgbm90ZSBpcyByZW5hbWVkLlxuICAgKi9cbiAgc2hvdWxkUmVuYW1lQXR0YWNobWVudEZpbGVzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgICogV2hldGhlciB0byByZW5hbWUgYXR0YWNobWVudCBmb2xkZXIgd2hlbiBhIG5vdGUgaXMgcmVuYW1lZC5cbiAgICAqL1xuICBzaG91bGRSZW5hbWVBdHRhY2htZW50Rm9sZGVyOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVwZGF0ZSBmaWxlbmFtZSBhbGlhc2VzIHdoZW4gYSBub3RlIGlzIHJlbmFtZWQuXG4gICAqL1xuICBzaG91bGRVcGRhdGVGaWxlbmFtZUFsaWFzZXM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXBkYXRlIGxpbmtzIHdoZW4gYSBub3RlIG9yIGF0dGFjaG1lbnQgaXMgcmVuYW1lZC5cbiAgICovXG4gIHNob3VsZFVwZGF0ZUxpbmtzOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgcmVuYW1lL2RlbGV0ZSBoYW5kbGVycy5cbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIGluc3RhbmNlLlxuICogQHBhcmFtIHNldHRpbmdzQnVpbGRlciAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzZXR0aW5ncyBmb3IgdGhlIHJlbmFtZSBkZWxldGUgaGFuZGxlci5cbiAqIEByZXR1cm5zIHZvaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyUmVuYW1lRGVsZXRlSGFuZGxlcnMocGx1Z2luOiBQbHVnaW4sIHNldHRpbmdzQnVpbGRlcjogKCkgPT4gUGFydGlhbDxSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3M+KTogdm9pZCB7XG4gIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwID0gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAocGx1Z2luLmFwcCk7XG4gIGNvbnN0IHBsdWdpbklkID0gcGx1Z2luLm1hbmlmZXN0LmlkO1xuXG4gIHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwLnNldChwbHVnaW5JZCwgc2V0dGluZ3NCdWlsZGVyKTtcbiAgbG9nUmVnaXN0ZXJlZEhhbmRsZXJzKHBsdWdpbi5hcHApO1xuXG4gIHBsdWdpbi5yZWdpc3RlcigoKSA9PiB7XG4gICAgcmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAuZGVsZXRlKHBsdWdpbklkKTtcbiAgICBsb2dSZWdpc3RlcmVkSGFuZGxlcnMocGx1Z2luLmFwcCk7XG4gIH0pO1xuXG4gIGNvbnN0IGFwcCA9IHBsdWdpbi5hcHA7XG4gIHBsdWdpbi5yZWdpc3RlckV2ZW50KFxuICAgIGFwcC52YXVsdC5vbignZGVsZXRlJywgKGZpbGUpID0+IHtcbiAgICAgIGlmICghc2hvdWxkSW52b2tlSGFuZGxlcihhcHAsIHBsdWdpbklkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBwYXRoID0gZmlsZS5wYXRoO1xuICAgICAgY2hhaW4oYXBwLCAoKSA9PiBoYW5kbGVEZWxldGUoYXBwLCBwYXRoKSk7XG4gICAgfSlcbiAgKTtcblxuICBwbHVnaW4ucmVnaXN0ZXJFdmVudChcbiAgICBhcHAudmF1bHQub24oJ3JlbmFtZScsIChmaWxlLCBvbGRQYXRoKSA9PiB7XG4gICAgICBpZiAoIXNob3VsZEludm9rZUhhbmRsZXIoYXBwLCBwbHVnaW5JZCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV3UGF0aCA9IGZpbGUucGF0aDtcbiAgICAgIGhhbmRsZVJlbmFtZShhcHAsIG9sZFBhdGgsIG5ld1BhdGgpO1xuICAgIH0pXG4gICk7XG5cbiAgcGx1Z2luLnJlZ2lzdGVyRXZlbnQoXG4gICAgYXBwLm1ldGFkYXRhQ2FjaGUub24oJ2RlbGV0ZWQnLCAoZmlsZSwgcHJldkNhY2hlKSA9PiB7XG4gICAgICBoYW5kbGVNZXRhZGF0YURlbGV0ZWQoYXBwLCBmaWxlLCBwcmV2Q2FjaGUpO1xuICAgIH0pXG4gICk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZEludm9rZUhhbmRsZXIoYXBwOiBBcHAsIHBsdWdpbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgcmVuYW1lRGVsZXRlSGFuZGxlclBsdWdpbklkcyA9IGdldFJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwKGFwcCk7XG4gIGNvbnN0IG1haW5QbHVnaW5JZCA9IEFycmF5LmZyb20ocmVuYW1lRGVsZXRlSGFuZGxlclBsdWdpbklkcy5rZXlzKCkpWzBdO1xuICBpZiAobWFpblBsdWdpbklkICE9PSBwbHVnaW5JZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAoYXBwOiBBcHApOiBNYXA8c3RyaW5nLCAoKSA9PiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4+IHtcbiAgcmV0dXJuIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZShhcHAsICdyZW5hbWVEZWxldGVIYW5kbGVyc01hcCcsIG5ldyBNYXA8c3RyaW5nLCAoKSA9PiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4+KCkpLnZhbHVlO1xufVxuXG5mdW5jdGlvbiBsb2dSZWdpc3RlcmVkSGFuZGxlcnMoYXBwOiBBcHApOiB2b2lkIHtcbiAgY29uc3QgcmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAgPSBnZXRSZW5hbWVEZWxldGVIYW5kbGVyc01hcChhcHApO1xuICBjb25zb2xlLmRlYnVnKGBQbHVnaW5zIHdpdGggcmVnaXN0ZXJlZCByZW5hbWUvZGVsZXRlIGhhbmRsZXJzOiAke0FycmF5LmZyb20ocmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAua2V5cygpKS5qb2luKCcsICcpfWApO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVSZW5hbWUoYXBwOiBBcHAsIG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGtleSA9IG1ha2VLZXkob2xkUGF0aCwgbmV3UGF0aCk7XG4gIGNvbnNvbGUuZGVidWcoYEhhbmRsZSBSZW5hbWUgJHtrZXl9YCk7XG4gIGlmIChoYW5kbGVkUmVuYW1lcy5oYXMoa2V5KSkge1xuICAgIGhhbmRsZWRSZW5hbWVzLmRlbGV0ZShrZXkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGJhY2tsaW5rcyA9IGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgoYXBwLCBvbGRQYXRoKTtcbiAgY2hhaW4oYXBwLCAoKSA9PiBoYW5kbGVSZW5hbWVBc3luYyhhcHAsIG9sZFBhdGgsIG5ld1BhdGgsIGJhY2tsaW5rcykpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVSZW5hbWVBc3luYyhhcHA6IEFwcCwgb2xkUGF0aDogc3RyaW5nLCBuZXdQYXRoOiBzdHJpbmcsIGJhY2tsaW5rczogQ3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKGFwcC52YXVsdC5hZGFwdGVyLmluc2Vuc2l0aXZlICYmIG9sZFBhdGgudG9Mb3dlckNhc2UoKSA9PT0gbmV3UGF0aC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY29uc3QgdGVtcFBhdGggPSBqb2luKGRpcm5hbWUobmV3UGF0aCksICdfX3RlbXBfXycgKyBiYXNlbmFtZShuZXdQYXRoKSk7XG4gICAgYXdhaXQgcmVuYW1lSGFuZGxlZChhcHAsIG5ld1BhdGgsIHRlbXBQYXRoKTtcbiAgICBhd2FpdCBoYW5kbGVSZW5hbWVBc3luYyhhcHAsIG9sZFBhdGgsIHRlbXBQYXRoLCBiYWNrbGlua3MpO1xuICAgIGF3YWl0IGFwcC52YXVsdC5yZW5hbWUoZ2V0RmlsZShhcHAsIHRlbXBQYXRoKSwgbmV3UGF0aCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzdG9yZVVwZGF0ZUFsbExpbmtzID0gYXJvdW5kKGFwcC5maWxlTWFuYWdlciwge1xuICAgIHVwZGF0ZUFsbExpbmtzOiAoKSA9PiBub29wQXN5bmNcbiAgfSk7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVuYW1lTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBhd2FpdCBmaWxsUmVuYW1lTWFwKGFwcCwgb2xkUGF0aCwgbmV3UGF0aCwgcmVuYW1lTWFwKTtcblxuICAgIGNvbnN0IGJhY2tsaW5rc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBzdHJpbmc+PigpO1xuICAgIGluaXRCYWNrbGlua3NNYXAoYmFja2xpbmtzLmRhdGEsIHJlbmFtZU1hcCwgYmFja2xpbmtzTWFwLCBvbGRQYXRoKTtcblxuICAgIGZvciAoY29uc3QgYXR0YWNobWVudE9sZFBhdGggb2YgcmVuYW1lTWFwLmtleXMoKSkge1xuICAgICAgaWYgKGF0dGFjaG1lbnRPbGRQYXRoID09PSBvbGRQYXRoKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudEJhY2tsaW5rc01hcCA9IGF3YWl0IGdldEJhY2tsaW5rc01hcChhcHAsIFthdHRhY2htZW50T2xkUGF0aF0pO1xuICAgICAgaW5pdEJhY2tsaW5rc01hcChjdXJyZW50QmFja2xpbmtzTWFwLCByZW5hbWVNYXAsIGJhY2tsaW5rc01hcCwgYXR0YWNobWVudE9sZFBhdGgpO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudEZvbGRlcnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGZvciAoY29uc3QgW29sZFJlbGF0ZWRQYXRoLCBuZXdSZWxhdGVkUGF0aF0gb2YgcmVuYW1lTWFwLmVudHJpZXMoKSkge1xuICAgICAgaWYgKG9sZFJlbGF0ZWRQYXRoID09PSBvbGRQYXRoKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgZml4ZWROZXdSZWxhdGVkUGF0aCA9IGF3YWl0IHJlbmFtZUhhbmRsZWQoYXBwLCBvbGRSZWxhdGVkUGF0aCwgbmV3UmVsYXRlZFBhdGgpO1xuICAgICAgcmVuYW1lTWFwLnNldChvbGRSZWxhdGVkUGF0aCwgZml4ZWROZXdSZWxhdGVkUGF0aCk7XG4gICAgICBwYXJlbnRGb2xkZXJzLmFkZChkaXJuYW1lKG9sZFJlbGF0ZWRQYXRoKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhhcHApO1xuICAgIGlmIChzZXR0aW5ncy5zaG91bGREZWxldGVFbXB0eUZvbGRlcnMpIHtcbiAgICAgIGZvciAoY29uc3QgcGFyZW50Rm9sZGVyIG9mIHBhcmVudEZvbGRlcnMpIHtcbiAgICAgICAgYXdhaXQgZGVsZXRlRW1wdHlGb2xkZXJIaWVyYXJjaHkoYXBwLCBwYXJlbnRGb2xkZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW25ld0JhY2tsaW5rUGF0aCwgbGlua0pzb25Ub1BhdGhNYXBdIG9mIGJhY2tsaW5rc01hcC5lbnRyaWVzKCkpIHtcbiAgICAgIGF3YWl0IGVkaXRMaW5rcyhhcHAsIG5ld0JhY2tsaW5rUGF0aCwgKGxpbmspID0+IHtcbiAgICAgICAgY29uc3Qgb2xkUmVsYXRlZFBhdGggPSBsaW5rSnNvblRvUGF0aE1hcC5nZXQodG9Kc29uKGxpbmspKTtcbiAgICAgICAgaWYgKCFvbGRSZWxhdGVkUGF0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1JlbGF0ZWRQYXRoID0gcmVuYW1lTWFwLmdldChvbGRSZWxhdGVkUGF0aCk7XG4gICAgICAgIGlmICghbmV3UmVsYXRlZFBhdGgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXBkYXRlTGluayh7XG4gICAgICAgICAgYXBwOiBhcHAsXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICBwYXRoT3JGaWxlOiBuZXdSZWxhdGVkUGF0aCxcbiAgICAgICAgICBvbGRQYXRoT3JGaWxlOiBvbGRSZWxhdGVkUGF0aCxcbiAgICAgICAgICBzb3VyY2VQYXRoT3JGaWxlOiBuZXdCYWNrbGlua1BhdGgsXG4gICAgICAgICAgcmVuYW1lTWFwLFxuICAgICAgICAgIHNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXM6IHNldHRpbmdzLnNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXNlc1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpc0NhbnZhc0ZpbGUobmV3UGF0aCkpIHtcbiAgICAgIGF3YWl0IHByb2Nlc3MoYXBwLCBuZXdQYXRoLCAoY29udGVudCkgPT4ge1xuICAgICAgICBsZXQgY2FudmFzRGF0YTogQ2FudmFzRGF0YTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjYW52YXNEYXRhID0gSlNPTi5wYXJzZShjb250ZW50KSBhcyBDYW52YXNEYXRhO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSBjYW52YXMgZGF0YSBmb3IgJHtuZXdQYXRofWAsIHsgY2F1c2U6IGUgfSkpO1xuICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBjYW52YXNEYXRhLm5vZGVzKSB7XG4gICAgICAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbmV3UGF0aCA9IHJlbmFtZU1hcC5nZXQobm9kZS5maWxlKTtcbiAgICAgICAgICBpZiAoIW5ld1BhdGgpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBub2RlLmZpbGUgPSBuZXdQYXRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b0pzb24oY2FudmFzRGF0YSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGlzTWFya2Rvd25GaWxlKG5ld1BhdGgpKSB7XG4gICAgICBhd2FpdCB1cGRhdGVMaW5rc0luRmlsZSh7XG4gICAgICAgIGFwcDogYXBwLFxuICAgICAgICBwYXRoT3JGaWxlOiBuZXdQYXRoLFxuICAgICAgICBvbGRQYXRoT3JGaWxlOiBvbGRQYXRoLFxuICAgICAgICByZW5hbWVNYXAsXG4gICAgICAgIHNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXM6IHNldHRpbmdzLnNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXNlc1xuICAgICAgfSk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIHJlc3RvcmVVcGRhdGVBbGxMaW5rcygpO1xuICAgIGNvbnN0IG9ycGhhbktleXMgPSBBcnJheS5mcm9tKGhhbmRsZWRSZW5hbWVzKTtcbiAgICBjaGFpbihhcHAsICgpID0+IHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIG9ycGhhbktleXMpIHtcbiAgICAgICAgaGFuZGxlZFJlbmFtZXMuZGVsZXRlKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdEJhY2tsaW5rc01hcChjdXJyZW50QmFja2xpbmtzTWFwOiBNYXA8c3RyaW5nLCBSZWZlcmVuY2VbXT4sIHJlbmFtZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPiwgYmFja2xpbmtzTWFwOiBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBzdHJpbmc+PiwgcGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGZvciAoY29uc3QgW2JhY2tsaW5rUGF0aCwgbGlua3NdIG9mIGN1cnJlbnRCYWNrbGlua3NNYXAuZW50cmllcygpKSB7XG4gICAgY29uc3QgbmV3QmFja2xpbmtQYXRoID0gcmVuYW1lTWFwLmdldChiYWNrbGlua1BhdGgpID8/IGJhY2tsaW5rUGF0aDtcbiAgICBjb25zdCBsaW5rSnNvblRvUGF0aE1hcCA9IGJhY2tsaW5rc01hcC5nZXQobmV3QmFja2xpbmtQYXRoKSA/PyBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGJhY2tsaW5rc01hcC5zZXQobmV3QmFja2xpbmtQYXRoLCBsaW5rSnNvblRvUGF0aE1hcCk7XG4gICAgZm9yIChjb25zdCBsaW5rIG9mIGxpbmtzKSB7XG4gICAgICBsaW5rSnNvblRvUGF0aE1hcC5zZXQodG9Kc29uKGxpbmspLCBwYXRoKTtcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlRGVsZXRlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc29sZS5kZWJ1ZyhgSGFuZGxlIERlbGV0ZSAke3BhdGh9YCk7XG4gIGlmICghaXNOb3RlKHBhdGgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhhcHApO1xuICBpZiAoIXNldHRpbmdzLnNob3VsZERlbGV0ZU9ycGhhbkF0dGFjaG1lbnRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY2FjaGUgPSBkZWxldGVkTWV0YWRhdGFDYWNoZU1hcC5nZXQocGF0aCk7XG4gIGRlbGV0ZWRNZXRhZGF0YUNhY2hlTWFwLmRlbGV0ZShwYXRoKTtcbiAgaWYgKGNhY2hlKSB7XG4gICAgY29uc3QgbGlua3MgPSBnZXRBbGxMaW5rcyhjYWNoZSk7XG5cbiAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRGaWxlID0gZXh0cmFjdExpbmtGaWxlKGFwcCwgbGluaywgcGF0aCk7XG4gICAgICBpZiAoIWF0dGFjaG1lbnRGaWxlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNOb3RlKGF0dGFjaG1lbnRGaWxlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgZGVsZXRlU2FmZShhcHAsIGF0dGFjaG1lbnRGaWxlLCBwYXRoLCBzZXR0aW5ncy5zaG91bGREZWxldGVFbXB0eUZvbGRlcnMpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgoYXBwLCBwYXRoKTtcbiAgY29uc3QgYXR0YWNobWVudEZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIGF0dGFjaG1lbnRGb2xkZXJQYXRoKTtcblxuICBpZiAoIWF0dGFjaG1lbnRGb2xkZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBhd2FpdCBkZWxldGVTYWZlKGFwcCwgYXR0YWNobWVudEZvbGRlciwgcGF0aCwgZmFsc2UsIHNldHRpbmdzLnNob3VsZERlbGV0ZUVtcHR5Rm9sZGVycyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbGxSZW5hbWVNYXAoYXBwOiBBcHAsIG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nLCByZW5hbWVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmVuYW1lTWFwLnNldChvbGRQYXRoLCBuZXdQYXRoKTtcblxuICBpZiAoIWlzTm90ZShvbGRQYXRoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3MoYXBwKTtcblxuICBjb25zdCBvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKGFwcCwgb2xkUGF0aCk7XG4gIGNvbnN0IG5ld0F0dGFjaG1lbnRGb2xkZXJQYXRoID0gc2V0dGluZ3Muc2hvdWxkUmVuYW1lQXR0YWNobWVudEZvbGRlclxuICAgID8gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgoYXBwLCBuZXdQYXRoKVxuICAgIDogb2xkQXR0YWNobWVudEZvbGRlclBhdGg7XG4gIGNvbnN0IGR1bW15T2xkQXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHAsIGpvaW4oZGlybmFtZShvbGRQYXRoKSwgJ0RVTU1ZX0ZJTEUubWQnKSk7XG5cbiAgY29uc3Qgb2xkQXR0YWNobWVudEZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoKTtcblxuICBpZiAoIW9sZEF0dGFjaG1lbnRGb2xkZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAob2xkQXR0YWNobWVudEZvbGRlclBhdGggPT09IG5ld0F0dGFjaG1lbnRGb2xkZXJQYXRoICYmICFzZXR0aW5ncy5zaG91bGRSZW5hbWVBdHRhY2htZW50RmlsZXMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvbGRBdHRhY2htZW50RmlsZXM6IFRGaWxlW10gPSBbXTtcblxuICBpZiAob2xkQXR0YWNobWVudEZvbGRlclBhdGggPT09IGR1bW15T2xkQXR0YWNobWVudEZvbGRlclBhdGgpIHtcbiAgICBjb25zdCBvbGRDYWNoZSA9IGF3YWl0IGdldENhY2hlU2FmZShhcHAsIG9sZFBhdGgpO1xuICAgIGlmICghb2xkQ2FjaGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChjb25zdCBvbGRMaW5rIG9mIGdldEFsbExpbmtzKG9sZENhY2hlKSkge1xuICAgICAgY29uc3Qgb2xkQXR0YWNobWVudEZpbGUgPSBleHRyYWN0TGlua0ZpbGUoYXBwLCBvbGRMaW5rLCBvbGRQYXRoKTtcbiAgICAgIGlmICghb2xkQXR0YWNobWVudEZpbGUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChvbGRBdHRhY2htZW50RmlsZS5wYXRoLnN0YXJ0c1dpdGgob2xkQXR0YWNobWVudEZvbGRlclBhdGgpKSB7XG4gICAgICAgIGNvbnN0IG9sZEF0dGFjaG1lbnRCYWNrbGlua3MgPSBhd2FpdCBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZShhcHAsIG9sZEF0dGFjaG1lbnRGaWxlKTtcbiAgICAgICAgaWYgKG9sZEF0dGFjaG1lbnRCYWNrbGlua3Mua2V5cygpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIG9sZEF0dGFjaG1lbnRGaWxlcy5wdXNoKG9sZEF0dGFjaG1lbnRGaWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBWYXVsdC5yZWN1cnNlQ2hpbGRyZW4ob2xkQXR0YWNobWVudEZvbGRlciwgKG9sZEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgICBpZiAoaXNGaWxlKG9sZEF0dGFjaG1lbnRGaWxlKSkge1xuICAgICAgICBvbGRBdHRhY2htZW50RmlsZXMucHVzaChvbGRBdHRhY2htZW50RmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBvbGRCYXNlbmFtZSA9IGJhc2VuYW1lKG9sZFBhdGgsIGV4dG5hbWUob2xkUGF0aCkpO1xuICBjb25zdCBuZXdCYXNlbmFtZSA9IGJhc2VuYW1lKG5ld1BhdGgsIGV4dG5hbWUobmV3UGF0aCkpO1xuXG4gIGZvciAoY29uc3Qgb2xkQXR0YWNobWVudEZpbGUgb2Ygb2xkQXR0YWNobWVudEZpbGVzKSB7XG4gICAgaWYgKGlzTm90ZShvbGRBdHRhY2htZW50RmlsZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZShvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCwgb2xkQXR0YWNobWVudEZpbGUucGF0aCk7XG4gICAgY29uc3QgbmV3RGlyID0gam9pbihuZXdBdHRhY2htZW50Rm9sZGVyUGF0aCwgZGlybmFtZShyZWxhdGl2ZVBhdGgpKTtcbiAgICBjb25zdCBuZXdDaGlsZEJhc2VuYW1lID0gc2V0dGluZ3Muc2hvdWxkUmVuYW1lQXR0YWNobWVudEZpbGVzXG4gICAgICA/IG9sZEF0dGFjaG1lbnRGaWxlLmJhc2VuYW1lLnJlcGxhY2VBbGwob2xkQmFzZW5hbWUsIG5ld0Jhc2VuYW1lKVxuICAgICAgOiBvbGRBdHRhY2htZW50RmlsZS5iYXNlbmFtZTtcbiAgICBsZXQgbmV3Q2hpbGRQYXRoID0gam9pbihuZXdEaXIsIG1ha2VGaWxlTmFtZShuZXdDaGlsZEJhc2VuYW1lLCBvbGRBdHRhY2htZW50RmlsZS5leHRlbnNpb24pKTtcblxuICAgIGlmIChvbGRBdHRhY2htZW50RmlsZS5wYXRoID09PSBuZXdDaGlsZFBhdGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChzZXR0aW5ncy5zaG91bGREZWxldGVDb25mbGljdGluZ0F0dGFjaG1lbnRzKSB7XG4gICAgICBjb25zdCBuZXdDaGlsZEZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgbmV3Q2hpbGRQYXRoKTtcbiAgICAgIGlmIChuZXdDaGlsZEZpbGUpIHtcbiAgICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShuZXdDaGlsZEZpbGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdDaGlsZFBhdGggPSBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChqb2luKG5ld0RpciwgbmV3Q2hpbGRCYXNlbmFtZSksIG9sZEF0dGFjaG1lbnRGaWxlLmV4dGVuc2lvbik7XG4gICAgfVxuICAgIHJlbmFtZU1hcC5zZXQob2xkQXR0YWNobWVudEZpbGUucGF0aCwgbmV3Q2hpbGRQYXRoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTZXR0aW5ncyhhcHA6IEFwcCk6IFBhcnRpYWw8UmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzPiB7XG4gIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwID0gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAoYXBwKTtcbiAgY29uc3Qgc2V0dGluZ3NCdWlsZGVycyA9IEFycmF5LmZyb20ocmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAudmFsdWVzKCkpLnJldmVyc2UoKTtcblxuICBjb25zdCBzZXR0aW5nczogUGFydGlhbDxSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3M+ID0ge307XG4gIGZvciAoY29uc3Qgc2V0dGluZ3NCdWlsZGVyIG9mIHNldHRpbmdzQnVpbGRlcnMpIHtcbiAgICBjb25zdCBuZXdTZXR0aW5ncyA9IHNldHRpbmdzQnVpbGRlcigpO1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG5ld1NldHRpbmdzKSBhcyBba2V5b2YgUmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzLCBib29sZWFuXVtdKSB7XG4gICAgICBzZXR0aW5nc1trZXldIHx8PSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2V0dGluZ3M7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZU1ldGFkYXRhRGVsZXRlZChhcHA6IEFwcCwgZmlsZTogVEFic3RyYWN0RmlsZSwgcHJldkNhY2hlOiBDYWNoZWRNZXRhZGF0YSB8IG51bGwpOiB2b2lkIHtcbiAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhhcHApO1xuICBpZiAoIXNldHRpbmdzLnNob3VsZERlbGV0ZU9ycGhhbkF0dGFjaG1lbnRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChpc01hcmtkb3duRmlsZShmaWxlKSAmJiBwcmV2Q2FjaGUpIHtcbiAgICBkZWxldGVkTWV0YWRhdGFDYWNoZU1hcC5zZXQoZmlsZS5wYXRoLCBwcmV2Q2FjaGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VLZXkob2xkUGF0aDogc3RyaW5nLCBuZXdQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7b2xkUGF0aH0gLT4gJHtuZXdQYXRofWA7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbmFtZUhhbmRsZWQoYXBwOiBBcHAsIG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgbmV3UGF0aCA9IGdldFNhZmVSZW5hbWVQYXRoKGFwcCwgb2xkUGF0aCwgbmV3UGF0aCk7XG4gIGlmIChvbGRQYXRoID09PSBuZXdQYXRoKSB7XG4gICAgcmV0dXJuIG5ld1BhdGg7XG4gIH1cbiAgY29uc3Qga2V5ID0gbWFrZUtleShvbGRQYXRoLCBuZXdQYXRoKTtcbiAgaGFuZGxlZFJlbmFtZXMuYWRkKGtleSk7XG4gIG5ld1BhdGggPSBhd2FpdCByZW5hbWVTYWZlKGFwcCwgb2xkUGF0aCwgbmV3UGF0aCk7XG4gIHJldHVybiBuZXdQYXRoO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQSwyQkFBdUI7QUFPdkIsc0JBSU87QUFJUCxtQkFBMkI7QUFDM0Isc0JBQTBCO0FBQzFCLG9CQUF1QjtBQUN2QixrQkFPTztBQUNQLGlCQUF5QztBQUN6Qyw0QkFBd0M7QUFDeEMsNEJBQXNCO0FBQ3RCLHdCQVFPO0FBQ1Asa0JBS087QUFDUCwyQkFNTztBQUNQLG1CQU1PO0FBOURQLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUE0REEsTUFBTSwwQkFBMEIsb0JBQUksSUFBNEI7QUFDaEUsTUFBTSxpQkFBaUIsb0JBQUksSUFBWTtBQWdEaEMsU0FBUyw2QkFBNkIsUUFBZ0IsaUJBQW1FO0FBQzlILFFBQU0sMEJBQTBCLDJCQUEyQixPQUFPLEdBQUc7QUFDckUsUUFBTSxXQUFXLE9BQU8sU0FBUztBQUVqQywwQkFBd0IsSUFBSSxVQUFVLGVBQWU7QUFDckQsd0JBQXNCLE9BQU8sR0FBRztBQUVoQyxTQUFPLFNBQVMsTUFBTTtBQUNwQiw0QkFBd0IsT0FBTyxRQUFRO0FBQ3ZDLDBCQUFzQixPQUFPLEdBQUc7QUFBQSxFQUNsQyxDQUFDO0FBRUQsUUFBTSxNQUFNLE9BQU87QUFDbkIsU0FBTztBQUFBLElBQ0wsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLFNBQVM7QUFDL0IsVUFBSSxDQUFDLG9CQUFvQixLQUFLLFFBQVEsR0FBRztBQUN2QztBQUFBLE1BQ0Y7QUFDQSxZQUFNLE9BQU8sS0FBSztBQUNsQix1Q0FBTSxLQUFLLE1BQU0sYUFBYSxLQUFLLElBQUksQ0FBQztBQUFBLElBQzFDLENBQUM7QUFBQSxFQUNIO0FBRUEsU0FBTztBQUFBLElBQ0wsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sWUFBWTtBQUN4QyxVQUFJLENBQUMsb0JBQW9CLEtBQUssUUFBUSxHQUFHO0FBQ3ZDO0FBQUEsTUFDRjtBQUNBLFlBQU0sVUFBVSxLQUFLO0FBQ3JCLG1CQUFhLEtBQUssU0FBUyxPQUFPO0FBQUEsSUFDcEMsQ0FBQztBQUFBLEVBQ0g7QUFFQSxTQUFPO0FBQUEsSUFDTCxJQUFJLGNBQWMsR0FBRyxXQUFXLENBQUMsTUFBTSxjQUFjO0FBQ25ELDRCQUFzQixLQUFLLE1BQU0sU0FBUztBQUFBLElBQzVDLENBQUM7QUFBQSxFQUNIO0FBQ0Y7QUFFQSxTQUFTLG9CQUFvQixLQUFVLFVBQTJCO0FBQ2hFLFFBQU0sK0JBQStCLDJCQUEyQixHQUFHO0FBQ25FLFFBQU0sZUFBZSxNQUFNLEtBQUssNkJBQTZCLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDdEUsTUFBSSxpQkFBaUIsVUFBVTtBQUM3QixXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU87QUFDVDtBQUVBLFNBQVMsMkJBQTJCLEtBQW1FO0FBQ3JHLGFBQU8scUNBQXlCLEtBQUssMkJBQTJCLG9CQUFJLElBQXdELENBQUMsRUFBRTtBQUNqSTtBQUVBLFNBQVMsc0JBQXNCLEtBQWdCO0FBQzdDLFFBQU0sMEJBQTBCLDJCQUEyQixHQUFHO0FBQzlELFVBQVEsTUFBTSxtREFBbUQsTUFBTSxLQUFLLHdCQUF3QixLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFO0FBQzFIO0FBRUEsU0FBUyxhQUFhLEtBQVUsU0FBaUIsU0FBdUI7QUFDdEUsUUFBTSxNQUFNLFFBQVEsU0FBUyxPQUFPO0FBQ3BDLFVBQVEsTUFBTSxpQkFBaUIsR0FBRyxFQUFFO0FBQ3BDLE1BQUksZUFBZSxJQUFJLEdBQUcsR0FBRztBQUMzQixtQkFBZSxPQUFPLEdBQUc7QUFDekI7QUFBQSxFQUNGO0FBRUEsUUFBTSxnQkFBWSxnREFBMEIsS0FBSyxPQUFPO0FBQ3hELG1DQUFNLEtBQUssTUFBTSxrQkFBa0IsS0FBSyxTQUFTLFNBQVMsU0FBUyxDQUFDO0FBQ3RFO0FBRUEsZUFBZSxrQkFBa0IsS0FBVSxTQUFpQixTQUFpQixXQUFzRDtBQUNqSSxNQUFJLElBQUksTUFBTSxRQUFRLGVBQWUsUUFBUSxZQUFZLE1BQU0sUUFBUSxZQUFZLEdBQUc7QUFDcEYsVUFBTSxlQUFXLHNCQUFLLHFCQUFRLE9BQU8sR0FBRyxpQkFBYSxzQkFBUyxPQUFPLENBQUM7QUFDdEUsVUFBTSxjQUFjLEtBQUssU0FBUyxRQUFRO0FBQzFDLFVBQU0sa0JBQWtCLEtBQUssU0FBUyxVQUFVLFNBQVM7QUFDekQsVUFBTSxJQUFJLE1BQU0sV0FBTywyQkFBUSxLQUFLLFFBQVEsR0FBRyxPQUFPO0FBQ3REO0FBQUEsRUFDRjtBQUVBLFFBQU0sNEJBQXdCLDZCQUFPLElBQUksYUFBYTtBQUFBLElBQ3BELGdCQUFnQixNQUFNO0FBQUEsRUFDeEIsQ0FBQztBQUNELE1BQUk7QUFDRixVQUFNLFlBQVksb0JBQUksSUFBb0I7QUFDMUMsVUFBTSxjQUFjLEtBQUssU0FBUyxTQUFTLFNBQVM7QUFFcEQsVUFBTSxlQUFlLG9CQUFJLElBQWlDO0FBQzFELHFCQUFpQixVQUFVLE1BQU0sV0FBVyxjQUFjLE9BQU87QUFFakUsZUFBVyxxQkFBcUIsVUFBVSxLQUFLLEdBQUc7QUFDaEQsVUFBSSxzQkFBc0IsU0FBUztBQUNqQztBQUFBLE1BQ0Y7QUFDQSxZQUFNLHNCQUFzQixVQUFNLHNDQUFnQixLQUFLLENBQUMsaUJBQWlCLENBQUM7QUFDMUUsdUJBQWlCLHFCQUFxQixXQUFXLGNBQWMsaUJBQWlCO0FBQUEsSUFDbEY7QUFFQSxVQUFNLGdCQUFnQixvQkFBSSxJQUFZO0FBRXRDLGVBQVcsQ0FBQyxnQkFBZ0IsY0FBYyxLQUFLLFVBQVUsUUFBUSxHQUFHO0FBQ2xFLFVBQUksbUJBQW1CLFNBQVM7QUFDOUI7QUFBQSxNQUNGO0FBQ0EsWUFBTSxzQkFBc0IsTUFBTSxjQUFjLEtBQUssZ0JBQWdCLGNBQWM7QUFDbkYsZ0JBQVUsSUFBSSxnQkFBZ0IsbUJBQW1CO0FBQ2pELG9CQUFjLFFBQUkscUJBQVEsY0FBYyxDQUFDO0FBQUEsSUFDM0M7QUFFQSxVQUFNLFdBQVcsWUFBWSxHQUFHO0FBQ2hDLFFBQUksU0FBUywwQkFBMEI7QUFDckMsaUJBQVcsZ0JBQWdCLGVBQWU7QUFDeEMsa0JBQU0seUNBQTJCLEtBQUssWUFBWTtBQUFBLE1BQ3BEO0FBQUEsSUFDRjtBQUVBLGVBQVcsQ0FBQyxpQkFBaUIsaUJBQWlCLEtBQUssYUFBYSxRQUFRLEdBQUc7QUFDekUsZ0JBQU0sdUJBQVUsS0FBSyxpQkFBaUIsQ0FBQyxTQUFTO0FBQzlDLGNBQU0saUJBQWlCLGtCQUFrQixRQUFJLHNCQUFPLElBQUksQ0FBQztBQUN6RCxZQUFJLENBQUMsZ0JBQWdCO0FBQ25CO0FBQUEsUUFDRjtBQUVBLGNBQU0saUJBQWlCLFVBQVUsSUFBSSxjQUFjO0FBQ25ELFlBQUksQ0FBQyxnQkFBZ0I7QUFDbkI7QUFBQSxRQUNGO0FBRUEsbUJBQU8sd0JBQVc7QUFBQSxVQUNoQjtBQUFBLFVBQ0E7QUFBQSxVQUNBLFlBQVk7QUFBQSxVQUNaLGVBQWU7QUFBQSxVQUNmLGtCQUFrQjtBQUFBLFVBQ2xCO0FBQUEsVUFDQSwyQkFBMkIsU0FBUztBQUFBLFFBQ3RDLENBQUM7QUFBQSxNQUNILENBQUM7QUFBQSxJQUNIO0FBRUEsWUFBSSxnQ0FBYSxPQUFPLEdBQUc7QUFDekIsZ0JBQU0sc0JBQVEsS0FBSyxTQUFTLENBQUMsWUFBWTtBQUN2QyxZQUFJO0FBQ0osWUFBSTtBQUNGLHVCQUFhLEtBQUssTUFBTSxPQUFPO0FBQUEsUUFDakMsU0FBUyxHQUFHO0FBQ1YsdUNBQVcsSUFBSSxNQUFNLG1DQUFtQyxPQUFPLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQ2hGLGlCQUFPO0FBQUEsUUFDVDtBQUNBLG1CQUFXLFFBQVEsV0FBVyxPQUFPO0FBQ25DLGNBQUksS0FBSyxTQUFTLFFBQVE7QUFDeEI7QUFBQSxVQUNGO0FBQ0EsZ0JBQU1BLFdBQVUsVUFBVSxJQUFJLEtBQUssSUFBSTtBQUN2QyxjQUFJLENBQUNBLFVBQVM7QUFDWjtBQUFBLFVBQ0Y7QUFDQSxlQUFLLE9BQU9BO0FBQUEsUUFDZDtBQUNBLG1CQUFPLHNCQUFPLFVBQVU7QUFBQSxNQUMxQixDQUFDO0FBQUEsSUFDSCxlQUFXLGtDQUFlLE9BQU8sR0FBRztBQUNsQyxnQkFBTSwrQkFBa0I7QUFBQSxRQUN0QjtBQUFBLFFBQ0EsWUFBWTtBQUFBLFFBQ1osZUFBZTtBQUFBLFFBQ2Y7QUFBQSxRQUNBLDJCQUEyQixTQUFTO0FBQUEsTUFDdEMsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGLFVBQUU7QUFDQSwwQkFBc0I7QUFDdEIsVUFBTSxhQUFhLE1BQU0sS0FBSyxjQUFjO0FBQzVDLHFDQUFNLEtBQUssTUFBTTtBQUNmLGlCQUFXLE9BQU8sWUFBWTtBQUM1Qix1QkFBZSxPQUFPLEdBQUc7QUFBQSxNQUMzQjtBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFDRjtBQUVBLFNBQVMsaUJBQWlCLHFCQUErQyxXQUFnQyxjQUFnRCxNQUFvQjtBQUMzSyxhQUFXLENBQUMsY0FBYyxLQUFLLEtBQUssb0JBQW9CLFFBQVEsR0FBRztBQUNqRSxVQUFNLGtCQUFrQixVQUFVLElBQUksWUFBWSxLQUFLO0FBQ3ZELFVBQU0sb0JBQW9CLGFBQWEsSUFBSSxlQUFlLEtBQUssb0JBQUksSUFBb0I7QUFDdkYsaUJBQWEsSUFBSSxpQkFBaUIsaUJBQWlCO0FBQ25ELGVBQVcsUUFBUSxPQUFPO0FBQ3hCLHdCQUFrQixRQUFJLHNCQUFPLElBQUksR0FBRyxJQUFJO0FBQUEsSUFDMUM7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxlQUFlLGFBQWEsS0FBVSxNQUE2QjtBQUNqRSxVQUFRLE1BQU0saUJBQWlCLElBQUksRUFBRTtBQUNyQyxNQUFJLEtBQUMsMEJBQU8sSUFBSSxHQUFHO0FBQ2pCO0FBQUEsRUFDRjtBQUVBLFFBQU0sV0FBVyxZQUFZLEdBQUc7QUFDaEMsTUFBSSxDQUFDLFNBQVMsK0JBQStCO0FBQzNDO0FBQUEsRUFDRjtBQUVBLFFBQU0sUUFBUSx3QkFBd0IsSUFBSSxJQUFJO0FBQzlDLDBCQUF3QixPQUFPLElBQUk7QUFDbkMsTUFBSSxPQUFPO0FBQ1QsVUFBTSxZQUFRLGtDQUFZLEtBQUs7QUFFL0IsZUFBVyxRQUFRLE9BQU87QUFDeEIsWUFBTSxxQkFBaUIsNkJBQWdCLEtBQUssTUFBTSxJQUFJO0FBQ3RELFVBQUksQ0FBQyxnQkFBZ0I7QUFDbkI7QUFBQSxNQUNGO0FBRUEsY0FBSSwwQkFBTyxjQUFjLEdBQUc7QUFDMUI7QUFBQSxNQUNGO0FBRUEsZ0JBQU0seUJBQVcsS0FBSyxnQkFBZ0IsTUFBTSxTQUFTLHdCQUF3QjtBQUFBLElBQy9FO0FBQUEsRUFDRjtBQUVBLFFBQU0sdUJBQXVCLFVBQU0sK0NBQXdCLEtBQUssSUFBSTtBQUNwRSxRQUFNLHVCQUFtQixtQ0FBZ0IsS0FBSyxvQkFBb0I7QUFFbEUsTUFBSSxDQUFDLGtCQUFrQjtBQUNyQjtBQUFBLEVBQ0Y7QUFFQSxZQUFNLHlCQUFXLEtBQUssa0JBQWtCLE1BQU0sT0FBTyxTQUFTLHdCQUF3QjtBQUN4RjtBQUVBLGVBQWUsY0FBYyxLQUFVLFNBQWlCLFNBQWlCLFdBQStDO0FBQ3RILFlBQVUsSUFBSSxTQUFTLE9BQU87QUFFOUIsTUFBSSxLQUFDLDBCQUFPLE9BQU8sR0FBRztBQUNwQjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFdBQVcsWUFBWSxHQUFHO0FBRWhDLFFBQU0sMEJBQTBCLFVBQU0sK0NBQXdCLEtBQUssT0FBTztBQUMxRSxRQUFNLDBCQUEwQixTQUFTLCtCQUNyQyxVQUFNLCtDQUF3QixLQUFLLE9BQU8sSUFDMUM7QUFDSixRQUFNLCtCQUErQixVQUFNLCtDQUF3QixTQUFLLHNCQUFLLHFCQUFRLE9BQU8sR0FBRyxlQUFlLENBQUM7QUFFL0csUUFBTSwwQkFBc0IsbUNBQWdCLEtBQUssdUJBQXVCO0FBRXhFLE1BQUksQ0FBQyxxQkFBcUI7QUFDeEI7QUFBQSxFQUNGO0FBRUEsTUFBSSw0QkFBNEIsMkJBQTJCLENBQUMsU0FBUyw2QkFBNkI7QUFDaEc7QUFBQSxFQUNGO0FBRUEsUUFBTSxxQkFBOEIsQ0FBQztBQUVyQyxNQUFJLDRCQUE0Qiw4QkFBOEI7QUFDNUQsVUFBTSxXQUFXLFVBQU0sbUNBQWEsS0FBSyxPQUFPO0FBQ2hELFFBQUksQ0FBQyxVQUFVO0FBQ2I7QUFBQSxJQUNGO0FBQ0EsZUFBVyxlQUFXLGtDQUFZLFFBQVEsR0FBRztBQUMzQyxZQUFNLHdCQUFvQiw2QkFBZ0IsS0FBSyxTQUFTLE9BQU87QUFDL0QsVUFBSSxDQUFDLG1CQUFtQjtBQUN0QjtBQUFBLE1BQ0Y7QUFFQSxVQUFJLGtCQUFrQixLQUFLLFdBQVcsdUJBQXVCLEdBQUc7QUFDOUQsY0FBTSx5QkFBeUIsVUFBTSw4Q0FBd0IsS0FBSyxpQkFBaUI7QUFDbkYsWUFBSSx1QkFBdUIsS0FBSyxFQUFFLFdBQVcsR0FBRztBQUM5Qyw2QkFBbUIsS0FBSyxpQkFBaUI7QUFBQSxRQUMzQztBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRixPQUFPO0FBQ0wsMEJBQU0sZ0JBQWdCLHFCQUFxQixDQUFDLHNCQUFzQjtBQUNoRSxjQUFJLDBCQUFPLGlCQUFpQixHQUFHO0FBQzdCLDJCQUFtQixLQUFLLGlCQUFpQjtBQUFBLE1BQzNDO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUVBLFFBQU0sa0JBQWMsc0JBQVMsYUFBUyxxQkFBUSxPQUFPLENBQUM7QUFDdEQsUUFBTSxrQkFBYyxzQkFBUyxhQUFTLHFCQUFRLE9BQU8sQ0FBQztBQUV0RCxhQUFXLHFCQUFxQixvQkFBb0I7QUFDbEQsWUFBSSwwQkFBTyxpQkFBaUIsR0FBRztBQUM3QjtBQUFBLElBQ0Y7QUFDQSxVQUFNLG1CQUFlLHNCQUFTLHlCQUF5QixrQkFBa0IsSUFBSTtBQUM3RSxVQUFNLGFBQVMsa0JBQUssNkJBQXlCLHFCQUFRLFlBQVksQ0FBQztBQUNsRSxVQUFNLG1CQUFtQixTQUFTLDhCQUM5QixrQkFBa0IsU0FBUyxXQUFXLGFBQWEsV0FBVyxJQUM5RCxrQkFBa0I7QUFDdEIsUUFBSSxtQkFBZSxrQkFBSyxZQUFRLDBCQUFhLGtCQUFrQixrQkFBa0IsU0FBUyxDQUFDO0FBRTNGLFFBQUksa0JBQWtCLFNBQVMsY0FBYztBQUMzQztBQUFBLElBQ0Y7QUFFQSxRQUFJLFNBQVMsb0NBQW9DO0FBQy9DLFlBQU0sbUJBQWUsaUNBQWMsS0FBSyxZQUFZO0FBQ3BELFVBQUksY0FBYztBQUNoQixjQUFNLElBQUksWUFBWSxVQUFVLFlBQVk7QUFBQSxNQUM5QztBQUFBLElBQ0YsT0FBTztBQUNMLHFCQUFlLElBQUksTUFBTSxxQkFBaUIsa0JBQUssUUFBUSxnQkFBZ0IsR0FBRyxrQkFBa0IsU0FBUztBQUFBLElBQ3ZHO0FBQ0EsY0FBVSxJQUFJLGtCQUFrQixNQUFNLFlBQVk7QUFBQSxFQUNwRDtBQUNGO0FBRUEsU0FBUyxZQUFZLEtBQWdEO0FBQ25FLFFBQU0sMEJBQTBCLDJCQUEyQixHQUFHO0FBQzlELFFBQU0sbUJBQW1CLE1BQU0sS0FBSyx3QkFBd0IsT0FBTyxDQUFDLEVBQUUsUUFBUTtBQUU5RSxRQUFNLFdBQWlELENBQUM7QUFDeEQsYUFBVyxtQkFBbUIsa0JBQWtCO0FBQzlDLFVBQU0sY0FBYyxnQkFBZ0I7QUFDcEMsZUFBVyxDQUFDLEtBQUssS0FBSyxLQUFLLE9BQU8sUUFBUSxXQUFXLEdBQXFEO0FBQ3hHLGVBQVMsR0FBRyxNQUFNO0FBQUEsSUFDcEI7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUO0FBRUEsU0FBUyxzQkFBc0IsS0FBVSxNQUFxQixXQUF3QztBQUNwRyxRQUFNLFdBQVcsWUFBWSxHQUFHO0FBQ2hDLE1BQUksQ0FBQyxTQUFTLCtCQUErQjtBQUMzQztBQUFBLEVBQ0Y7QUFDQSxVQUFJLGtDQUFlLElBQUksS0FBSyxXQUFXO0FBQ3JDLDRCQUF3QixJQUFJLEtBQUssTUFBTSxTQUFTO0FBQUEsRUFDbEQ7QUFDRjtBQUVBLFNBQVMsUUFBUSxTQUFpQixTQUF5QjtBQUN6RCxTQUFPLEdBQUcsT0FBTyxPQUFPLE9BQU87QUFDakM7QUFFQSxlQUFlLGNBQWMsS0FBVSxTQUFpQixTQUFrQztBQUN4RixnQkFBVSxnQ0FBa0IsS0FBSyxTQUFTLE9BQU87QUFDakQsTUFBSSxZQUFZLFNBQVM7QUFDdkIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxRQUFNLE1BQU0sUUFBUSxTQUFTLE9BQU87QUFDcEMsaUJBQWUsSUFBSSxHQUFHO0FBQ3RCLFlBQVUsVUFBTSx5QkFBVyxLQUFLLFNBQVMsT0FBTztBQUNoRCxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbIm5ld1BhdGgiXQp9Cg==
|
@@ -53,6 +53,7 @@ __export(obsidian_exports, {
|
|
53
53
|
Modal: () => Modal,
|
54
54
|
ObsidianSettings: () => ObsidianSettings,
|
55
55
|
Plugin: () => Plugin,
|
56
|
+
Reference: () => Reference,
|
56
57
|
RenameDeleteHandler: () => RenameDeleteHandler,
|
57
58
|
ResourceUrl: () => ResourceUrl,
|
58
59
|
Vault: () => Vault
|
@@ -76,6 +77,7 @@ var MetadataCache = __toESM(require('./MetadataCache.cjs'), 1);
|
|
76
77
|
var Modal = __toESM(require('./Modal/index.cjs'), 1);
|
77
78
|
var ObsidianSettings = __toESM(require('./ObsidianSettings.cjs'), 1);
|
78
79
|
var Plugin = __toESM(require('./Plugin/index.cjs'), 1);
|
80
|
+
var Reference = __toESM(require('./Reference.cjs'), 1);
|
79
81
|
var RenameDeleteHandler = __toESM(require('./RenameDeleteHandler.cjs'), 1);
|
80
82
|
var ResourceUrl = __toESM(require('./ResourceUrl.cjs'), 1);
|
81
83
|
var Vault = __toESM(require('./Vault.cjs'), 1);
|
@@ -99,8 +101,9 @@ var Vault = __toESM(require('./Vault.cjs'), 1);
|
|
99
101
|
Modal,
|
100
102
|
ObsidianSettings,
|
101
103
|
Plugin,
|
104
|
+
Reference,
|
102
105
|
RenameDeleteHandler,
|
103
106
|
ResourceUrl,
|
104
107
|
Vault
|
105
108
|
});
|
106
|
-
//# sourceMappingURL=data:application/json;base64,
|
109
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgQXBwIGZyb20gJy4vQXBwLnRzJztcbmV4cG9ydCAqIGFzIEF0dGFjaG1lbnRQYXRoIGZyb20gJy4vQXR0YWNobWVudFBhdGgudHMnO1xuZXhwb3J0ICogYXMgQmFja2xpbmsgZnJvbSAnLi9CYWNrbGluay50cyc7XG5leHBvcnQgKiBhcyBDYWxsb3V0IGZyb20gJy4vQ2FsbG91dC50cyc7XG5leHBvcnQgKiBhcyBDaGFpbmVkUHJvbWlzZSBmcm9tICcuL0NoYWluZWRQcm9taXNlLnRzJztcbmV4cG9ydCAqIGFzIERhdGF2aWV3IGZyb20gJy4vRGF0YXZpZXcudHMnO1xuZXhwb3J0ICogYXMgRGF0YXZpZXdMaW5rIGZyb20gJy4vRGF0YXZpZXdMaW5rLnRzJztcbmV4cG9ydCAqIGFzIEZpbGVDaGFuZ2UgZnJvbSAnLi9GaWxlQ2hhbmdlLnRzJztcbmV4cG9ydCAqIGFzIEZpbGVNYW5hZ2VyIGZyb20gJy4vRmlsZU1hbmFnZXIudHMnO1xuZXhwb3J0ICogYXMgRmlsZVN5c3RlbSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuZXhwb3J0ICogYXMgRnJvbnRNYXR0ZXIgZnJvbSAnLi9Gcm9udE1hdHRlci50cyc7XG5leHBvcnQgKiBhcyBMaW5rIGZyb20gJy4vTGluay50cyc7XG5leHBvcnQgKiBhcyBMb2dnZXIgZnJvbSAnLi9Mb2dnZXIudHMnO1xuZXhwb3J0ICogYXMgTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3IgZnJvbSAnLi9NYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3Nvci50cyc7XG5leHBvcnQgKiBhcyBNZXRhZGF0YUNhY2hlIGZyb20gJy4vTWV0YWRhdGFDYWNoZS50cyc7XG5leHBvcnQgKiBhcyBNb2RhbCBmcm9tICcuL01vZGFsL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzIE9ic2lkaWFuU2V0dGluZ3MgZnJvbSAnLi9PYnNpZGlhblNldHRpbmdzLnRzJztcbmV4cG9ydCAqIGFzIFBsdWdpbiBmcm9tICcuL1BsdWdpbi9pbmRleC50cyc7XG5leHBvcnQgKiBhcyBSZWZlcmVuY2UgZnJvbSAnLi9SZWZlcmVuY2UudHMnO1xuZXhwb3J0ICogYXMgUmVuYW1lRGVsZXRlSGFuZGxlciBmcm9tICcuL1JlbmFtZURlbGV0ZUhhbmRsZXIudHMnO1xuZXhwb3J0ICogYXMgUmVzb3VyY2VVcmwgZnJvbSAnLi9SZXNvdXJjZVVybC50cyc7XG5leHBvcnQgKiBhcyBWYXVsdCBmcm9tICcuL1ZhdWx0LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBLFVBQXFCO0FBQ3JCLHFCQUFnQztBQUNoQyxlQUEwQjtBQUMxQixjQUF5QjtBQUN6QixxQkFBZ0M7QUFDaEMsZUFBMEI7QUFDMUIsbUJBQThCO0FBQzlCLGlCQUE0QjtBQUM1QixrQkFBNkI7QUFDN0IsaUJBQTRCO0FBQzVCLGtCQUE2QjtBQUM3QixXQUFzQjtBQUN0QixhQUF3QjtBQUN4QixpQ0FBNEM7QUFDNUMsb0JBQStCO0FBQy9CLFlBQXVCO0FBQ3ZCLHVCQUFrQztBQUNsQyxhQUF3QjtBQUN4QixnQkFBMkI7QUFDM0IsMEJBQXFDO0FBQ3JDLGtCQUE2QjtBQUM3QixZQUF1QjsiLAogICJuYW1lcyI6IFtdCn0K
|
@@ -16,6 +16,7 @@ export * as MetadataCache from './MetadataCache.ts';
|
|
16
16
|
export * as Modal from './Modal/index.ts';
|
17
17
|
export * as ObsidianSettings from './ObsidianSettings.ts';
|
18
18
|
export * as Plugin from './Plugin/index.ts';
|
19
|
+
export * as Reference from './Reference.ts';
|
19
20
|
export * as RenameDeleteHandler from './RenameDeleteHandler.ts';
|
20
21
|
export * as ResourceUrl from './ResourceUrl.ts';
|
21
22
|
export * as Vault from './Vault.ts';
|
package/package.json
CHANGED