@mnaoumov/obsidian-lib 5.2.0 → 6.0.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.
Files changed (141) hide show
  1. package/dist/lib/cjs/@types/obsidian-integration-testing.d.cts +1 -1
  2. package/dist/lib/cjs/__merged.cjs +8 -24
  3. package/dist/lib/cjs/__merged.d.cts +4 -4
  4. package/dist/lib/cjs/async-with-notice.cjs +7 -7
  5. package/dist/lib/cjs/backlink-index.cjs +3 -3
  6. package/dist/lib/cjs/callout.cjs +2 -2
  7. package/dist/lib/cjs/case-insensitive-file-index.cjs +5 -5
  8. package/dist/lib/cjs/community-plugins.cjs +3 -3
  9. package/dist/lib/cjs/components/async-error-handler-component.cjs +2 -2
  10. package/dist/lib/cjs/components/monkey-around-component.cjs +3 -3
  11. package/dist/lib/cjs/components/plugin-context-component.cjs +1 -3
  12. package/dist/lib/cjs/components/plugin-context-component.d.cts +1 -2
  13. package/dist/lib/cjs/components/plugin-gate-component.cjs +15 -15
  14. package/dist/lib/cjs/components/plugin-notice-component.cjs +75 -7
  15. package/dist/lib/cjs/components/plugin-notice-component.d.cts +24 -1
  16. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +7 -5
  17. package/dist/lib/cjs/components/release-notes-component.cjs +2 -2
  18. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +10 -10
  19. package/dist/lib/cjs/css-class.cjs +2 -2
  20. package/dist/lib/cjs/css-class.d.cts +8 -11
  21. package/dist/lib/cjs/dataview.cjs +4 -4
  22. package/dist/lib/cjs/debug.cjs +2 -22
  23. package/dist/lib/cjs/debug.d.cts +0 -5
  24. package/dist/lib/cjs/frontmatter.cjs +3 -3
  25. package/dist/lib/cjs/frontmatter.d.cts +1 -1
  26. package/dist/lib/cjs/generated-during-build.cjs +2 -2
  27. package/dist/lib/cjs/html-element.cjs +1 -1
  28. package/dist/lib/cjs/html-element.d.cts +1 -1
  29. package/dist/lib/cjs/i18n/i18n.cjs +1 -1
  30. package/dist/lib/cjs/i18n/i18n.d.cts +1 -1
  31. package/dist/lib/cjs/i18n/locales/en.cjs +2 -2
  32. package/dist/lib/cjs/i18n/locales/en.d.cts +1 -1
  33. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +1 -1
  34. package/dist/lib/cjs/index.cjs +4 -4
  35. package/dist/lib/cjs/index.d.cts +1 -1
  36. package/dist/lib/cjs/library-styles.cjs +7 -14
  37. package/dist/lib/cjs/library-styles.d.cts +9 -23
  38. package/dist/lib/cjs/library.cjs +1 -4
  39. package/dist/lib/cjs/library.d.cts +3 -11
  40. package/dist/lib/cjs/link.cjs +3 -3
  41. package/dist/lib/cjs/markdown.cjs +3 -3
  42. package/dist/lib/cjs/metadata-cache.cjs +4 -4
  43. package/dist/lib/cjs/modals/alert.cjs +2 -2
  44. package/dist/lib/cjs/modals/confirm.cjs +3 -3
  45. package/dist/lib/cjs/modals/prompt.cjs +3 -3
  46. package/dist/lib/cjs/obsidian-lib-state.cjs +148 -0
  47. package/dist/lib/cjs/obsidian-lib-state.d.cts +30 -0
  48. package/dist/lib/cjs/path-settings.cjs +6 -6
  49. package/dist/lib/cjs/plugin/index.cjs +1 -4
  50. package/dist/lib/cjs/plugin/index.d.cts +0 -1
  51. package/dist/lib/cjs/plugin/plugin-api.cjs +3 -3
  52. package/dist/lib/cjs/plugin/plugin-api.d.cts +5 -41
  53. package/dist/lib/cjs/plugin/plugin-context.cjs +1 -6
  54. package/dist/lib/cjs/plugin/plugin-install-state.cjs +5 -5
  55. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +1 -40
  56. package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +8 -62
  57. package/dist/lib/cjs/plugin/plugin.cjs +2 -2
  58. package/dist/lib/cjs/plugin/plugin.d.cts +1 -1
  59. package/dist/lib/cjs/popovers/popover.cjs +3 -3
  60. package/dist/lib/cjs/queue.cjs +4 -4
  61. package/dist/lib/cjs/resource-lock.cjs +9 -9
  62. package/dist/lib/cjs/vault-delete.cjs +2 -2
  63. package/dist/lib/cjs/vault-transaction.cjs +17 -2
  64. package/dist/lib/cjs/vault-transaction.d.cts +2 -1
  65. package/dist/lib/cjs/vault.cjs +2 -2
  66. package/dist/lib/esm/@types/obsidian-integration-testing.d.mts +1 -1
  67. package/dist/lib/esm/__merged.d.mts +4 -4
  68. package/dist/lib/esm/__merged.mjs +8 -24
  69. package/dist/lib/esm/async-with-notice.mjs +7 -7
  70. package/dist/lib/esm/backlink-index.mjs +3 -3
  71. package/dist/lib/esm/callout.mjs +2 -2
  72. package/dist/lib/esm/case-insensitive-file-index.mjs +5 -5
  73. package/dist/lib/esm/community-plugins.mjs +3 -3
  74. package/dist/lib/esm/components/async-error-handler-component.mjs +2 -2
  75. package/dist/lib/esm/components/monkey-around-component.mjs +3 -3
  76. package/dist/lib/esm/components/plugin-context-component.d.mts +1 -2
  77. package/dist/lib/esm/components/plugin-context-component.mjs +1 -3
  78. package/dist/lib/esm/components/plugin-gate-component.mjs +15 -15
  79. package/dist/lib/esm/components/plugin-notice-component.d.mts +24 -1
  80. package/dist/lib/esm/components/plugin-notice-component.mjs +75 -7
  81. package/dist/lib/esm/components/plugin-suggestion-component.mjs +7 -5
  82. package/dist/lib/esm/components/release-notes-component.mjs +2 -2
  83. package/dist/lib/esm/components/rename-delete-handler-component.mjs +10 -10
  84. package/dist/lib/esm/css-class.d.mts +8 -11
  85. package/dist/lib/esm/css-class.mjs +2 -2
  86. package/dist/lib/esm/dataview.mjs +4 -4
  87. package/dist/lib/esm/debug.d.mts +0 -5
  88. package/dist/lib/esm/debug.mjs +3 -26
  89. package/dist/lib/esm/frontmatter.d.mts +1 -1
  90. package/dist/lib/esm/frontmatter.mjs +3 -3
  91. package/dist/lib/esm/generated-during-build.mjs +2 -2
  92. package/dist/lib/esm/html-element.d.mts +1 -1
  93. package/dist/lib/esm/html-element.mjs +1 -1
  94. package/dist/lib/esm/i18n/i18n.d.mts +1 -1
  95. package/dist/lib/esm/i18n/i18n.mjs +1 -1
  96. package/dist/lib/esm/i18n/locales/en.d.mts +1 -1
  97. package/dist/lib/esm/i18n/locales/en.mjs +2 -2
  98. package/dist/lib/esm/i18n/locales/translations-map.d.mts +1 -1
  99. package/dist/lib/esm/index.d.mts +1 -1
  100. package/dist/lib/esm/index.mjs +3 -3
  101. package/dist/lib/esm/library-styles.d.mts +9 -23
  102. package/dist/lib/esm/library-styles.mjs +7 -12
  103. package/dist/lib/esm/library.d.mts +3 -11
  104. package/dist/lib/esm/library.mjs +1 -3
  105. package/dist/lib/esm/link.mjs +3 -3
  106. package/dist/lib/esm/markdown.mjs +3 -3
  107. package/dist/lib/esm/metadata-cache.mjs +4 -4
  108. package/dist/lib/esm/modals/alert.mjs +2 -2
  109. package/dist/lib/esm/modals/confirm.mjs +3 -3
  110. package/dist/lib/esm/modals/prompt.mjs +3 -3
  111. package/dist/lib/esm/obsidian-lib-state.d.mts +30 -0
  112. package/dist/lib/esm/obsidian-lib-state.mjs +59 -0
  113. package/dist/lib/esm/path-settings.mjs +6 -6
  114. package/dist/lib/esm/plugin/index.d.mts +0 -1
  115. package/dist/lib/esm/plugin/index.mjs +1 -3
  116. package/dist/lib/esm/plugin/plugin-api.d.mts +5 -41
  117. package/dist/lib/esm/plugin/plugin-api.mjs +3 -3
  118. package/dist/lib/esm/plugin/plugin-context.mjs +1 -7
  119. package/dist/lib/esm/plugin/plugin-install-state.mjs +5 -5
  120. package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +8 -62
  121. package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +1 -37
  122. package/dist/lib/esm/plugin/plugin.d.mts +1 -1
  123. package/dist/lib/esm/plugin/plugin.mjs +2 -2
  124. package/dist/lib/esm/popovers/popover.mjs +3 -3
  125. package/dist/lib/esm/queue.mjs +4 -4
  126. package/dist/lib/esm/resource-lock.mjs +9 -9
  127. package/dist/lib/esm/vault-delete.mjs +2 -2
  128. package/dist/lib/esm/vault-transaction.d.mts +2 -1
  129. package/dist/lib/esm/vault-transaction.mjs +17 -2
  130. package/dist/lib/esm/vault.mjs +2 -2
  131. package/dist/styles.css +174 -168
  132. package/package.json +1 -1
  133. package/dist/lib/cjs/obsidian-dev-utils-state.cjs +0 -177
  134. package/dist/lib/cjs/obsidian-dev-utils-state.d.cts +0 -50
  135. package/dist/lib/cjs/plugin/plugin-api-schema.cjs +0 -127
  136. package/dist/lib/cjs/plugin/plugin-api-schema.d.cts +0 -37
  137. package/dist/lib/esm/obsidian-dev-utils-state.d.mts +0 -50
  138. package/dist/lib/esm/obsidian-dev-utils-state.mjs +0 -86
  139. package/dist/lib/esm/plugin/plugin-api-schema.d.mts +0 -37
  140. package/dist/lib/esm/plugin/plugin-api-schema.mjs +0 -41
  141. package/plugin/plugin-api-schema/package.json +0 -6
@@ -141,10 +141,10 @@ class PromptModal extends import_modal.ModalBase {
141
141
  constructor(params) {
142
142
  super(params);
143
143
  this.addCssClasses(import_css_class.CssClass.PromptModal);
144
- this.cancelButtonText = params.cancelButtonText ?? (0, import_i18n.t)(($) => $.obsidianDevUtils.buttons.cancel);
144
+ this.cancelButtonText = params.cancelButtonText ?? (0, import_i18n.t)(($) => $.obsidianLib.buttons.cancel);
145
145
  this.commandBuilder = params.commandBuilder ?? null;
146
146
  this.commandsRenderMode = params.commandsRenderMode;
147
- this.okButtonText = params.okButtonText ?? (0, import_i18n.t)(($) => $.obsidianDevUtils.buttons.ok);
147
+ this.okButtonText = params.okButtonText ?? (0, import_i18n.t)(($) => $.obsidianLib.buttons.ok);
148
148
  this.placeholder = params.placeholder ?? "";
149
149
  this.spellcheckMode = params.spellcheckMode ?? import_obsidian_settings.SpellcheckMode.FollowObsidianSetting;
150
150
  this.title = params.title ?? "";
@@ -235,4 +235,4 @@ async function prompt(params) {
235
235
  0 && (module.exports = {
236
236
  prompt
237
237
  });
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2RhbHMvcHJvbXB0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBVdGlsaXR5IGZvciBkaXNwbGF5aW5nIGEgcHJvbXB0IG1vZGFsIGluIE9ic2lkaWFuLlxuICpcbiAqIFRoaXMgbW9kdWxlIGV4cG9ydHMgYSBmdW5jdGlvbiB0byBkaXNwbGF5IGEgbW9kYWwgdGhhdCBwcm9tcHRzIHRoZSB1c2VyIGZvciBpbnB1dC4gVGhlIG1vZGFsIGluY2x1ZGVzIFwiT0tcIiBhbmQgXCJDYW5jZWxcIiBidXR0b25zLlxuICovXG5cbmltcG9ydCB0eXBlIHsgTWF5YmVSZXR1cm4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZSc7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0QXN5bmNUb1N5bmMsXG4gIGludm9rZUFzeW5jU2FmZWx5XG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Z1bmN0aW9uJztcbmltcG9ydCB7IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllcyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9vYmplY3QtdXRpbHMnO1xuaW1wb3J0IHtcbiAgQnV0dG9uQ29tcG9uZW50LFxuICBUZXh0Q29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUge1xuICBNb2RhbENvbW1hbmRCdWlsZGVyLFxuICBNb2RhbENvbW1hbmRCdWlsZGVyQnVpbGRPcHRpb25zLFxuICBNb2RhbENvbW1hbmRzUmVuZGVyTW9kZVxufSBmcm9tICcuL21vZGFsLWNvbW1hbmQtYnVpbGRlci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIE1vZGFsQmFzZUNvbnN0cnVjdG9yUGFyYW1zLFxuICBNb2RhbFBhcmFtc0Jhc2Vcbn0gZnJvbSAnLi9tb2RhbC50cyc7XG5cbmltcG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi4vY3NzLWNsYXNzLnRzJztcbmltcG9ydCB7IGFwcGx5U3BlbGxjaGVja01vZGUgfSBmcm9tICcuLi9odG1sLWVsZW1lbnQudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBTcGVsbGNoZWNrTW9kZSB9IGZyb20gJy4uL29ic2lkaWFuLXNldHRpbmdzLnRzJztcbmltcG9ydCB7XG4gIE1vZGFsQmFzZSxcbiAgc2hvd01vZGFsXG59IGZyb20gJy4vbW9kYWwudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBwcm9tcHR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb21wdFBhcmFtcyBleHRlbmRzIE1vZGFsUGFyYW1zQmFzZSB7XG4gIC8qKlxuICAgKiBBIHRleHQgZm9yIHRoZSBcIkNhbmNlbFwiIGJ1dHRvbi5cbiAgICovXG4gIHJlYWRvbmx5IGNhbmNlbEJ1dHRvblRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dHJhIGNvbnRyb2xzIOKAlCBjaGVja2JveGVzLCBkcm9wZG93bnMgYW5kIGtleWJvYXJkIHNob3J0Y3V0cyDigJQgcmVuZGVyZWQgYXMgYSBzdHJpcCBhbG9uZyB0aGUgYm90dG9tXG4gICAqIG9mIHRoZSBtb2RhbCwgc28gYSBjYWxsZXIgZ2V0cyBhIHRleHQgaW5wdXQgcGx1cyBvcHRpb25zIHdpdGggbm8gYmVzcG9rZSBtb2RhbCBvZiBpdHMgb3duLlxuICAgKlxuICAgKiBIYW5kIGl0IGEgY29uZmlndXJlZCB7QGxpbmsgTW9kYWxDb21tYW5kQnVpbGRlcn07IHRoZSBtb2RhbCBidWlsZHMgaXQuIFRoZSBzdHJpcCBpcyByZW5kZXJlZCBhZnRlclxuICAgKiB0aGUgYnV0dG9ucywgc28gaXQgc2l0cyBhbG9uZyB0aGUgYm90dG9tIGVkZ2Ugd2hlcmUgYSBgU3VnZ2VzdE1vZGFsYCdzIGluc3RydWN0aW9uIGJhciBzaXRzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZEJ1aWxkZXI/OiBNb2RhbENvbW1hbmRCdWlsZGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgd2F5IHtAbGluayBQcm9tcHRQYXJhbXMuY29tbWFuZEJ1aWxkZXJ9J3MgY29udHJvbHMgYXJlIHJlbmRlcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgTW9kYWxDb21tYW5kc1JlbmRlck1vZGUuSW5zdHJ1Y3Rpb25zYFxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZHNSZW5kZXJNb2RlPzogTW9kYWxDb21tYW5kc1JlbmRlck1vZGU7XG5cbiAgLyoqXG4gICAqIEEgZGVmYXVsdCB2YWx1ZSB0byBwcmUtZmlsbCB0aGUgaW5wdXQgZmllbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnJ2BcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRWYWx1ZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSB0ZXh0IGZvciB0aGUgXCJPS1wiIGJ1dHRvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9rQnV0dG9uVGV4dD86IHN0cmluZztcblxuICAvKipcbiAgICogQSBwbGFjZWhvbGRlciB0ZXh0IGZvciB0aGUgaW5wdXQgZmllbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnJ2BcbiAgICovXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9kZSBkZWNpZGluZyB3aGV0aGVyIHRoZSBpbnB1dCBpcyBzcGVsbC1jaGVja2VkLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCBpcyB3aGF0IHRoaXMgbW9kYWwgaGFzIGFsd2F5cyBkb25lLCBzbyBwYXNzaW5nIG5vdGhpbmcgY2hhbmdlcyBub3RoaW5nOiB0aGUgaW5wdXQgZm9sbG93c1xuICAgKiBgRWRpdG9yID4gU3BlbGxjaGVja2AsIGxpa2UgT2JzaWRpYW4ncyBvd24gbmFtZS1lbnRyeSBzdXJmYWNlcy4gUGFzcyB7QGxpbmsgU3BlbGxjaGVja01vZGUuT2ZmfSBmb3IgYVxuICAgKiBib3ggdGhhdCBpcyByZWFsbHkgYSBzZWFyY2ggZmllbGQsIG9yIHtAbGluayBTcGVsbGNoZWNrTW9kZS5BbHdheXNPbn0gdG8gc3BlbGwtY2hlY2sgaXQgd2hhdGV2ZXIgdGhlXG4gICAqIHZhdWx0IHNldHRpbmcgc2F5cy5cbiAgICpcbiAgICogQGRlZmF1bHQgYFNwZWxsY2hlY2tNb2RlLkZvbGxvd09ic2lkaWFuU2V0dGluZ2BcbiAgICovXG4gIHJlYWRvbmx5IHNwZWxsY2hlY2tNb2RlPzogU3BlbGxjaGVja01vZGU7XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgb2YgdGhlIG1vZGFsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdG8gdmFsaWRhdGUgdGhlIGlucHV0IHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgaW5wdXQgdmFsdWUgdG8gdmFsaWRhdGUuXG4gICAqIEByZXR1cm5zIGFuIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHZhbHVlIGlzIGludmFsaWQsIG9yIGBudWxsYCBpZiB0aGUgdmFsdWUgaXMgdmFsaWQuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZVZhbGlkYXRvcj86ICh2YWx1ZTogc3RyaW5nKSA9PiBQcm9taXNhYmxlPE1heWJlUmV0dXJuPHN0cmluZz4+O1xufVxuXG50eXBlIFByb21wdE1vZGFsQ29uc3RydWN0b3JQYXJhbXMgPSBNb2RhbEJhc2VDb25zdHJ1Y3RvclBhcmFtczxudWxsIHwgc3RyaW5nPiAmIFByb21wdFBhcmFtcztcblxuY2xhc3MgUHJvbXB0TW9kYWwgZXh0ZW5kcyBNb2RhbEJhc2U8bnVsbCB8IHN0cmluZz4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGNhbmNlbEJ1dHRvblRleHQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBjb21tYW5kQnVpbGRlcjogTW9kYWxDb21tYW5kQnVpbGRlciB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29tbWFuZHNSZW5kZXJNb2RlOiBNb2RhbENvbW1hbmRzUmVuZGVyTW9kZSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBpc09rQ2xpY2tlZCA9IGZhbHNlO1xuICBwcml2YXRlIGlzVG91Y2hlZCA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IG9rQnV0dG9uVGV4dDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3BlbGxjaGVja01vZGU6IFNwZWxsY2hlY2tNb2RlO1xuICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlOiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xuICBwcml2YXRlIHZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsdWVWYWxpZGF0b3I6ICh2YWx1ZTogc3RyaW5nKSA9PiBQcm9taXNhYmxlPE1heWJlUmV0dXJuPHN0cmluZz4+O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IFByb21wdE1vZGFsQ29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuICAgIHRoaXMuYWRkQ3NzQ2xhc3NlcyhDc3NDbGFzcy5Qcm9tcHRNb2RhbCk7XG4gICAgdGhpcy5jYW5jZWxCdXR0b25UZXh0ID0gcGFyYW1zLmNhbmNlbEJ1dHRvblRleHQgPz8gdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmJ1dHRvbnMuY2FuY2VsKTtcbiAgICB0aGlzLmNvbW1hbmRCdWlsZGVyID0gcGFyYW1zLmNvbW1hbmRCdWlsZGVyID8/IG51bGw7XG4gICAgdGhpcy5jb21tYW5kc1JlbmRlck1vZGUgPSBwYXJhbXMuY29tbWFuZHNSZW5kZXJNb2RlO1xuICAgIHRoaXMub2tCdXR0b25UZXh0ID0gcGFyYW1zLm9rQnV0dG9uVGV4dCA/PyB0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuYnV0dG9ucy5vayk7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHBhcmFtcy5wbGFjZWhvbGRlciA/PyAnJztcbiAgICB0aGlzLnNwZWxsY2hlY2tNb2RlID0gcGFyYW1zLnNwZWxsY2hlY2tNb2RlID8/IFNwZWxsY2hlY2tNb2RlLkZvbGxvd09ic2lkaWFuU2V0dGluZztcbiAgICB0aGlzLnRpdGxlID0gcGFyYW1zLnRpdGxlID8/ICcnO1xuICAgIHRoaXMudmFsdWVWYWxpZGF0b3IgPSBwYXJhbXMudmFsdWVWYWxpZGF0b3IgPz8gbm9vcDtcbiAgICB0aGlzLnZhbHVlID0gcGFyYW1zLmRlZmF1bHRWYWx1ZSA/PyAnJztcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMucHJvbWlzZVJlc29sdmUodGhpcy5pc09rQ2xpY2tlZCA/IHRoaXMudmFsdWUgOiBudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbk9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy50aXRsZUVsLnNldFRleHQodGhpcy50aXRsZSk7XG4gICAgY29uc3QgdGV4dENvbXBvbmVudCA9IG5ldyBUZXh0Q29tcG9uZW50KHRoaXMuY29udGVudEVsKTtcbiAgICBjb25zdCBpbnB1dEVsID0gdGV4dENvbXBvbmVudC5pbnB1dEVsO1xuICAgIC8vIGBBYnN0cmFjdFRleHRDb21wb25lbnRgIGZvcmNlcyBgc3BlbGxjaGVjaz1cImZhbHNlXCJgIG9uIGV2ZXJ5IHRleHQgY29tcG9uZW50LCBzbyB0aGUgbW9kZSBoYXMgdG8gYmUgYXBwbGllZCBoZXJlLlxuICAgIC8vIE9ic2lkaWFuJ3Mgb3duIGZpbGUgZXhwbG9yZXIgcmVhZHMgdGhlIHNhbWUgY29uZmlnIHdoZW4gaXQgc3RhcnRzIGFuIGlubGluZSByZW5hbWUuXG4gICAgYXBwbHlTcGVsbGNoZWNrTW9kZSh7XG4gICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgZWxlbWVudDogaW5wdXRFbCxcbiAgICAgIHNwZWxsY2hlY2tNb2RlOiB0aGlzLnNwZWxsY2hlY2tNb2RlXG4gICAgfSk7XG5cbiAgICBjb25zdCB2YWxpZGF0ZSA9IGFzeW5jIChzaG91bGRSZXBvcnQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGF3YWl0IHRoaXMudmFsdWVWYWxpZGF0b3IoaW5wdXRFbC52YWx1ZSkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgaW5wdXRFbC5zZXRDdXN0b21WYWxpZGl0eShlcnJvck1lc3NhZ2UgPz8gJycpO1xuICAgICAgaWYgKHNob3VsZFJlcG9ydCkge1xuICAgICAgICBpbnB1dEVsLnJlcG9ydFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUlucHV0ID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgdGhpcy5tYXJrVG91Y2hlZChpbnB1dEVsKTtcbiAgICAgIGF3YWl0IHZhbGlkYXRlKHRydWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVGb2N1cyA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGF3YWl0IHZhbGlkYXRlKHRoaXMuaXNUb3VjaGVkKTtcbiAgICB9O1xuXG4gICAgdGV4dENvbXBvbmVudC5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICB0ZXh0Q29tcG9uZW50LmlucHV0RWwuc2VsZWN0KCk7XG4gICAgdGV4dENvbXBvbmVudC5zZXRQbGFjZWhvbGRlcih0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICBpbnB1dEVsLmFkZENsYXNzKENzc0NsYXNzLlRleHRCb3gpO1xuICAgIC8vIFRoZSBtb2RhbCBvcGVucyBpbnZhbGlkIGJ5IGRlc2lnbiAoc2VlIGJlbG93KSwgc28gdGhlIGludmFsaWQgc3R5bGluZyBpcyBkZWZlcnJlZCB1bnRpbCB0b3VjaGVkLlxuICAgIGlucHV0RWwuYWRkQ2xhc3MoQ3NzQ2xhc3MuVW50b3VjaGVkKTtcbiAgICB0ZXh0Q29tcG9uZW50Lm9uQ2hhbmdlKChuZXdWYWx1ZSkgPT4ge1xuICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIH0pO1xuICAgIGlucHV0RWwuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICB0aGlzLmhhbmRsZU9rKGV2ZW50LCB0ZXh0Q29tcG9uZW50KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGNvbnZlcnRBc3luY1RvU3luYyhoYW5kbGVJbnB1dCkpO1xuICAgIGlucHV0RWwuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBjb252ZXJ0QXN5bmNUb1N5bmMoaGFuZGxlRm9jdXMpKTtcbiAgICAvLyBUaGUgbW9kYWwgbXVzdCBzdGFydCBvdXQgaW52YWxpZCBzbyBPSyByZWZ1c2VzLCBidXQgdGhlIHZhbGlkaXR5IGlzIG5vdCByZXBvcnRlZCB1bnRpbCB0aGUgdXNlciB0eXBlcyBvciBzdWJtaXRzLlxuICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IHZhbGlkYXRlKGZhbHNlKSk7XG4gICAgY29uc3Qgb2tCdXR0b24gPSBuZXcgQnV0dG9uQ29tcG9uZW50KHRoaXMuY29udGVudEVsKTtcbiAgICBva0J1dHRvbi5zZXRCdXR0b25UZXh0KHRoaXMub2tCdXR0b25UZXh0KTtcbiAgICBva0J1dHRvbi5zZXRDdGEoKTtcbiAgICBva0J1dHRvbi5vbkNsaWNrKChldmVudCkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVPayhldmVudCwgdGV4dENvbXBvbmVudCk7XG4gICAgfSk7XG4gICAgb2tCdXR0b24uc2V0Q2xhc3MoQ3NzQ2xhc3MuT2tCdXR0b24pO1xuICAgIGNvbnN0IGNhbmNlbEJ1dHRvbiA9IG5ldyBCdXR0b25Db21wb25lbnQodGhpcy5jb250ZW50RWwpO1xuICAgIGNhbmNlbEJ1dHRvbi5zZXRCdXR0b25UZXh0KHRoaXMuY2FuY2VsQnV0dG9uVGV4dCk7XG4gICAgY2FuY2VsQnV0dG9uLm9uQ2xpY2sodGhpcy5jbG9zZS5iaW5kKHRoaXMpKTtcbiAgICBjYW5jZWxCdXR0b24uc2V0Q2xhc3MoQ3NzQ2xhc3MuQ2FuY2VsQnV0dG9uKTtcblxuICAgIC8vIEJ1aWx0IGxhc3Qgc28gdGhlIHN0cmlwIGxhbmRzIGFsb25nIHRoZSBtb2RhbCdzIGJvdHRvbSBlZGdlLCB3aGVyZSBhIGBTdWdnZXN0TW9kYWxgJ3MgaW5zdHJ1Y3Rpb25cbiAgICAvLyBiYXIgc2l0cy5cbiAgICB0aGlzLmNvbW1hbmRCdWlsZGVyPy5idWlsZCh0aGlzLCBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8TW9kYWxDb21tYW5kQnVpbGRlckJ1aWxkT3B0aW9ucz4oeyByZW5kZXJNb2RlOiB0aGlzLmNvbW1hbmRzUmVuZGVyTW9kZSB9KSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU9rKGV2ZW50OiBFdmVudCwgdGV4dENvbXBvbmVudDogVGV4dENvbXBvbmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKCF0ZXh0Q29tcG9uZW50LmlucHV0RWwuY2hlY2tWYWxpZGl0eSgpKSB7XG4gICAgICB0aGlzLm1hcmtUb3VjaGVkKHRleHRDb21wb25lbnQuaW5wdXRFbCk7XG4gICAgICB0ZXh0Q29tcG9uZW50LmlucHV0RWwucmVwb3J0VmFsaWRpdHkoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzT2tDbGlja2VkID0gdHJ1ZTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIG1hcmtUb3VjaGVkKGlucHV0RWw6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmlzVG91Y2hlZCA9IHRydWU7XG4gICAgaW5wdXRFbC5yZW1vdmVDbGFzcyhDc3NDbGFzcy5VbnRvdWNoZWQpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGxheXMgYSBwcm9tcHQgbW9kYWwgaW4gT2JzaWRpYW4gdG8gZ2V0IHVzZXIgaW5wdXQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcHJvbXB0IG1vZGFsLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB1c2VyIGlucHV0IG9yIGBudWxsYCBpZiB0aGUgcHJvbXB0IHdhcyBjYW5jZWxsZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9tcHQocGFyYW1zOiBQcm9tcHRQYXJhbXMpOiBQcm9taXNlPG51bGwgfCBzdHJpbmc+IHtcbiAgcmV0dXJuIGF3YWl0IHNob3dNb2RhbDxudWxsIHwgc3RyaW5nPigocHJvbWlzZVJlc29sdmUpID0+XG4gICAgbmV3IFByb21wdE1vZGFsKHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIHByb21pc2VSZXNvbHZlXG4gICAgfSlcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBLG1CQUdPO0FBQ1Asc0JBQXFCO0FBQ3JCLDBCQUE0QztBQUM1QyxzQkFHTztBQVlQLHVCQUF5QjtBQUN6QiwwQkFBb0M7QUFDcEMsa0JBQWtCO0FBQ2xCLCtCQUErQjtBQUMvQixtQkFHTztBQTRFUCxNQUFNLG9CQUFvQix1QkFBeUI7QUFBQSxFQUNoQztBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDVCxjQUFjO0FBQUEsRUFDZCxZQUFZO0FBQUEsRUFDSDtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtB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
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2RhbHMvcHJvbXB0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBVdGlsaXR5IGZvciBkaXNwbGF5aW5nIGEgcHJvbXB0IG1vZGFsIGluIE9ic2lkaWFuLlxuICpcbiAqIFRoaXMgbW9kdWxlIGV4cG9ydHMgYSBmdW5jdGlvbiB0byBkaXNwbGF5IGEgbW9kYWwgdGhhdCBwcm9tcHRzIHRoZSB1c2VyIGZvciBpbnB1dC4gVGhlIG1vZGFsIGluY2x1ZGVzIFwiT0tcIiBhbmQgXCJDYW5jZWxcIiBidXR0b25zLlxuICovXG5cbmltcG9ydCB0eXBlIHsgTWF5YmVSZXR1cm4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZSc7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0QXN5bmNUb1N5bmMsXG4gIGludm9rZUFzeW5jU2FmZWx5XG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Z1bmN0aW9uJztcbmltcG9ydCB7IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllcyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9vYmplY3QtdXRpbHMnO1xuaW1wb3J0IHtcbiAgQnV0dG9uQ29tcG9uZW50LFxuICBUZXh0Q29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUge1xuICBNb2RhbENvbW1hbmRCdWlsZGVyLFxuICBNb2RhbENvbW1hbmRCdWlsZGVyQnVpbGRPcHRpb25zLFxuICBNb2RhbENvbW1hbmRzUmVuZGVyTW9kZVxufSBmcm9tICcuL21vZGFsLWNvbW1hbmQtYnVpbGRlci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIE1vZGFsQmFzZUNvbnN0cnVjdG9yUGFyYW1zLFxuICBNb2RhbFBhcmFtc0Jhc2Vcbn0gZnJvbSAnLi9tb2RhbC50cyc7XG5cbmltcG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi4vY3NzLWNsYXNzLnRzJztcbmltcG9ydCB7IGFwcGx5U3BlbGxjaGVja01vZGUgfSBmcm9tICcuLi9odG1sLWVsZW1lbnQudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBTcGVsbGNoZWNrTW9kZSB9IGZyb20gJy4uL29ic2lkaWFuLXNldHRpbmdzLnRzJztcbmltcG9ydCB7XG4gIE1vZGFsQmFzZSxcbiAgc2hvd01vZGFsXG59IGZyb20gJy4vbW9kYWwudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBwcm9tcHR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb21wdFBhcmFtcyBleHRlbmRzIE1vZGFsUGFyYW1zQmFzZSB7XG4gIC8qKlxuICAgKiBBIHRleHQgZm9yIHRoZSBcIkNhbmNlbFwiIGJ1dHRvbi5cbiAgICovXG4gIHJlYWRvbmx5IGNhbmNlbEJ1dHRvblRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dHJhIGNvbnRyb2xzIOKAlCBjaGVja2JveGVzLCBkcm9wZG93bnMgYW5kIGtleWJvYXJkIHNob3J0Y3V0cyDigJQgcmVuZGVyZWQgYXMgYSBzdHJpcCBhbG9uZyB0aGUgYm90dG9tXG4gICAqIG9mIHRoZSBtb2RhbCwgc28gYSBjYWxsZXIgZ2V0cyBhIHRleHQgaW5wdXQgcGx1cyBvcHRpb25zIHdpdGggbm8gYmVzcG9rZSBtb2RhbCBvZiBpdHMgb3duLlxuICAgKlxuICAgKiBIYW5kIGl0IGEgY29uZmlndXJlZCB7QGxpbmsgTW9kYWxDb21tYW5kQnVpbGRlcn07IHRoZSBtb2RhbCBidWlsZHMgaXQuIFRoZSBzdHJpcCBpcyByZW5kZXJlZCBhZnRlclxuICAgKiB0aGUgYnV0dG9ucywgc28gaXQgc2l0cyBhbG9uZyB0aGUgYm90dG9tIGVkZ2Ugd2hlcmUgYSBgU3VnZ2VzdE1vZGFsYCdzIGluc3RydWN0aW9uIGJhciBzaXRzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZEJ1aWxkZXI/OiBNb2RhbENvbW1hbmRCdWlsZGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgd2F5IHtAbGluayBQcm9tcHRQYXJhbXMuY29tbWFuZEJ1aWxkZXJ9J3MgY29udHJvbHMgYXJlIHJlbmRlcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgTW9kYWxDb21tYW5kc1JlbmRlck1vZGUuSW5zdHJ1Y3Rpb25zYFxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZHNSZW5kZXJNb2RlPzogTW9kYWxDb21tYW5kc1JlbmRlck1vZGU7XG5cbiAgLyoqXG4gICAqIEEgZGVmYXVsdCB2YWx1ZSB0byBwcmUtZmlsbCB0aGUgaW5wdXQgZmllbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnJ2BcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRWYWx1ZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSB0ZXh0IGZvciB0aGUgXCJPS1wiIGJ1dHRvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9rQnV0dG9uVGV4dD86IHN0cmluZztcblxuICAvKipcbiAgICogQSBwbGFjZWhvbGRlciB0ZXh0IGZvciB0aGUgaW5wdXQgZmllbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnJ2BcbiAgICovXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9kZSBkZWNpZGluZyB3aGV0aGVyIHRoZSBpbnB1dCBpcyBzcGVsbC1jaGVja2VkLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCBpcyB3aGF0IHRoaXMgbW9kYWwgaGFzIGFsd2F5cyBkb25lLCBzbyBwYXNzaW5nIG5vdGhpbmcgY2hhbmdlcyBub3RoaW5nOiB0aGUgaW5wdXQgZm9sbG93c1xuICAgKiBgRWRpdG9yID4gU3BlbGxjaGVja2AsIGxpa2UgT2JzaWRpYW4ncyBvd24gbmFtZS1lbnRyeSBzdXJmYWNlcy4gUGFzcyB7QGxpbmsgU3BlbGxjaGVja01vZGUuT2ZmfSBmb3IgYVxuICAgKiBib3ggdGhhdCBpcyByZWFsbHkgYSBzZWFyY2ggZmllbGQsIG9yIHtAbGluayBTcGVsbGNoZWNrTW9kZS5BbHdheXNPbn0gdG8gc3BlbGwtY2hlY2sgaXQgd2hhdGV2ZXIgdGhlXG4gICAqIHZhdWx0IHNldHRpbmcgc2F5cy5cbiAgICpcbiAgICogQGRlZmF1bHQgYFNwZWxsY2hlY2tNb2RlLkZvbGxvd09ic2lkaWFuU2V0dGluZ2BcbiAgICovXG4gIHJlYWRvbmx5IHNwZWxsY2hlY2tNb2RlPzogU3BlbGxjaGVja01vZGU7XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgb2YgdGhlIG1vZGFsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdG8gdmFsaWRhdGUgdGhlIGlucHV0IHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgaW5wdXQgdmFsdWUgdG8gdmFsaWRhdGUuXG4gICAqIEByZXR1cm5zIGFuIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHZhbHVlIGlzIGludmFsaWQsIG9yIGBudWxsYCBpZiB0aGUgdmFsdWUgaXMgdmFsaWQuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZVZhbGlkYXRvcj86ICh2YWx1ZTogc3RyaW5nKSA9PiBQcm9taXNhYmxlPE1heWJlUmV0dXJuPHN0cmluZz4+O1xufVxuXG50eXBlIFByb21wdE1vZGFsQ29uc3RydWN0b3JQYXJhbXMgPSBNb2RhbEJhc2VDb25zdHJ1Y3RvclBhcmFtczxudWxsIHwgc3RyaW5nPiAmIFByb21wdFBhcmFtcztcblxuY2xhc3MgUHJvbXB0TW9kYWwgZXh0ZW5kcyBNb2RhbEJhc2U8bnVsbCB8IHN0cmluZz4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGNhbmNlbEJ1dHRvblRleHQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBjb21tYW5kQnVpbGRlcjogTW9kYWxDb21tYW5kQnVpbGRlciB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29tbWFuZHNSZW5kZXJNb2RlOiBNb2RhbENvbW1hbmRzUmVuZGVyTW9kZSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBpc09rQ2xpY2tlZCA9IGZhbHNlO1xuICBwcml2YXRlIGlzVG91Y2hlZCA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IG9rQnV0dG9uVGV4dDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3BlbGxjaGVja01vZGU6IFNwZWxsY2hlY2tNb2RlO1xuICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlOiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xuICBwcml2YXRlIHZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsdWVWYWxpZGF0b3I6ICh2YWx1ZTogc3RyaW5nKSA9PiBQcm9taXNhYmxlPE1heWJlUmV0dXJuPHN0cmluZz4+O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IFByb21wdE1vZGFsQ29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuICAgIHRoaXMuYWRkQ3NzQ2xhc3NlcyhDc3NDbGFzcy5Qcm9tcHRNb2RhbCk7XG4gICAgdGhpcy5jYW5jZWxCdXR0b25UZXh0ID0gcGFyYW1zLmNhbmNlbEJ1dHRvblRleHQgPz8gdCgoJCkgPT4gJC5vYnNpZGlhbkxpYi5idXR0b25zLmNhbmNlbCk7XG4gICAgdGhpcy5jb21tYW5kQnVpbGRlciA9IHBhcmFtcy5jb21tYW5kQnVpbGRlciA/PyBudWxsO1xuICAgIHRoaXMuY29tbWFuZHNSZW5kZXJNb2RlID0gcGFyYW1zLmNvbW1hbmRzUmVuZGVyTW9kZTtcbiAgICB0aGlzLm9rQnV0dG9uVGV4dCA9IHBhcmFtcy5va0J1dHRvblRleHQgPz8gdCgoJCkgPT4gJC5vYnNpZGlhbkxpYi5idXR0b25zLm9rKTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gcGFyYW1zLnBsYWNlaG9sZGVyID8/ICcnO1xuICAgIHRoaXMuc3BlbGxjaGVja01vZGUgPSBwYXJhbXMuc3BlbGxjaGVja01vZGUgPz8gU3BlbGxjaGVja01vZGUuRm9sbG93T2JzaWRpYW5TZXR0aW5nO1xuICAgIHRoaXMudGl0bGUgPSBwYXJhbXMudGl0bGUgPz8gJyc7XG4gICAgdGhpcy52YWx1ZVZhbGlkYXRvciA9IHBhcmFtcy52YWx1ZVZhbGlkYXRvciA/PyBub29wO1xuICAgIHRoaXMudmFsdWUgPSBwYXJhbXMuZGVmYXVsdFZhbHVlID8/ICcnO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5wcm9taXNlUmVzb2x2ZSh0aGlzLmlzT2tDbGlja2VkID8gdGhpcy52YWx1ZSA6IG51bGwpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIG9uT3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLnRpdGxlRWwuc2V0VGV4dCh0aGlzLnRpdGxlKTtcbiAgICBjb25zdCB0ZXh0Q29tcG9uZW50ID0gbmV3IFRleHRDb21wb25lbnQodGhpcy5jb250ZW50RWwpO1xuICAgIGNvbnN0IGlucHV0RWwgPSB0ZXh0Q29tcG9uZW50LmlucHV0RWw7XG4gICAgLy8gYEFic3RyYWN0VGV4dENvbXBvbmVudGAgZm9yY2VzIGBzcGVsbGNoZWNrPVwiZmFsc2VcImAgb24gZXZlcnkgdGV4dCBjb21wb25lbnQsIHNvIHRoZSBtb2RlIGhhcyB0byBiZSBhcHBsaWVkIGhlcmUuXG4gICAgLy8gT2JzaWRpYW4ncyBvd24gZmlsZSBleHBsb3JlciByZWFkcyB0aGUgc2FtZSBjb25maWcgd2hlbiBpdCBzdGFydHMgYW4gaW5saW5lIHJlbmFtZS5cbiAgICBhcHBseVNwZWxsY2hlY2tNb2RlKHtcbiAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICBlbGVtZW50OiBpbnB1dEVsLFxuICAgICAgc3BlbGxjaGVja01vZGU6IHRoaXMuc3BlbGxjaGVja01vZGVcbiAgICB9KTtcblxuICAgIGNvbnN0IHZhbGlkYXRlID0gYXN5bmMgKHNob3VsZFJlcG9ydDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYXdhaXQgdGhpcy52YWx1ZVZhbGlkYXRvcihpbnB1dEVsLnZhbHVlKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBpbnB1dEVsLnNldEN1c3RvbVZhbGlkaXR5KGVycm9yTWVzc2FnZSA/PyAnJyk7XG4gICAgICBpZiAoc2hvdWxkUmVwb3J0KSB7XG4gICAgICAgIGlucHV0RWwucmVwb3J0VmFsaWRpdHkoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlSW5wdXQgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICB0aGlzLm1hcmtUb3VjaGVkKGlucHV0RWwpO1xuICAgICAgYXdhaXQgdmFsaWRhdGUodHJ1ZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgYXdhaXQgdmFsaWRhdGUodGhpcy5pc1RvdWNoZWQpO1xuICAgIH07XG5cbiAgICB0ZXh0Q29tcG9uZW50LnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgIHRleHRDb21wb25lbnQuaW5wdXRFbC5zZWxlY3QoKTtcbiAgICB0ZXh0Q29tcG9uZW50LnNldFBsYWNlaG9sZGVyKHRoaXMucGxhY2Vob2xkZXIpO1xuICAgIGlucHV0RWwuYWRkQ2xhc3MoQ3NzQ2xhc3MuVGV4dEJveCk7XG4gICAgLy8gVGhlIG1vZGFsIG9wZW5zIGludmFsaWQgYnkgZGVzaWduIChzZWUgYmVsb3cpLCBzbyB0aGUgaW52YWxpZCBzdHlsaW5nIGlzIGRlZmVycmVkIHVudGlsIHRvdWNoZWQuXG4gICAgaW5wdXRFbC5hZGRDbGFzcyhDc3NDbGFzcy5VbnRvdWNoZWQpO1xuICAgIHRleHRDb21wb25lbnQub25DaGFuZ2UoKG5ld1ZhbHVlKSA9PiB7XG4gICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgfSk7XG4gICAgaW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlT2soZXZlbnQsIHRleHRDb21wb25lbnQpO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpbnB1dEVsLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgY29udmVydEFzeW5jVG9TeW5jKGhhbmRsZUlucHV0KSk7XG4gICAgaW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIGNvbnZlcnRBc3luY1RvU3luYyhoYW5kbGVGb2N1cykpO1xuICAgIC8vIFRoZSBtb2RhbCBtdXN0IHN0YXJ0IG91dCBpbnZhbGlkIHNvIE9LIHJlZnVzZXMsIGJ1dCB0aGUgdmFsaWRpdHkgaXMgbm90IHJlcG9ydGVkIHVudGlsIHRoZSB1c2VyIHR5cGVzIG9yIHN1Ym1pdHMuXG4gICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gdmFsaWRhdGUoZmFsc2UpKTtcbiAgICBjb25zdCBva0J1dHRvbiA9IG5ldyBCdXR0b25Db21wb25lbnQodGhpcy5jb250ZW50RWwpO1xuICAgIG9rQnV0dG9uLnNldEJ1dHRvblRleHQodGhpcy5va0J1dHRvblRleHQpO1xuICAgIG9rQnV0dG9uLnNldEN0YSgpO1xuICAgIG9rQnV0dG9uLm9uQ2xpY2soKGV2ZW50KSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZU9rKGV2ZW50LCB0ZXh0Q29tcG9uZW50KTtcbiAgICB9KTtcbiAgICBva0J1dHRvbi5zZXRDbGFzcyhDc3NDbGFzcy5Pa0J1dHRvbik7XG4gICAgY29uc3QgY2FuY2VsQnV0dG9uID0gbmV3IEJ1dHRvbkNvbXBvbmVudCh0aGlzLmNvbnRlbnRFbCk7XG4gICAgY2FuY2VsQnV0dG9uLnNldEJ1dHRvblRleHQodGhpcy5jYW5jZWxCdXR0b25UZXh0KTtcbiAgICBjYW5jZWxCdXR0b24ub25DbGljayh0aGlzLmNsb3NlLmJpbmQodGhpcykpO1xuICAgIGNhbmNlbEJ1dHRvbi5zZXRDbGFzcyhDc3NDbGFzcy5DYW5jZWxCdXR0b24pO1xuXG4gICAgLy8gQnVpbHQgbGFzdCBzbyB0aGUgc3RyaXAgbGFuZHMgYWxvbmcgdGhlIG1vZGFsJ3MgYm90dG9tIGVkZ2UsIHdoZXJlIGEgYFN1Z2dlc3RNb2RhbGAncyBpbnN0cnVjdGlvblxuICAgIC8vIGJhciBzaXRzLlxuICAgIHRoaXMuY29tbWFuZEJ1aWxkZXI/LmJ1aWxkKHRoaXMsIG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxNb2RhbENvbW1hbmRCdWlsZGVyQnVpbGRPcHRpb25zPih7IHJlbmRlck1vZGU6IHRoaXMuY29tbWFuZHNSZW5kZXJNb2RlIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlT2soZXZlbnQ6IEV2ZW50LCB0ZXh0Q29tcG9uZW50OiBUZXh0Q29tcG9uZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoIXRleHRDb21wb25lbnQuaW5wdXRFbC5jaGVja1ZhbGlkaXR5KCkpIHtcbiAgICAgIHRoaXMubWFya1RvdWNoZWQodGV4dENvbXBvbmVudC5pbnB1dEVsKTtcbiAgICAgIHRleHRDb21wb25lbnQuaW5wdXRFbC5yZXBvcnRWYWxpZGl0eSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNPa0NsaWNrZWQgPSB0cnVlO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya1RvdWNoZWQoaW5wdXRFbDogSFRNTElucHV0RWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuaXNUb3VjaGVkID0gdHJ1ZTtcbiAgICBpbnB1dEVsLnJlbW92ZUNsYXNzKENzc0NsYXNzLlVudG91Y2hlZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNwbGF5cyBhIHByb21wdCBtb2RhbCBpbiBPYnNpZGlhbiB0byBnZXQgdXNlciBpbnB1dC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBwcm9tcHQgbW9kYWwuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHVzZXIgaW5wdXQgb3IgYG51bGxgIGlmIHRoZSBwcm9tcHQgd2FzIGNhbmNlbGxlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb21wdChwYXJhbXM6IFByb21wdFBhcmFtcyk6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICByZXR1cm4gYXdhaXQgc2hvd01vZGFsPG51bGwgfCBzdHJpbmc+KChwcm9taXNlUmVzb2x2ZSkgPT5cbiAgICBuZXcgUHJvbXB0TW9kYWwoe1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgcHJvbWlzZVJlc29sdmVcbiAgICB9KVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0EsbUJBR087QUFDUCxzQkFBcUI7QUFDckIsMEJBQTRDO0FBQzVDLHNCQUdPO0FBWVAsdUJBQXlCO0FBQ3pCLDBCQUFvQztBQUNwQyxrQkFBa0I7QUFDbEIsK0JBQStCO0FBQy9CLG1CQUdPO0FBNEVQLE1BQU0sb0JBQW9CLHVCQUF5QjtBQUFBLEVBQ2hDO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNULGNBQWM7QUFBQSxFQUNkLFlBQVk7QUFBQSxFQUNIO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDVDtB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
@@ -0,0 +1,148 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+ (function () {
6
+ function ensureBrowserProcess() {
7
+ const browserProcess = {
8
+ browser: true,
9
+ cwd() {
10
+ return "/";
11
+ },
12
+ env: {},
13
+ platform: "android"
14
+ };
15
+ const existingProcess = globalThis.process;
16
+ if (!existingProcess) {
17
+ globalThis.process = browserProcess;
18
+ return;
19
+ }
20
+ if (existingProcess.versions?.node) {
21
+ return;
22
+ }
23
+ const existingProcessRecord = existingProcess;
24
+ for (const [key, value] of Object.entries(browserProcess)) {
25
+ existingProcessRecord[key] ??= value;
26
+ }
27
+ existingProcessRecord["browser"] = true;
28
+ }
29
+
30
+ ensureBrowserProcess();
31
+ })();
32
+ (function patchObsidianRequire() {
33
+ const originalRequire = require;
34
+ if (!originalRequire || originalRequire.__isPatched) {
35
+ return;
36
+ }
37
+ require = Object.assign(
38
+ (id) => requirePatched(id),
39
+ originalRequire,
40
+ {
41
+ __isPatched: true
42
+ }
43
+ );
44
+ function extractDefault(module) {
45
+ return module && module.__esModule && "default" in module ? module.default : module;
46
+ }
47
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
48
+ "@codemirror/autocomplete",
49
+ "@codemirror/collab",
50
+ "@codemirror/commands",
51
+ "@codemirror/language",
52
+ "@codemirror/lint",
53
+ "@codemirror/search",
54
+ "@codemirror/state",
55
+ "@codemirror/text",
56
+ "@codemirror/view",
57
+ "@lezer/common",
58
+ "@lezer/highlight",
59
+ "@lezer/lr",
60
+ "obsidian"
61
+ ]);
62
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
63
+ "@codemirror/closebrackets",
64
+ "@codemirror/comment",
65
+ "@codemirror/fold",
66
+ "@codemirror/gutter",
67
+ "@codemirror/highlight",
68
+ "@codemirror/history",
69
+ "@codemirror/matchbrackets",
70
+ "@codemirror/panel",
71
+ "@codemirror/rangeset",
72
+ "@codemirror/rectangular-selection",
73
+ "@codemirror/stream-parser",
74
+ "@codemirror/tooltip"
75
+ ]);
76
+ function requirePatched(id) {
77
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
78
+ return originalRequire?.(id);
79
+ }
80
+ const app = globalThis.app;
81
+ if (app?.isMobile) {
82
+ if (id === "process" || id === "node:process") {
83
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
84
+ return process;
85
+ }
86
+ } else {
87
+ const module = originalRequire?.(id);
88
+ if (module) {
89
+ return extractDefault(module);
90
+ }
91
+ }
92
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
93
+ return {};
94
+ }
95
+ })();
96
+
97
+ "use strict";
98
+ var __defProp = Object.defineProperty;
99
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
100
+ var __getOwnPropNames = Object.getOwnPropertyNames;
101
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
102
+ var __export = (target, all) => {
103
+ for (var name in all)
104
+ __defProp(target, name, { get: all[name], enumerable: true });
105
+ };
106
+ var __copyProps = (to, from, except, desc) => {
107
+ if (from && typeof from === "object" || typeof from === "function") {
108
+ for (let key of __getOwnPropNames(from))
109
+ if (!__hasOwnProp.call(to, key) && key !== except)
110
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
111
+ }
112
+ return to;
113
+ };
114
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
115
+ var obsidian_lib_state_exports = {};
116
+ __export(obsidian_lib_state_exports, {
117
+ getObsidianLibState: () => getObsidianLibState,
118
+ resetObsidianLibState: () => resetObsidianLibState
119
+ });
120
+ module.exports = __toCommonJS(obsidian_lib_state_exports);
121
+ var import_value_wrapper = require('@mnaoumov/typescript-lib/value-wrapper');
122
+ const OBSIDIAN_LIB_GLOBAL_NAME = "__obsidianLib";
123
+ function getObsidianLibState(key, defaultValue) {
124
+ return getObsidianLibBag()[key] ??= import_value_wrapper.ValueWrapper.of(defaultValue);
125
+ }
126
+ function resetObsidianLibState() {
127
+ globalThis.__obsidianLib = {};
128
+ }
129
+ function getObsidianLibBag() {
130
+ const wrapper = globalThis;
131
+ const descriptor = Object.getOwnPropertyDescriptor(wrapper, OBSIDIAN_LIB_GLOBAL_NAME);
132
+ if (descriptor && !("value" in descriptor)) {
133
+ Object.defineProperty(wrapper, OBSIDIAN_LIB_GLOBAL_NAME, {
134
+ configurable: true,
135
+ enumerable: true,
136
+ value: {},
137
+ writable: true
138
+ });
139
+ }
140
+ wrapper.__obsidianLib ??= {};
141
+ return wrapper.__obsidianLib;
142
+ }
143
+ // Annotate the CommonJS export names for ESM import in node:
144
+ 0 && (module.exports = {
145
+ getObsidianLibState,
146
+ resetObsidianLibState
147
+ });
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vYnNpZGlhbi1saWItc3RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgcHJvY2Vzcy13aWRlIHNoYXJlZC1zdGF0ZSBiYWcgb24gdGhlIGBfX29ic2lkaWFuTGliYCBnbG9iYWwuIE5ldyBnZW5lcmljIHN0YXRlIGJlbG9uZ3MgaW5cbiAqIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZXNjcmlwdC1saWItc3RhdGVgICh0aGUgYFN5bWJvbC5mb3IoJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9zdGF0ZScpYCBzbG90KS5cbiAqXG4gKiBUaGUgYmFnIGlzIHN0b3JlZCBvbiBgZ2xvYmFsVGhpcy5fX29ic2lkaWFuTGliYCwgaS5lLiBvbiB0aGUgZ2xvYmFsIG9iamVjdCBvZiB0aGUgcmVhbG0gaW5cbiAqIHdoaWNoIHRoaXMgbGlicmFyeSBpcyBsb2FkZWQuIEJlY2F1c2UgYSBmdW5jdGlvbidzIGBnbG9iYWxUaGlzYCByZXNvbHZlcyB0byBpdHMgZGVmaW5pbmdcbiAqIHJlYWxtIChub3QgdGhlIGNhbGxlcidzKSwgZXZlcnkgY29uc3VtZXIgdGhhdCBidW5kbGVzIHRoZSBsaWJyYXJ5IGluIHRoZSBtYWluIE9ic2lkaWFuIHJlbmRlcmVyXG4gKiBzaGFyZXMgdGhlIHNhbWUgYmFnLCByZWdhcmRsZXNzIG9mIHdoaWNoIHdpbmRvdyBpcyBjdXJyZW50bHkgYWN0aXZlLCBzbyBjYWxsZXJzIG5ldmVyIG5lZWQgdG8gcGFzcyBhbiBgQXBwYFxuICogaW5zdGFuY2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljT2JqZWN0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcblxuaW1wb3J0IHsgVmFsdWVXcmFwcGVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3ZhbHVlLXdyYXBwZXInO1xuXG5pbnRlcmZhY2UgT2JzaWRpYW5MaWJXcmFwcGVyIHtcbiAgX19vYnNpZGlhbkxpYjogR2VuZXJpY09iamVjdDtcbn1cblxuY29uc3QgT0JTSURJQU5fTElCX0dMT0JBTF9OQU1FID0gJ19fb2JzaWRpYW5MaWInO1xuXG4vKipcbiAqIFJldHJpZXZlcyBvciBjcmVhdGVzIGEgc2hhcmVkLXN0YXRlIHtAbGluayBWYWx1ZVdyYXBwZXJ9IGZvciBhIGdpdmVuIGtleSBvbiBgZ2xvYmFsVGhpcy5fX29ic2lkaWFuTGliYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgc2hhcmVkIHN0YXRlIHZhbHVlLlxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gc3RvcmUgb3IgcmV0cmlldmUgdGhlIHNoYXJlZCBzdGF0ZSB1bmRlci5cbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgLSBUaGUgZGVmYXVsdCB2YWx1ZSB0byB1c2UgaWYgdGhlIHNoYXJlZCBzdGF0ZSBkb2VzIG5vdCBleGlzdCB5ZXQuXG4gKiBAcmV0dXJucyBUaGUge0BsaW5rIFZhbHVlV3JhcHBlcn0gdGhhdCBzdG9yZXMgdGhlIHNoYXJlZCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9ic2lkaWFuTGliU3RhdGU8VD4oa2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogVCk6IFZhbHVlV3JhcHBlcjxUPiB7XG4gIHJldHVybiAoZ2V0T2JzaWRpYW5MaWJCYWcoKVtrZXldID8/PSBWYWx1ZVdyYXBwZXIub2YoZGVmYXVsdFZhbHVlKSkgYXMgVmFsdWVXcmFwcGVyPFQ+O1xufVxuXG4vKipcbiAqIENsZWFycyB0aGUgc2hhcmVkLXN0YXRlIGJhZyBvbiBgZ2xvYmFsVGhpcy5fX29ic2lkaWFuTGliYC5cbiAqXG4gKiBJbnRlbmRlZCBmb3IgdGVzdCBpc29sYXRpb246IGNhbGwgaXQgYmVmb3JlIGVhY2ggdGVzdCBzbyBhY2N1bXVsYXRlZCBzdGF0ZSAocXVldWVzLFxuICogcmVnaXN0ZXJlZCBoYW5kbGVycywgZXRjLikgZG9lcyBub3QgbGVhayBiZXR3ZWVuIHRlc3RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRPYnNpZGlhbkxpYlN0YXRlKCk6IHZvaWQge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9uby1nbG9iYWwtdGhpcyAtLSBUaGUgc2hhcmVkIHN0YXRlIGludGVudGlvbmFsbHkgbGl2ZXMgb24gdGhlIHJlYWxtIGdsb2JhbC5cbiAgKGdsb2JhbFRoaXMgYXMgUGFydGlhbDxPYnNpZGlhbkxpYldyYXBwZXI+KS5fX29ic2lkaWFuTGliID0ge307XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYmFnLCBjcmVhdGluZyBpdCBhcyBhIHBsYWluIGRhdGEgcHJvcGVydHkgd2hlbiB0aGlzIHJlYWxtIGhhcyBub25lLlxuICpcbiAqIEEgY29weSBvbGRlciB0aGFuIGA2LjAuMGAga2VwdCBpdHMgc3RhdGUgdW5kZXIgYW5vdGhlciBnbG9iYWwgYW5kIGluc3RhbGxlZCBgX19vYnNpZGlhbkxpYmAgYXMgYW4gYWNjZXNzb3Igb250b1xuICogaXQuIEFkb3B0aW5nIHRoYXQgYWNjZXNzb3Igd291bGQgbWFrZSB3aGV0aGVyIHRoaXMgY29weSBzaGFyZXMgc3RhdGUgd2l0aCBvbGRlciBvbmVzIGRlcGVuZCBvbiB3aGljaCBwbHVnaW4gbG9hZGVkXG4gKiBmaXJzdCwgc28gaXQgaXMgcmVwbGFjZWQgYnkgdGhpcyBjb3B5J3Mgb3duIGJhZy4gVGhlIG9sZGVyIGNvcGllcyBrZWVwIHJlYWRpbmcgdGhlaXIgb3duIGdsb2JhbCwgdW50b3VjaGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBzaGFyZWQtc3RhdGUgYmFnLlxuICovXG5mdW5jdGlvbiBnZXRPYnNpZGlhbkxpYkJhZygpOiBHZW5lcmljT2JqZWN0IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFubWQvbm8tZ2xvYmFsLXRoaXMgLS0gVGhlIHNoYXJlZCBzdGF0ZSBpbnRlbnRpb25hbGx5IGxpdmVzIG9uIHRoZSByZWFsbSBnbG9iYWwuXG4gIGNvbnN0IHdyYXBwZXIgPSBnbG9iYWxUaGlzIGFzIFBhcnRpYWw8T2JzaWRpYW5MaWJXcmFwcGVyPjtcbiAgY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod3JhcHBlciwgT0JTSURJQU5fTElCX0dMT0JBTF9OQU1FKTtcbiAgaWYgKGRlc2NyaXB0b3IgJiYgISgndmFsdWUnIGluIGRlc2NyaXB0b3IpKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdyYXBwZXIsIE9CU0lESUFOX0xJQl9HTE9CQUxfTkFNRSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiB7fSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICB3cmFwcGVyLl9fb2JzaWRpYW5MaWIgPz89IHt9O1xuICByZXR1cm4gd3JhcHBlci5fX29ic2lkaWFuTGliO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFlQSwyQkFBNkI7QUFNN0IsTUFBTSwyQkFBMkI7QUFVMUIsU0FBUyxvQkFBdUIsS0FBYSxjQUFrQztBQUNwRixTQUFRLGtCQUFrQixFQUFFLEdBQUcsTUFBTSxrQ0FBYSxHQUFHLFlBQVk7QUFDbkU7QUFRTyxTQUFTLHdCQUE4QjtBQUU1QyxFQUFDLFdBQTJDLGdCQUFnQixDQUFDO0FBQy9EO0FBV0EsU0FBUyxvQkFBbUM7QUFFMUMsUUFBTSxVQUFVO0FBQ2hCLFFBQU0sYUFBYSxPQUFPLHlCQUF5QixTQUFTLHdCQUF3QjtBQUNwRixNQUFJLGNBQWMsRUFBRSxXQUFXLGFBQWE7QUFDMUMsV0FBTyxlQUFlLFNBQVMsMEJBQTBCO0FBQUEsTUFDdkQsY0FBYztBQUFBLE1BQ2QsWUFBWTtBQUFBLE1BQ1osT0FBTyxDQUFDO0FBQUEsTUFDUixVQUFVO0FBQUEsSUFDWixDQUFDO0FBQUEsRUFDSDtBQUVBLFVBQVEsa0JBQWtCLENBQUM7QUFDM0IsU0FBTyxRQUFRO0FBQ2pCOyIsIm5hbWVzIjpbXX0=
@@ -0,0 +1,30 @@
1
+ /// <reference path="./library-references.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Provides access to the process-wide shared-state bag on the `__obsidianLib` global. New generic state belongs in
6
+ * `@mnaoumov/typescript-lib/typescript-lib-state` (the `Symbol.for('@mnaoumov/typescript-lib/state')` slot).
7
+ *
8
+ * The bag is stored on `globalThis.__obsidianLib`, i.e. on the global object of the realm in
9
+ * which this library is loaded. Because a function's `globalThis` resolves to its defining
10
+ * realm (not the caller's), every consumer that bundles the library in the main Obsidian renderer
11
+ * shares the same bag, regardless of which window is currently active, so callers never need to pass an `App`
12
+ * instance.
13
+ */
14
+ import { ValueWrapper } from '@mnaoumov/typescript-lib/value-wrapper';
15
+ /**
16
+ * Retrieves or creates a shared-state {@link ValueWrapper} for a given key on `globalThis.__obsidianLib`.
17
+ *
18
+ * @typeParam T - The type of the shared state value.
19
+ * @param key - The key to store or retrieve the shared state under.
20
+ * @param defaultValue - The default value to use if the shared state does not exist yet.
21
+ * @returns The {@link ValueWrapper} that stores the shared state.
22
+ */
23
+ export declare function getObsidianLibState<T>(key: string, defaultValue: T): ValueWrapper<T>;
24
+ /**
25
+ * Clears the shared-state bag on `globalThis.__obsidianLib`.
26
+ *
27
+ * Intended for test isolation: call it before each test so accumulated state (queues,
28
+ * registered handlers, etc.) does not leak between tests.
29
+ */
30
+ export declare function resetObsidianLibState(): void;
@@ -237,7 +237,7 @@ function compileGlobEntry(glob) {
237
237
  const globSource = getGlobSource(body);
238
238
  if (!globSource.isValid) {
239
239
  return {
240
- error: (0, import_i18n.t)(($) => $.obsidianDevUtils.pathSettings.invalidGlob, { glob, reason: globSource.error })
240
+ error: (0, import_i18n.t)(($) => $.obsidianLib.pathSettings.invalidGlob, { glob, reason: globSource.error })
241
241
  };
242
242
  }
243
243
  const { source } = globSource;
@@ -249,7 +249,7 @@ function compileGlobEntry(glob) {
249
249
  contentsRegExp = new RegExp(`${prefix}${source}/`, CASE_INSENSITIVE_FLAG);
250
250
  } catch (error_) {
251
251
  return {
252
- error: (0, import_i18n.t)(($) => $.obsidianDevUtils.pathSettings.invalidGlob, { glob, reason: getRegExpErrorReason(error_) })
252
+ error: (0, import_i18n.t)(($) => $.obsidianLib.pathSettings.invalidGlob, { glob, reason: getRegExpErrorReason(error_) })
253
253
  };
254
254
  }
255
255
  return {
@@ -275,7 +275,7 @@ function compileRegExpEntry(entry, source, flags) {
275
275
  regExp = new RegExp(source, effectiveFlags.includes(CASE_INSENSITIVE_FLAG) ? effectiveFlags : `${effectiveFlags}${CASE_INSENSITIVE_FLAG}`);
276
276
  } catch (error) {
277
277
  return {
278
- error: (0, import_i18n.t)(($) => $.obsidianDevUtils.pathSettings.invalidRegularExpression, { reason: getRegExpErrorReason(error), regExp: entry })
278
+ error: (0, import_i18n.t)(($) => $.obsidianLib.pathSettings.invalidRegularExpression, { reason: getRegExpErrorReason(error), regExp: entry })
279
279
  };
280
280
  }
281
281
  return {
@@ -319,7 +319,7 @@ function getCharacterClassSource(glob, openIndex) {
319
319
  }
320
320
  index++;
321
321
  }
322
- return { error: (0, import_i18n.t)(($) => $.obsidianDevUtils.pathSettings.unclosedCharacterClass), isValid: false };
322
+ return { error: (0, import_i18n.t)(($) => $.obsidianLib.pathSettings.unclosedCharacterClass), isValid: false };
323
323
  }
324
324
  function getDefaultMatcher(type) {
325
325
  switch (type) {
@@ -377,7 +377,7 @@ function getGlobSource(glob) {
377
377
  case "\\": {
378
378
  index++;
379
379
  if (index >= glob.length) {
380
- return { error: (0, import_i18n.t)(($) => $.obsidianDevUtils.pathSettings.trailingEscape), isValid: false };
380
+ return { error: (0, import_i18n.t)(($) => $.obsidianLib.pathSettings.trailingEscape), isValid: false };
381
381
  }
382
382
  source += (0, import_reg_exp.escapeRegExp)(glob.charAt(index));
383
383
  index++;
@@ -427,4 +427,4 @@ function makeMatchers(paths, defaultMatcher) {
427
427
  PathSettings,
428
428
  pathsValidator
429
429
  });
430
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXRoLXNldHRpbmdzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCB2YWxpZGF0b3JzIGZvciBtYW5hZ2luZyBpbmNsdWRlL2V4Y2x1ZGUgcGF0aCBzZXR0aW5ncy5cbiAqXG4gKiBBbiBlbnRyeSB0YWtlcyBvbmUgb2YgdGhyZWUgZm9ybXMsIGFuZCBldmVyeSBmb3JtIG1hdGNoZXMgY2FzZS1pbnNlbnNpdGl2ZWx5OlxuICpcbiAqIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGl0ZXJhbCwgYC9wYXR0ZXJuL2ZsYWdzYC4gSXRzIG93biBmbGFncyBhcmUgaG9ub3VyZWQgYW5kIGBpYCBpcyBhbHdheXMgYWRkZWQuIGBnYCBhbmQgYHlgIGFyZVxuICogICBhY2NlcHRlZCBhbmQgZHJvcHBlZCwgc2luY2UgdGhleSBtYWtlIGBSZWdFeHAudGVzdGAgc3RhdGVmdWwgYW5kIHNheSBub3RoaW5nIGFib3V0IHdoaWNoIHBhdGhzIG1hdGNoLlxuICogLSBBIGdsb2IsIGFuIGVudHJ5IGhvbGRpbmcgYW4gdW5lc2NhcGVkIGAqYCwgYD9gIG9yIGBbYC4gYCpgIG1hdGNoZXMgd2l0aGluIG9uZSBwYXRoIHNlZ21lbnQsIGAqKmAgYWNyb3NzIHNlZ21lbnRzLFxuICogICBgP2Agb25lIGNoYXJhY3RlciBhbmQgYFthYmNdYCAvIGBbIWFiY11gIGEgY2hhcmFjdGVyIGNsYXNzLiBBIGdsb2Igd2l0aCBubyBgL2AgbWF0Y2hlcyBhIGZpbGUgb3IgZm9sZGVyIE5BTUUgYXQgYW55XG4gKiAgIGRlcHRoLCBhcyBpbiBgLmdpdGlnbm9yZWAgKGAqLnBkZmAgbWF0Y2hlcyBgYS9iL2MucGRmYCk7IG9uZSB3aXRoIGEgYC9gIGlzIGFuY2hvcmVkIHRvIHRoZSB2YXVsdCByb290XG4gKiAgIChgQXR0YWNobWVudHMvKi5wZGZgKS4gQSB0cmFpbGluZyBgL2AgbWFrZXMgaXQgbWF0Y2ggZm9sZGVycyBvbmx5LlxuICogLSBBIHBsYWluIHBhdGgsIGV2ZXJ5IG90aGVyIGVudHJ5LCB3aGljaCBtYXRjaGVzIHRoYXQgcGF0aCBhbmQgZXZlcnl0aGluZyBpbnNpZGUgaXQuIEEgbGl0ZXJhbCBgKmAsIGA/YCwgYFtgIG9yIGBcXGAgaW5cbiAqICAgYSBwbGFpbiBwYXRoIG9yIGEgZ2xvYiBpcyB3cml0dGVuIGVzY2FwZWQgKGBcXCpgKS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE1heWJlUmV0dXJuIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUnO1xuXG5pbXBvcnQgeyBlc2NhcGVSZWdFeHAgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcmVnLWV4cCc7XG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5cbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5cbmVudW0gUGF0aFNldHRpbmdUeXBlIHtcbiAgRXhjbHVkZSA9ICdFeGNsdWRlJyxcbiAgSW5jbHVkZSA9ICdJbmNsdWRlJ1xufVxuXG50eXBlIENoYXJhY3RlckNsYXNzU291cmNlUmVzdWx0ID0gSW52YWxpZFNvdXJjZVJlc3VsdCB8IFZhbGlkQ2hhcmFjdGVyQ2xhc3NTb3VyY2VSZXN1bHQ7XG5cbmludGVyZmFjZSBDb21waWxlUmVzdWx0IHtcbiAgcmVhZG9ubHkgZXJyb3I/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1hdGNoZXI/OiBQYXRoTWF0Y2hlcjtcbn1cblxudHlwZSBHbG9iU291cmNlUmVzdWx0ID0gSW52YWxpZFNvdXJjZVJlc3VsdCB8IFZhbGlkR2xvYlNvdXJjZVJlc3VsdDtcblxuaW50ZXJmYWNlIEludmFsaWRTb3VyY2VSZXN1bHQge1xuICByZWFkb25seSBlcnJvcjogc3RyaW5nO1xuICByZWFkb25seSBpc1ZhbGlkOiBmYWxzZTtcbn1cblxuaW50ZXJmYWNlIFBhdGhNYXRjaGVyIHtcbiAgaXNNYXRjaDogKHBhdGg6IHN0cmluZywgaXNGb2xkZXI6IGJvb2xlYW4pID0+IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBWYWxpZENoYXJhY3RlckNsYXNzU291cmNlUmVzdWx0IGV4dGVuZHMgVmFsaWRHbG9iU291cmNlUmVzdWx0IHtcbiAgcmVhZG9ubHkgZW5kSW5kZXg6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFZhbGlkR2xvYlNvdXJjZVJlc3VsdCB7XG4gIHJlYWRvbmx5IGlzVmFsaWQ6IHRydWU7XG4gIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xufVxuXG5jb25zdCBSRUdfRVhQX0VOVFJZX1JFR19FWFAgPSAvXlxcLy4qXFwvW2Etel0qJC9zO1xuY29uc3QgQ0FTRV9JTlNFTlNJVElWRV9GTEFHID0gJ2knO1xuY29uc3QgU1RBVEVGVUxfRkxBR1NfUkVHX0VYUCA9IC9bZ3ldL2c7XG5jb25zdCBHTE9CX0NIQVJBQ1RFUlMgPSBuZXcgU2V0KFsnPycsICdbJywgJyonXSk7XG5jb25zdCBHTE9CU1RBUiA9ICcqKic7XG5jb25zdCBHTE9CU1RBUl9GT0xERVJTID0gJyoqLyc7XG5cbmNvbnN0IEFMV0FZU19NQVRDSEVSOiBQYXRoTWF0Y2hlciA9IHtcbiAgaXNNYXRjaDogKCkgPT4gdHJ1ZVxufTtcblxuY29uc3QgTkVWRVJfTUFUQ0hFUjogUGF0aE1hdGNoZXIgPSB7XG4gIGlzTWF0Y2g6ICgpID0+IGZhbHNlXG59O1xuXG5jbGFzcyBQYXRoU2V0dGluZyB7XG4gIHB1YmxpYyBnZXQgYXJyYXkoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9hcnJheTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgYXJyYXkodmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fYXJyYXkgPSB2YWx1ZS5maWx0ZXIoQm9vbGVhbik7XG4gICAgdGhpcy5tYXRjaGVycyA9IG1ha2VNYXRjaGVycyh0aGlzLl9hcnJheSwgdGhpcy5kZWZhdWx0TWF0Y2hlcikgPz8gW3RoaXMuZGVmYXVsdE1hdGNoZXJdO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXJyYXk6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdE1hdGNoZXI6IFBhdGhNYXRjaGVyO1xuICBwcml2YXRlIG1hdGNoZXJzOiBQYXRoTWF0Y2hlcltdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFBhdGhTZXR0aW5nVHlwZSkge1xuICAgIHRoaXMuZGVmYXVsdE1hdGNoZXIgPSBnZXREZWZhdWx0TWF0Y2hlcih0eXBlKTtcbiAgICB0aGlzLm1hdGNoZXJzID0gW3RoaXMuZGVmYXVsdE1hdGNoZXJdO1xuICB9XG5cbiAgcHVibGljIGlzUGF0aElnbm9yZWQocGF0aDogc3RyaW5nLCBpc0ZvbGRlcjogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzTWF0Y2ggPSB0aGlzLm1hdGNoZXJzLnNvbWUoKG1hdGNoZXIpID0+IG1hdGNoZXIuaXNNYXRjaChwYXRoLCBpc0ZvbGRlcikpO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbGwgYnJhbmNoZXMgY292ZXJlZCBidXQgdjggcmVwb3J0cyBzd2l0Y2ggYXMgcGFydGlhbC4gKi9cbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGNhc2UgUGF0aFNldHRpbmdUeXBlLkV4Y2x1ZGU6IHtcbiAgICAgICAgcmV0dXJuIGlzTWF0Y2g7XG4gICAgICB9XG4gICAgICBjYXNlIFBhdGhTZXR0aW5nVHlwZS5JbmNsdWRlOiB7XG4gICAgICAgIHJldHVybiAhaXNNYXRjaDtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEV4aGF1c3RpdmUgc3dpdGNoIGd1YXJkLiAqL1xuICAgICAgICBhc3NlcnROZXZlcih0aGlzLnR5cGUpO1xuICAgICAgfVxuICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEEgY2xhc3MgZm9yIG1hbmFnaW5nIGluY2x1ZGUvZXhjbHVkZSBwYXRoIHNldHRpbmdzLlxuICpcbiAqIFNlZSB0aGUgbW9kdWxlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBlbnRyeSBzeW50YXg6IHBsYWluIHBhdGhzLCBnbG9icyBhbmQgcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWxzLCBhbGwgbWF0Y2hlZFxuICogY2FzZS1pbnNlbnNpdGl2ZWx5LlxuICovXG5leHBvcnQgY2xhc3MgUGF0aFNldHRpbmdzIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIGV4Y2x1ZGUgcGF0aHMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBleGNsdWRlIHBhdGhzLlxuICAgKi9cbiAgcHVibGljIGdldCBleGNsdWRlUGF0aHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9leGNsdWRlUGF0aHMuYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZXhjbHVkZSBwYXRocy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGV4Y2x1ZGUgcGF0aHMuXG4gICAqL1xuICBwdWJsaWMgc2V0IGV4Y2x1ZGVQYXRocyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9leGNsdWRlUGF0aHMuYXJyYXkgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpbmNsdWRlIHBhdGhzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgaW5jbHVkZSBwYXRocy5cbiAgICovXG4gIHB1YmxpYyBnZXQgaW5jbHVkZVBhdGhzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5faW5jbHVkZVBhdGhzLmFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGluY2x1ZGUgcGF0aHMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBpbmNsdWRlIHBhdGhzLlxuICAgKi9cbiAgcHVibGljIHNldCBpbmNsdWRlUGF0aHModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5faW5jbHVkZVBhdGhzLmFycmF5ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9leGNsdWRlUGF0aHMgPSBuZXcgUGF0aFNldHRpbmcoUGF0aFNldHRpbmdUeXBlLkV4Y2x1ZGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmNsdWRlUGF0aHMgPSBuZXcgUGF0aFNldHRpbmcoUGF0aFNldHRpbmdUeXBlLkluY2x1ZGUpO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBwYXRoIGlzIGlnbm9yZWQgYnkgdGhlIGluY2x1ZGUvZXhjbHVkZSBwYXRoIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gaXNGb2xkZXIgLSBXaGV0aGVyIHRoZSBwYXRoIGlzIGEgZm9sZGVyLiBPbmx5IGEgZm9sZGVyLW9ubHkgZ2xvYiAob25lIGVuZGluZyBpbiBgL2ApIHJlYWRzIGl0OiBzdWNoIGEgZ2xvYlxuICAgKiBhbHdheXMgbWF0Y2hlcyB0aGUgY29udGVudHMgb2YgYSBtYXRjaGluZyBmb2xkZXIsIGFuZCBtYXRjaGVzIHRoZSBmb2xkZXIgaXRzZWxmIG9ubHkgd2hlbiB0aGlzIGlzIGB0cnVlYC5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwYXRoIGlzIGlnbm9yZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIGlzUGF0aElnbm9yZWQocGF0aDogc3RyaW5nLCBpc0ZvbGRlciA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2luY2x1ZGVQYXRocy5pc1BhdGhJZ25vcmVkKHBhdGgsIGlzRm9sZGVyKSB8fCB0aGlzLl9leGNsdWRlUGF0aHMuaXNQYXRoSWdub3JlZChwYXRoLCBpc0ZvbGRlcik7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgaW5jbHVkZS9leGNsdWRlIHBhdGggZW50cmllcywgcmVwb3J0aW5nIHRoZSBmaXJzdCBlbnRyeSB0aGF0IGlzIG5vdCBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciBnbG9iLlxuICpcbiAqIEFuIGludmFsaWQgZW50cnkgZG9lcyBub3QgdGhyb3cgd2hlbiBhc3NpZ25lZCB0byB7QGxpbmsgUGF0aFNldHRpbmdzfSDigJQgdGhlIHdob2xlIGxpc3QgZmFsbHMgYmFjayB0byBpdHMgZGVmYXVsdFxuICogcGF0dGVybiBpbnN0ZWFkIOKAlCBzbyB0aGlzIHZhbGlkYXRvciBpcyB3aGF0IHN1cmZhY2VzIHRoZSBwcm9ibGVtIHRvIHRoZSB1c2VyLiBUaGUgbWVzc2FnZSBuYW1lcyB0aGUgZW50cnkgYW5kIHRoZVxuICogcmVhc29uIGl0IGlzIGludmFsaWQuXG4gKlxuICogQHBhcmFtIHBhdGhzIC0gVGhlIHBhdGggZW50cmllcyB0byB2YWxpZGF0ZS5cbiAqIEByZXR1cm5zIEEgbWVzc2FnZSBuYW1pbmcgdGhlIGZpcnN0IGludmFsaWQgZW50cnksIG9yIG5vdGhpbmcgd2hlbiBldmVyeSBlbnRyeSBpcyB2YWxpZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhdGhzVmFsaWRhdG9yKHBhdGhzOiBzdHJpbmdbXSk6IE1heWJlUmV0dXJuPHN0cmluZz4ge1xuICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICBjb25zdCB7IGVycm9yIH0gPSBjb21waWxlRW50cnkocGF0aCwgTkVWRVJfTUFUQ0hFUik7XG4gICAgaWYgKGVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcGlsZUVudHJ5KGVudHJ5OiBzdHJpbmcsIGRlZmF1bHRNYXRjaGVyOiBQYXRoTWF0Y2hlcik6IENvbXBpbGVSZXN1bHQge1xuICBpZiAoZW50cnkgPT09ICcvJykge1xuICAgIHJldHVybiB7IG1hdGNoZXI6IGRlZmF1bHRNYXRjaGVyIH07XG4gIH1cblxuICBpZiAoUkVHX0VYUF9FTlRSWV9SRUdfRVhQLnRlc3QoZW50cnkpKSB7XG4gICAgY29uc3QgZmxhZ3NTZXBhcmF0b3JJbmRleCA9IGVudHJ5Lmxhc3RJbmRleE9mKCcvJyk7XG4gICAgcmV0dXJuIGNvbXBpbGVSZWdFeHBFbnRyeShlbnRyeSwgZW50cnkuc2xpY2UoMSwgZmxhZ3NTZXBhcmF0b3JJbmRleCksIGVudHJ5LnNsaWNlKGZsYWdzU2VwYXJhdG9ySW5kZXggKyAxKSk7XG4gIH1cblxuICByZXR1cm4gaGFzVW5lc2NhcGVkR2xvYkNoYXJhY3RlcihlbnRyeSkgPyBjb21waWxlR2xvYkVudHJ5KGVudHJ5KSA6IGNvbXBpbGVQbGFpblBhdGhFbnRyeShlbnRyeSk7XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVHbG9iRW50cnkoZ2xvYjogc3RyaW5nKTogQ29tcGlsZVJlc3VsdCB7XG4gIGNvbnN0IGlzRm9sZGVyT25seSA9IGdsb2IuZW5kc1dpdGgoJy8nKTtcbiAgY29uc3QgYm9keSA9IGdsb2IucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG4gIGNvbnN0IGdsb2JTb3VyY2UgPSBnZXRHbG9iU291cmNlKGJvZHkpO1xuICBpZiAoIWdsb2JTb3VyY2UuaXNWYWxpZCkge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcjogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnBhdGhTZXR0aW5ncy5pbnZhbGlkR2xvYiwgeyBnbG9iLCByZWFzb246IGdsb2JTb3VyY2UuZXJyb3IgfSlcbiAgICB9O1xuICB9XG4gIGNvbnN0IHsgc291cmNlIH0gPSBnbG9iU291cmNlO1xuXG4gIGNvbnN0IHByZWZpeCA9IGJvZHkuaW5jbHVkZXMoJy8nKSA/ICdeJyA6ICcoPzpefC8pJztcblxuICBsZXQgc2VsZlJlZ0V4cDogUmVnRXhwO1xuICBsZXQgY29udGVudHNSZWdFeHA6IFJlZ0V4cDtcbiAgdHJ5IHtcbiAgICBzZWxmUmVnRXhwID0gbmV3IFJlZ0V4cChgJHtwcmVmaXh9JHtzb3VyY2V9JGAsIENBU0VfSU5TRU5TSVRJVkVfRkxBRyk7XG4gICAgY29udGVudHNSZWdFeHAgPSBuZXcgUmVnRXhwKGAke3ByZWZpeH0ke3NvdXJjZX0vYCwgQ0FTRV9JTlNFTlNJVElWRV9GTEFHKTtcbiAgfSBjYXRjaCAoZXJyb3JfKSB7XG4gICAgLy8gQW4gb3V0LW9mLW9yZGVyIGNoYXJhY3RlciBjbGFzcyByYW5nZSAoYFt6LWFdYCkgaXMgdGhlIG9uZSBpbnZhbGlkIGdsb2Igb25seSB0aGUgZW5naW5lIGNhbiB0ZWxsLlxuICAgIHJldHVybiB7XG4gICAgICBlcnJvcjogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnBhdGhTZXR0aW5ncy5pbnZhbGlkR2xvYiwgeyBnbG9iLCByZWFzb246IGdldFJlZ0V4cEVycm9yUmVhc29uKGVycm9yXykgfSlcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtYXRjaGVyOiB7XG4gICAgICBpc01hdGNoOiAocGF0aCwgaXNGb2xkZXIpID0+IGNvbnRlbnRzUmVnRXhwLnRlc3QocGF0aCkgfHwgKChpc0ZvbGRlciB8fCAhaXNGb2xkZXJPbmx5KSAmJiBzZWxmUmVnRXhwLnRlc3QocGF0aCkpXG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb21waWxlUGxhaW5QYXRoRW50cnkocGF0aDogc3RyaW5nKTogQ29tcGlsZVJlc3VsdCB7XG4gIGNvbnN0IHVuZXNjYXBlZFBhdGggPSBwYXRoLnJlcGxhY2VBbGwoL1xcXFwoPzxjaGFyYWN0ZXI+LikvZ3MsICckPGNoYXJhY3Rlcj4nKS5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChgXiR7ZXNjYXBlUmVnRXhwKHVuZXNjYXBlZFBhdGgpfSg/Oi98JClgLCBDQVNFX0lOU0VOU0lUSVZFX0ZMQUcpO1xuICByZXR1cm4ge1xuICAgIG1hdGNoZXI6IHtcbiAgICAgIGlzTWF0Y2g6IChwYXRoVG9DaGVjaykgPT4gcmVnRXhwLnRlc3QocGF0aFRvQ2hlY2spXG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb21waWxlUmVnRXhwRW50cnkoZW50cnk6IHN0cmluZywgc291cmNlOiBzdHJpbmcsIGZsYWdzOiBzdHJpbmcpOiBDb21waWxlUmVzdWx0IHtcbiAgbGV0IHJlZ0V4cDogUmVnRXhwO1xuICB0cnkge1xuICAgIC8vIENvbXBpbGVkIHdpdGggdGhlIGZsYWdzIGFzIHdyaXR0ZW4gZmlyc3QsIHNvIGFuIHVua25vd24gb3IgcmVwZWF0ZWQgZmxhZyBpcyByZXBvcnRlZCByYXRoZXIgdGhhbiBpZ25vcmVkLlxuICAgIG5ldyBSZWdFeHAoc291cmNlLCBmbGFncyk7XG4gICAgY29uc3QgZWZmZWN0aXZlRmxhZ3MgPSBmbGFncy5yZXBsYWNlQWxsKFNUQVRFRlVMX0ZMQUdTX1JFR19FWFAsICcnKTtcbiAgICByZWdFeHAgPSBuZXcgUmVnRXhwKHNvdXJjZSwgZWZmZWN0aXZlRmxhZ3MuaW5jbHVkZXMoQ0FTRV9JTlNFTlNJVElWRV9GTEFHKSA/IGVmZmVjdGl2ZUZsYWdzIDogYCR7ZWZmZWN0aXZlRmxhZ3N9JHtDQVNFX0lOU0VOU0lUSVZFX0ZMQUd9YCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8gQSBwYXJ0aWFsbHkgdHlwZWQgcmVnZXggbGl0ZXJhbCAoYC9eSW5ib3hcXC9gKSBpcyBub3QgcGFyc2VhYmxlLlxuICAgIC8vIFJlcG9ydCBpdCBpbnN0ZWFkIG9mIHRocm93aW5nIGZyb20gYSBzZXR0aW5ncyBzZXR0ZXIsIHdoaWNoIHdvdWxkIGJyZWFrIGJvdGggdGhlIHNldHRpbmdzIFVJIGFuZCB0aGUgc2F2ZSBwYXRoLlxuICAgIHJldHVybiB7XG4gICAgICBlcnJvcjogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnBhdGhTZXR0aW5ncy5pbnZhbGlkUmVndWxhckV4cHJlc3Npb24sIHsgcmVhc29uOiBnZXRSZWdFeHBFcnJvclJlYXNvbihlcnJvciksIHJlZ0V4cDogZW50cnkgfSlcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtYXRjaGVyOiB7XG4gICAgICBpc01hdGNoOiAocGF0aCkgPT4gcmVnRXhwLnRlc3QocGF0aClcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUNoYXJhY3RlckNsYXNzQ2hhcmFjdGVyKGNoYXJhY3Rlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIC9bLVxcXFxcXF1eW10vLnRlc3QoY2hhcmFjdGVyKSA/IGBcXFxcJHtjaGFyYWN0ZXJ9YCA6IGNoYXJhY3Rlcjtcbn1cblxuZnVuY3Rpb24gZ2V0Q2hhcmFjdGVyQ2xhc3NTb3VyY2UoZ2xvYjogc3RyaW5nLCBvcGVuSW5kZXg6IG51bWJlcik6IENoYXJhY3RlckNsYXNzU291cmNlUmVzdWx0IHtcbiAgbGV0IGluZGV4ID0gb3BlbkluZGV4ICsgMTtcbiAgbGV0IGlzTmVnYXRlZCA9IGZhbHNlO1xuICBpZiAoZ2xvYltpbmRleF0gPT09ICchJyB8fCBnbG9iW2luZGV4XSA9PT0gJ14nKSB7XG4gICAgaXNOZWdhdGVkID0gdHJ1ZTtcbiAgICBpbmRleCsrO1xuICB9XG5cbiAgbGV0IGNvbnRlbnQgPSAnJztcbiAgaWYgKGdsb2JbaW5kZXhdID09PSAnXScpIHtcbiAgICBjb250ZW50ICs9IFN0cmluZy5yYXdgXFxdYDtcbiAgICBpbmRleCsrO1xuICB9XG5cbiAgd2hpbGUgKGluZGV4IDwgZ2xvYi5sZW5ndGgpIHtcbiAgICBjb25zdCBjaGFyYWN0ZXIgPSBnbG9iLmNoYXJBdChpbmRleCk7XG4gICAgaWYgKGNoYXJhY3RlciA9PT0gJ10nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbmRJbmRleDogaW5kZXggKyAxLFxuICAgICAgICBpc1ZhbGlkOiB0cnVlLFxuICAgICAgICBzb3VyY2U6IGBbJHtpc05lZ2F0ZWQgPyAnXi8nIDogJyd9JHtjb250ZW50fV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChjaGFyYWN0ZXIgPT09ICdcXFxcJykge1xuICAgICAgaW5kZXgrKztcbiAgICAgIGlmIChpbmRleCA+PSBnbG9iLmxlbmd0aCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQgKz0gZXNjYXBlQ2hhcmFjdGVyQ2xhc3NDaGFyYWN0ZXIoZ2xvYi5jaGFyQXQoaW5kZXgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCArPSBjaGFyYWN0ZXIgPT09ICctJyA/IGNoYXJhY3RlciA6IGVzY2FwZUNoYXJhY3RlckNsYXNzQ2hhcmFjdGVyKGNoYXJhY3Rlcik7XG4gICAgfVxuICAgIGluZGV4Kys7XG4gIH1cblxuICByZXR1cm4geyBlcnJvcjogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnBhdGhTZXR0aW5ncy51bmNsb3NlZENoYXJhY3RlckNsYXNzKSwgaXNWYWxpZDogZmFsc2UgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdE1hdGNoZXIodHlwZTogUGF0aFNldHRpbmdUeXBlKTogUGF0aE1hdGNoZXIge1xuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWxsIGJyYW5jaGVzIGNvdmVyZWQgYnV0IHY4IHJlcG9ydHMgc3dpdGNoIGFzIHBhcnRpYWwuICovXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgY2FzZSBQYXRoU2V0dGluZ1R5cGUuRXhjbHVkZToge1xuICAgICAgcmV0dXJuIE5FVkVSX01BVENIRVI7XG4gICAgfVxuICAgIGNhc2UgUGF0aFNldHRpbmdUeXBlLkluY2x1ZGU6IHtcbiAgICAgIHJldHVybiBBTFdBWVNfTUFUQ0hFUjtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEV4aGF1c3RpdmUgc3dpdGNoIGd1YXJkLiAqL1xuICAgICAgYXNzZXJ0TmV2ZXIodHlwZSk7XG4gICAgfVxuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRHbG9iU291cmNlKGdsb2I6IHN0cmluZyk6IEdsb2JTb3VyY2VSZXN1bHQge1xuICBsZXQgc291cmNlID0gJyc7XG4gIGxldCBpbmRleCA9IDA7XG5cbiAgd2hpbGUgKGluZGV4IDwgZ2xvYi5sZW5ndGgpIHtcbiAgICBjb25zdCBjaGFyYWN0ZXIgPSBnbG9iLmNoYXJBdChpbmRleCk7XG4gICAgc3dpdGNoIChjaGFyYWN0ZXIpIHtcbiAgICAgIGNhc2UgJz8nOiB7XG4gICAgICAgIHNvdXJjZSArPSAnW14vXSc7XG4gICAgICAgIGluZGV4Kys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnWyc6IHtcbiAgICAgICAgY29uc3QgY2hhcmFjdGVyQ2xhc3MgPSBnZXRDaGFyYWN0ZXJDbGFzc1NvdXJjZShnbG9iLCBpbmRleCk7XG4gICAgICAgIGlmICghY2hhcmFjdGVyQ2xhc3MuaXNWYWxpZCkge1xuICAgICAgICAgIHJldHVybiBjaGFyYWN0ZXJDbGFzcztcbiAgICAgICAgfVxuICAgICAgICBzb3VyY2UgKz0gY2hhcmFjdGVyQ2xhc3Muc291cmNlO1xuICAgICAgICBpbmRleCA9IGNoYXJhY3RlckNsYXNzLmVuZEluZGV4O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJyonOiB7XG4gICAgICAgIGlmICghZ2xvYi5zdGFydHNXaXRoKEdMT0JTVEFSLCBpbmRleCkpIHtcbiAgICAgICAgICBzb3VyY2UgKz0gJ1teL10qJztcbiAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNTZWdtZW50U3RhcnQgPSBpbmRleCA9PT0gMCB8fCBnbG9iW2luZGV4IC0gMV0gPT09ICcvJztcbiAgICAgICAgaWYgKGlzU2VnbWVudFN0YXJ0ICYmIGdsb2Iuc3RhcnRzV2l0aChHTE9CU1RBUl9GT0xERVJTLCBpbmRleCkpIHtcbiAgICAgICAgICAvLyBgKiovYCBpcyB6ZXJvIG9yIG1vcmUgd2hvbGUgZm9sZGVycy5cbiAgICAgICAgICBzb3VyY2UgKz0gJyg/OlteL10qLykqJztcbiAgICAgICAgICBpbmRleCArPSBHTE9CU1RBUl9GT0xERVJTLmxlbmd0aDtcbiAgICAgICAgfSBlbHNlIGlmIChpc1NlZ21lbnRTdGFydCAmJiBpbmRleCArIEdMT0JTVEFSLmxlbmd0aCA9PT0gZ2xvYi5sZW5ndGgpIHtcbiAgICAgICAgICAvLyBBIHRyYWlsaW5nIGAvKipgIGlzIGV2ZXJ5dGhpbmcgaW5zaWRlIHRoZSBmb2xkZXIuXG4gICAgICAgICAgc291cmNlICs9ICcuKic7XG4gICAgICAgICAgaW5kZXggKz0gR0xPQlNUQVIubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEFueSBvdGhlciBgKipgIGlzIGFuIG9yZGluYXJ5IGAqYCwgYXMgaW4gYC5naXRpZ25vcmVgLlxuICAgICAgICAgIHNvdXJjZSArPSAnW14vXSonO1xuICAgICAgICAgIGluZGV4ICs9IEdMT0JTVEFSLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1xcXFwnOiB7XG4gICAgICAgIGluZGV4Kys7XG4gICAgICAgIGlmIChpbmRleCA+PSBnbG9iLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiB7IGVycm9yOiB0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMucGF0aFNldHRpbmdzLnRyYWlsaW5nRXNjYXBlKSwgaXNWYWxpZDogZmFsc2UgfTtcbiAgICAgICAgfVxuICAgICAgICBzb3VyY2UgKz0gZXNjYXBlUmVnRXhwKGdsb2IuY2hhckF0KGluZGV4KSk7XG4gICAgICAgIGluZGV4Kys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBzb3VyY2UgKz0gZXNjYXBlUmVnRXhwKGNoYXJhY3Rlcik7XG4gICAgICAgIGluZGV4Kys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIHNvdXJjZSB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWdFeHBFcnJvclJlYXNvbihlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGUgUmVnRXhwIGNvbnN0cnVjdG9yIG9ubHkgZXZlciB0aHJvd3MgYSBTeW50YXhFcnJvci4gKi9cbiAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgLy8gVjggcGhyYXNlcyBpdCBgSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IC88c291cmNlPi88ZmxhZ3M+OiA8cmVhc29uPmA7IHRoZSBlbnRyeSBpcyBhbHJlYWR5IG5hbWVkLlxuICBjb25zdCBtYXRjaCA9IC9eSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IFxcLy4qXFwvW2Etel0qOiAoPzxyZWFzb24+LiopJC9zLmV4ZWMobWVzc2FnZSk7XG4gIHJldHVybiBtYXRjaD8uZ3JvdXBzPy5bJ3JlYXNvbiddID8/IG1lc3NhZ2U7XG59XG5cbmZ1bmN0aW9uIGhhc1VuZXNjYXBlZEdsb2JDaGFyYWN0ZXIoZW50cnk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZW50cnkubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgY2hhcmFjdGVyID0gZW50cnkuY2hhckF0KGluZGV4KTtcbiAgICBpZiAoY2hhcmFjdGVyID09PSAnXFxcXCcpIHtcbiAgICAgIGluZGV4Kys7XG4gICAgfSBlbHNlIGlmIChHTE9CX0NIQVJBQ1RFUlMuaGFzKGNoYXJhY3RlcikpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG1ha2VNYXRjaGVycyhwYXRoczogc3RyaW5nW10sIGRlZmF1bHRNYXRjaGVyOiBQYXRoTWF0Y2hlcik6IG51bGwgfCBQYXRoTWF0Y2hlcltdIHtcbiAgaWYgKHBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbZGVmYXVsdE1hdGNoZXJdO1xuICB9XG5cbiAgY29uc3QgbWF0Y2hlcnM6IFBhdGhNYXRjaGVyW10gPSBbXTtcbiAgZm9yIChjb25zdCBwYXRoIG9mIHBhdGhzKSB7XG4gICAgY29uc3QgeyBtYXRjaGVyIH0gPSBjb21waWxlRW50cnkocGF0aCwgZGVmYXVsdE1hdGNoZXIpO1xuICAgIGlmICghbWF0Y2hlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIG1hdGNoZXJzLnB1c2gobWF0Y2hlcik7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXJzO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtQkEscUJBQTZCO0FBQzdCLHlCQUE0QjtBQUU1QixrQkFBa0I7QUFrQ2xCLE1BQU0sd0JBQXdCO0FBQzlCLE1BQU0sd0JBQXdCO0FBQzlCLE1BQU0seUJBQXlCO0FBQy9CLE1BQU0sa0JBQWtCLG9CQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDO0FBQy9DLE1BQU0sV0FBVztBQUNqQixNQUFNLG1CQUFtQjtBQUV6QixNQUFNLGlCQUE4QjtBQUFBLEVBQ2xDLFNBQVMsTUFBTTtBQUNqQjtBQUVBLE1BQU0sZ0JBQTZCO0FBQUEsRUFDakMsU0FBUyxNQUFNO0FBQ2pCO0FBRUEsTUFBTSxZQUFZO0FBQUEsRUFjVCxZQUE2QixNQUF1QjtBQUF2QjtBQUNsQyxTQUFLLGlCQUFpQixrQkFBa0IsSUFBSTtBQUM1QyxTQUFLLFdBQVcsQ0FBQyxLQUFLLGNBQWM7QUFBQSxFQUN0QztBQUFBLEVBSG9DO0FBQUEsRUFicEMsSUFBVyxRQUFrQjtBQUMzQixXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUEsRUFFQSxJQUFXLE1BQU0sT0FBaUI7QUFDaEMsU0FBSyxTQUFTLE1BQU0sT0FBTyxPQUFPO0FBQ2xDLFNBQUssV0FBVyxhQUFhLEtBQUssUUFBUSxLQUFLLGNBQWMsS0FBSyxDQUFDLEtBQUssY0FBYztBQUFBLEVBQ3hGO0FBQUEsRUFFUSxTQUFtQixDQUFDO0FBQUEsRUFDWDtBQUFBLEVBQ1Q7QUFBQSxFQU9ELGNBQWMsTUFBYyxVQUE0QjtBQUM3RCxVQUFNLFVBQVUsS0FBSyxTQUFTLEtBQUssQ0FBQyxZQUFZLFFBQVEsUUFBUSxNQUFNLFFBQVEsQ0FBQztBQUUvRSxZQUFRLEtBQUssTUFBTTtBQUFBO0FBQUEsTUFFakIsS0FBSyx5QkFBeUI7QUFDNUIsZUFBTztBQUFBLE1BQ1Q7QUFBQSxNQUNBLEtBQUsseUJBQXlCO0FBQzVCLGVBQU8sQ0FBQztBQUFBLE1BQ1Y7QUFBQSxNQUNBLFNBQVM7QUFFUCw0Q0FBWSxLQUFLLElBQUk7QUFBQSxNQUN2QjtBQUFBLElBRUY7QUFBQSxFQUNGO0FBQ0Y7QUFRTyxNQUFNLGFBQWE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNeEIsSUFBVyxlQUF5QjtBQUNsQyxXQUFPLEtBQUssY0FBYztBQUFBLEVBQzVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBVyxhQUFhLE9BQWlCO0FBQ3ZDLFNBQUssY0FBYyxRQUFRO0FBQUEsRUFDN0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFXLGVBQXlCO0FBQ2xDLFdBQU8sS0FBSyxjQUFjO0FBQUEsRUFDNUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFXLGFBQWEsT0FBaUI7QUFDdkMsU0FBSyxjQUFjLFFBQVE7QUFBQSxFQUM3QjtBQUFBLEVBRWlCLGdCQUFnQixJQUFJLFlBQVksdUJBQXVCO0FBQUEsRUFDdkQsZ0JBQWdCLElBQUksWUFBWSx1QkFBdUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFVakUsY0FBYyxNQUFjLFdBQVcsT0FBZ0I7QUFDNUQsV0FBTyxLQUFLLGNBQWMsY0FBYyxNQUFNLFFBQVEsS0FBSyxLQUFLLGNBQWMsY0FBYyxNQUFNLFFBQVE7QUFBQSxFQUM1RztBQUNGO0FBWU8sU0FBUyxlQUFlLE9BQXNDO0FBQ25FLGFBQVcsUUFBUSxPQUFPO0FBQ3hCLFVBQU0sRUFBRSxNQUFNLElBQUksYUFBYSxNQUFNLGFBQWE7QUFDbEQsUUFBSSxVQUFVLFFBQVc7QUFDdkIsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxTQUFTLGFBQWEsT0FBZSxnQkFBNEM7QUFDL0UsTUFBSSxVQUFVLEtBQUs7QUFDakIsV0FBTyxFQUFFLFNBQVMsZUFBZTtBQUFBLEVBQ25DO0FBRUEsTUFBSSxzQkFBc0IsS0FBSyxLQUFLLEdBQUc7QUFDckMsVUFBTSxzQkFBc0IsTUFBTSxZQUFZLEdBQUc7QUFDakQsV0FBTyxtQkFBbUIsT0FBTyxNQUFNLE1BQU0sR0FBRyxtQkFBbUIsR0FBRyxNQUFNLE1BQU0sc0JBQXNCLENBQUMsQ0FBQztBQUFBLEVBQzVHO0FBRUEsU0FBTywwQkFBMEIsS0FBSyxJQUFJLGlCQUFpQixLQUFLLElBQUksc0JBQXNCLEtBQUs7QUFDakc7QUFFQSxTQUFTLGlCQUFpQixNQUE2QjtBQUNyRCxRQUFNLGVBQWUsS0FBSyxTQUFTLEdBQUc7QUFDdEMsUUFBTSxPQUFPLEtBQUssUUFBUSxRQUFRLEVBQUU7QUFDcEMsUUFBTSxhQUFhLGNBQWMsSUFBSTtBQUNyQyxNQUFJLENBQUMsV0FBVyxTQUFTO0FBQ3ZCLFdBQU87QUFBQSxNQUNMLFdBQU8sZUFBRSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsYUFBYSxhQUFhLEVBQUUsTUFBTSxRQUFRLFdBQVcsTUFBTSxDQUFDO0FBQUEsSUFDakc7QUFBQSxFQUNGO0FBQ0EsUUFBTSxFQUFFLE9BQU8sSUFBSTtBQUVuQixRQUFNLFNBQVMsS0FBSyxTQUFTLEdBQUcsSUFBSSxNQUFNO0FBRTFDLE1BQUk7QUFDSixNQUFJO0FBQ0osTUFBSTtBQUNGLGlCQUFhLElBQUksT0FBTyxHQUFHLE1BQU0sR0FBRyxNQUFNLEtBQUsscUJBQXFCO0FBQ3BFLHFCQUFpQixJQUFJLE9BQU8sR0FBRyxNQUFNLEdBQUcsTUFBTSxLQUFLLHFCQUFxQjtBQUFBLEVBQzFFLFNBQVMsUUFBUTtBQUVmLFdBQU87QUFBQSxNQUNMLFdBQU8sZUFBRSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsYUFBYSxhQUFhLEVBQUUsTUFBTSxRQUFRLHFCQUFxQixNQUFNLEVBQUUsQ0FBQztBQUFBLElBQzdHO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFBQSxJQUNMLFNBQVM7QUFBQSxNQUNQLFNBQVMsQ0FBQyxNQUFNLGFBQWEsZUFBZSxLQUFLLElBQUksTUFBTyxZQUFZLENBQUMsaUJBQWlCLFdBQVcsS0FBSyxJQUFJO0FBQUEsSUFDaEg7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxTQUFTLHNCQUFzQixNQUE2QjtBQUMxRCxRQUFNLGdCQUFnQixLQUFLLFdBQVcsdUJBQXVCLGNBQWMsRUFBRSxRQUFRLFFBQVEsRUFBRTtBQUMvRixRQUFNLFNBQVMsSUFBSSxPQUFPLFFBQUksNkJBQWEsYUFBYSxDQUFDLFdBQVcscUJBQXFCO0FBQ3pGLFNBQU87QUFBQSxJQUNMLFNBQVM7QUFBQSxNQUNQLFNBQVMsQ0FBQyxnQkFBZ0IsT0FBTyxLQUFLLFdBQVc7QUFBQSxJQUNuRDtBQUFBLEVBQ0Y7QUFDRjtBQUVBLFNBQVMsbUJBQW1CLE9BQWUsUUFBZ0IsT0FBOEI7QUFDdkYsTUFBSTtBQUNKLE1BQUk7QUFFRixRQUFJLE9BQU8sUUFBUSxLQUFLO0FBQ3hCLFVBQU0saUJBQWlCLE1BQU0sV0FBVyx3QkFBd0IsRUFBRTtBQUNsRSxhQUFTLElBQUksT0FBTyxRQUFRLGVBQWUsU0FBUyxxQkFBcUIsSUFBSSxpQkFBaUIsR0FBRyxjQUFjLEdBQUcscUJBQXFCLEVBQUU7QUFBQSxFQUMzSSxTQUFTLE9BQU87QUFHZCxXQUFPO0FBQUEsTUFDTCxXQUFPLGVBQUUsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLGFBQWEsMEJBQTBCLEVBQUUsUUFBUSxxQkFBcUIsS0FBSyxHQUFHLFFBQVEsTUFBTSxDQUFDO0FBQUEsSUFDbEk7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUFBLElBQ0wsU0FBUztBQUFBLE1BQ1AsU0FBUyxDQUFDLFNBQVMsT0FBTyxLQUFLLElBQUk7QUFBQSxJQUNyQztBQUFBLEVBQ0Y7QUFDRjtBQUVBLFNBQVMsOEJBQThCLFdBQTJCO0FBQ2hFLFNBQU8sWUFBWSxLQUFLLFNBQVMsSUFBSSxLQUFLLFNBQVMsS0FBSztBQUMxRDtBQUVBLFNBQVMsd0JBQXdCLE1BQWMsV0FBK0M7QUFDNUYsTUFBSSxRQUFRLFlBQVk7QUFDeEIsTUFBSSxZQUFZO0FBQ2hCLE1BQUksS0FBSyxLQUFLLE1BQU0sT0FBTyxLQUFLLEtBQUssTUFBTSxLQUFLO0FBQzlDLGdCQUFZO0FBQ1o7QUFBQSxFQUNGO0FBRUEsTUFBSSxVQUFVO0FBQ2QsTUFBSSxLQUFLLEtBQUssTUFBTSxLQUFLO0FBQ3ZCLGVBQVcsT0FBTztBQUNsQjtBQUFBLEVBQ0Y7QUFFQSxTQUFPLFFBQVEsS0FBSyxRQUFRO0FBQzFCLFVBQU0sWUFBWSxLQUFLLE9BQU8sS0FBSztBQUNuQyxRQUFJLGNBQWMsS0FBSztBQUNyQixhQUFPO0FBQUEsUUFDTCxVQUFVLFFBQVE7QUFBQSxRQUNsQixTQUFTO0FBQUEsUUFDVCxRQUFRLElBQUksWUFBWSxPQUFPLEVBQUUsR0FBRyxPQUFPO0FBQUEsTUFDN0M7QUFBQSxJQUNGO0FBRUEsUUFBSSxjQUFjLE1BQU07QUFDdEI7QUFDQSxVQUFJLFNBQVMsS0FBSyxRQUFRO0FBQ3hCO0FBQUEsTUFDRjtBQUNBLGlCQUFXLDhCQUE4QixLQUFLLE9BQU8sS0FBSyxDQUFDO0FBQUEsSUFDN0QsT0FBTztBQUNMLGlCQUFXLGNBQWMsTUFBTSxZQUFZLDhCQUE4QixTQUFTO0FBQUEsSUFDcEY7QUFDQTtBQUFBLEVBQ0Y7QUFFQSxTQUFPLEVBQUUsV0FBTyxlQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQixhQUFhLHNCQUFzQixHQUFHLFNBQVMsTUFBTTtBQUNuRztBQUVBLFNBQVMsa0JBQWtCLE1BQW9DO0FBRTdELFVBQVEsTUFBTTtBQUFBO0FBQUEsSUFFWixLQUFLLHlCQUF5QjtBQUM1QixhQUFPO0FBQUEsSUFDVDtBQUFBLElBQ0EsS0FBSyx5QkFBeUI7QUFDNUIsYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLFNBQVM7QUFFUCwwQ0FBWSxJQUFJO0FBQUEsSUFDbEI7QUFBQSxFQUVGO0FBQ0Y7QUFFQSxTQUFTLGNBQWMsTUFBZ0M7QUFDckQsTUFBSSxTQUFTO0FBQ2IsTUFBSSxRQUFRO0FBRVosU0FBTyxRQUFRLEtBQUssUUFBUTtBQUMxQixVQUFNLFlBQVksS0FBSyxPQUFPLEtBQUs7QUFDbkMsWUFBUSxXQUFXO0FBQUEsTUFDakIsS0FBSyxLQUFLO0FBQ1Isa0JBQVU7QUFDVjtBQUNBO0FBQUEsTUFDRjtBQUFBLE1BQ0EsS0FBSyxLQUFLO0FBQ1IsY0FBTSxpQkFBaUIsd0JBQXdCLE1BQU0sS0FBSztBQUMxRCxZQUFJLENBQUMsZUFBZSxTQUFTO0FBQzNCLGlCQUFPO0FBQUEsUUFDVDtBQUNBLGtCQUFVLGVBQWU7QUFDekIsZ0JBQVEsZUFBZTtBQUN2QjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLEtBQUssS0FBSztBQUNSLFlBQUksQ0FBQyxLQUFLLFdBQVcsVUFBVSxLQUFLLEdBQUc7QUFDckMsb0JBQVU7QUFDVjtBQUNBO0FBQUEsUUFDRjtBQUVBLGNBQU0saUJBQWlCLFVBQVUsS0FBSyxLQUFLLFFBQVEsQ0FBQyxNQUFNO0FBQzFELFlBQUksa0JBQWtCLEtBQUssV0FBVyxrQkFBa0IsS0FBSyxHQUFHO0FBRTlELG9CQUFVO0FBQ1YsbUJBQVMsaUJBQWlCO0FBQUEsUUFDNUIsV0FBVyxrQkFBa0IsUUFBUSxTQUFTLFdBQVcsS0FBSyxRQUFRO0FBRXBFLG9CQUFVO0FBQ1YsbUJBQVMsU0FBUztBQUFBLFFBQ3BCLE9BQU87QUFFTCxvQkFBVTtBQUNWLG1CQUFTLFNBQVM7QUFBQSxRQUNwQjtBQUNBO0FBQUEsTUFDRjtBQUFBLE1BQ0EsS0FBSyxNQUFNO0FBQ1Q7QUFDQSxZQUFJLFNBQVMsS0FBSyxRQUFRO0FBQ3hCLGlCQUFPLEVBQUUsV0FBTyxlQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQixhQUFhLGNBQWMsR0FBRyxTQUFTLE1BQU07QUFBQSxRQUMzRjtBQUNBLHNCQUFVLDZCQUFhLEtBQUssT0FBTyxLQUFLLENBQUM7QUFDekM7QUFDQTtBQUFBLE1BQ0Y7QUFBQSxNQUNBLFNBQVM7QUFDUCxzQkFBVSw2QkFBYSxTQUFTO0FBQ2hDO0FBQ0E7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxTQUFPLEVBQUUsU0FBUyxNQUFNLE9BQU87QUFDakM7QUFFQSxTQUFTLHFCQUFxQixPQUF3QjtBQUVwRCxRQUFNLFVBQVUsaUJBQWlCLFFBQVEsTUFBTSxVQUFVLE9BQU8sS0FBSztBQUdyRSxRQUFNLFFBQVEsNkRBQTZELEtBQUssT0FBTztBQUN2RixTQUFPLE9BQU8sU0FBUyxRQUFRLEtBQUs7QUFDdEM7QUFFQSxTQUFTLDBCQUEwQixPQUF3QjtBQUN6RCxXQUFTLFFBQVEsR0FBRyxRQUFRLE1BQU0sUUFBUSxTQUFTO0FBQ2pELFVBQU0sWUFBWSxNQUFNLE9BQU8sS0FBSztBQUNwQyxRQUFJLGNBQWMsTUFBTTtBQUN0QjtBQUFBLElBQ0YsV0FBVyxnQkFBZ0IsSUFBSSxTQUFTLEdBQUc7QUFDekMsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBQ0EsU0FBTztBQUNUO0FBRUEsU0FBUyxhQUFhLE9BQWlCLGdCQUFtRDtBQUN4RixNQUFJLE1BQU0sV0FBVyxHQUFHO0FBQ3RCLFdBQU8sQ0FBQyxjQUFjO0FBQUEsRUFDeEI7QUFFQSxRQUFNLFdBQTBCLENBQUM7QUFDakMsYUFBVyxRQUFRLE9BQU87QUFDeEIsVUFBTSxFQUFFLFFBQVEsSUFBSSxhQUFhLE1BQU0sY0FBYztBQUNyRCxRQUFJLENBQUMsU0FBUztBQUNaLGFBQU87QUFBQSxJQUNUO0FBQ0EsYUFBUyxLQUFLLE9BQU87QUFBQSxFQUN2QjtBQUNBLFNBQU87QUFDVDsiLCJuYW1lcyI6W119
430
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXRoLXNldHRpbmdzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCB2YWxpZGF0b3JzIGZvciBtYW5hZ2luZyBpbmNsdWRlL2V4Y2x1ZGUgcGF0aCBzZXR0aW5ncy5cbiAqXG4gKiBBbiBlbnRyeSB0YWtlcyBvbmUgb2YgdGhyZWUgZm9ybXMsIGFuZCBldmVyeSBmb3JtIG1hdGNoZXMgY2FzZS1pbnNlbnNpdGl2ZWx5OlxuICpcbiAqIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGl0ZXJhbCwgYC9wYXR0ZXJuL2ZsYWdzYC4gSXRzIG93biBmbGFncyBhcmUgaG9ub3VyZWQgYW5kIGBpYCBpcyBhbHdheXMgYWRkZWQuIGBnYCBhbmQgYHlgIGFyZVxuICogICBhY2NlcHRlZCBhbmQgZHJvcHBlZCwgc2luY2UgdGhleSBtYWtlIGBSZWdFeHAudGVzdGAgc3RhdGVmdWwgYW5kIHNheSBub3RoaW5nIGFib3V0IHdoaWNoIHBhdGhzIG1hdGNoLlxuICogLSBBIGdsb2IsIGFuIGVudHJ5IGhvbGRpbmcgYW4gdW5lc2NhcGVkIGAqYCwgYD9gIG9yIGBbYC4gYCpgIG1hdGNoZXMgd2l0aGluIG9uZSBwYXRoIHNlZ21lbnQsIGAqKmAgYWNyb3NzIHNlZ21lbnRzLFxuICogICBgP2Agb25lIGNoYXJhY3RlciBhbmQgYFthYmNdYCAvIGBbIWFiY11gIGEgY2hhcmFjdGVyIGNsYXNzLiBBIGdsb2Igd2l0aCBubyBgL2AgbWF0Y2hlcyBhIGZpbGUgb3IgZm9sZGVyIE5BTUUgYXQgYW55XG4gKiAgIGRlcHRoLCBhcyBpbiBgLmdpdGlnbm9yZWAgKGAqLnBkZmAgbWF0Y2hlcyBgYS9iL2MucGRmYCk7IG9uZSB3aXRoIGEgYC9gIGlzIGFuY2hvcmVkIHRvIHRoZSB2YXVsdCByb290XG4gKiAgIChgQXR0YWNobWVudHMvKi5wZGZgKS4gQSB0cmFpbGluZyBgL2AgbWFrZXMgaXQgbWF0Y2ggZm9sZGVycyBvbmx5LlxuICogLSBBIHBsYWluIHBhdGgsIGV2ZXJ5IG90aGVyIGVudHJ5LCB3aGljaCBtYXRjaGVzIHRoYXQgcGF0aCBhbmQgZXZlcnl0aGluZyBpbnNpZGUgaXQuIEEgbGl0ZXJhbCBgKmAsIGA/YCwgYFtgIG9yIGBcXGAgaW5cbiAqICAgYSBwbGFpbiBwYXRoIG9yIGEgZ2xvYiBpcyB3cml0dGVuIGVzY2FwZWQgKGBcXCpgKS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE1heWJlUmV0dXJuIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUnO1xuXG5pbXBvcnQgeyBlc2NhcGVSZWdFeHAgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcmVnLWV4cCc7XG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5cbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5cbmVudW0gUGF0aFNldHRpbmdUeXBlIHtcbiAgRXhjbHVkZSA9ICdFeGNsdWRlJyxcbiAgSW5jbHVkZSA9ICdJbmNsdWRlJ1xufVxuXG50eXBlIENoYXJhY3RlckNsYXNzU291cmNlUmVzdWx0ID0gSW52YWxpZFNvdXJjZVJlc3VsdCB8IFZhbGlkQ2hhcmFjdGVyQ2xhc3NTb3VyY2VSZXN1bHQ7XG5cbmludGVyZmFjZSBDb21waWxlUmVzdWx0IHtcbiAgcmVhZG9ubHkgZXJyb3I/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1hdGNoZXI/OiBQYXRoTWF0Y2hlcjtcbn1cblxudHlwZSBHbG9iU291cmNlUmVzdWx0ID0gSW52YWxpZFNvdXJjZVJlc3VsdCB8IFZhbGlkR2xvYlNvdXJjZVJlc3VsdDtcblxuaW50ZXJmYWNlIEludmFsaWRTb3VyY2VSZXN1bHQge1xuICByZWFkb25seSBlcnJvcjogc3RyaW5nO1xuICByZWFkb25seSBpc1ZhbGlkOiBmYWxzZTtcbn1cblxuaW50ZXJmYWNlIFBhdGhNYXRjaGVyIHtcbiAgaXNNYXRjaDogKHBhdGg6IHN0cmluZywgaXNGb2xkZXI6IGJvb2xlYW4pID0+IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBWYWxpZENoYXJhY3RlckNsYXNzU291cmNlUmVzdWx0IGV4dGVuZHMgVmFsaWRHbG9iU291cmNlUmVzdWx0IHtcbiAgcmVhZG9ubHkgZW5kSW5kZXg6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFZhbGlkR2xvYlNvdXJjZVJlc3VsdCB7XG4gIHJlYWRvbmx5IGlzVmFsaWQ6IHRydWU7XG4gIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xufVxuXG5jb25zdCBSRUdfRVhQX0VOVFJZX1JFR19FWFAgPSAvXlxcLy4qXFwvW2Etel0qJC9zO1xuY29uc3QgQ0FTRV9JTlNFTlNJVElWRV9GTEFHID0gJ2knO1xuY29uc3QgU1RBVEVGVUxfRkxBR1NfUkVHX0VYUCA9IC9bZ3ldL2c7XG5jb25zdCBHTE9CX0NIQVJBQ1RFUlMgPSBuZXcgU2V0KFsnPycsICdbJywgJyonXSk7XG5jb25zdCBHTE9CU1RBUiA9ICcqKic7XG5jb25zdCBHTE9CU1RBUl9GT0xERVJTID0gJyoqLyc7XG5cbmNvbnN0IEFMV0FZU19NQVRDSEVSOiBQYXRoTWF0Y2hlciA9IHtcbiAgaXNNYXRjaDogKCkgPT4gdHJ1ZVxufTtcblxuY29uc3QgTkVWRVJfTUFUQ0hFUjogUGF0aE1hdGNoZXIgPSB7XG4gIGlzTWF0Y2g6ICgpID0+IGZhbHNlXG59O1xuXG5jbGFzcyBQYXRoU2V0dGluZyB7XG4gIHB1YmxpYyBnZXQgYXJyYXkoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9hcnJheTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgYXJyYXkodmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fYXJyYXkgPSB2YWx1ZS5maWx0ZXIoQm9vbGVhbik7XG4gICAgdGhpcy5tYXRjaGVycyA9IG1ha2VNYXRjaGVycyh0aGlzLl9hcnJheSwgdGhpcy5kZWZhdWx0TWF0Y2hlcikgPz8gW3RoaXMuZGVmYXVsdE1hdGNoZXJdO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXJyYXk6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdE1hdGNoZXI6IFBhdGhNYXRjaGVyO1xuICBwcml2YXRlIG1hdGNoZXJzOiBQYXRoTWF0Y2hlcltdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFBhdGhTZXR0aW5nVHlwZSkge1xuICAgIHRoaXMuZGVmYXVsdE1hdGNoZXIgPSBnZXREZWZhdWx0TWF0Y2hlcih0eXBlKTtcbiAgICB0aGlzLm1hdGNoZXJzID0gW3RoaXMuZGVmYXVsdE1hdGNoZXJdO1xuICB9XG5cbiAgcHVibGljIGlzUGF0aElnbm9yZWQocGF0aDogc3RyaW5nLCBpc0ZvbGRlcjogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzTWF0Y2ggPSB0aGlzLm1hdGNoZXJzLnNvbWUoKG1hdGNoZXIpID0+IG1hdGNoZXIuaXNNYXRjaChwYXRoLCBpc0ZvbGRlcikpO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbGwgYnJhbmNoZXMgY292ZXJlZCBidXQgdjggcmVwb3J0cyBzd2l0Y2ggYXMgcGFydGlhbC4gKi9cbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGNhc2UgUGF0aFNldHRpbmdUeXBlLkV4Y2x1ZGU6IHtcbiAgICAgICAgcmV0dXJuIGlzTWF0Y2g7XG4gICAgICB9XG4gICAgICBjYXNlIFBhdGhTZXR0aW5nVHlwZS5JbmNsdWRlOiB7XG4gICAgICAgIHJldHVybiAhaXNNYXRjaDtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEV4aGF1c3RpdmUgc3dpdGNoIGd1YXJkLiAqL1xuICAgICAgICBhc3NlcnROZXZlcih0aGlzLnR5cGUpO1xuICAgICAgfVxuICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEEgY2xhc3MgZm9yIG1hbmFnaW5nIGluY2x1ZGUvZXhjbHVkZSBwYXRoIHNldHRpbmdzLlxuICpcbiAqIFNlZSB0aGUgbW9kdWxlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBlbnRyeSBzeW50YXg6IHBsYWluIHBhdGhzLCBnbG9icyBhbmQgcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWxzLCBhbGwgbWF0Y2hlZFxuICogY2FzZS1pbnNlbnNpdGl2ZWx5LlxuICovXG5leHBvcnQgY2xhc3MgUGF0aFNldHRpbmdzIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIGV4Y2x1ZGUgcGF0aHMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBleGNsdWRlIHBhdGhzLlxuICAgKi9cbiAgcHVibGljIGdldCBleGNsdWRlUGF0aHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9leGNsdWRlUGF0aHMuYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZXhjbHVkZSBwYXRocy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGV4Y2x1ZGUgcGF0aHMuXG4gICAqL1xuICBwdWJsaWMgc2V0IGV4Y2x1ZGVQYXRocyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9leGNsdWRlUGF0aHMuYXJyYXkgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpbmNsdWRlIHBhdGhzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgaW5jbHVkZSBwYXRocy5cbiAgICovXG4gIHB1YmxpYyBnZXQgaW5jbHVkZVBhdGhzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5faW5jbHVkZVBhdGhzLmFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGluY2x1ZGUgcGF0aHMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBpbmNsdWRlIHBhdGhzLlxuICAgKi9cbiAgcHVibGljIHNldCBpbmNsdWRlUGF0aHModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5faW5jbHVkZVBhdGhzLmFycmF5ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9leGNsdWRlUGF0aHMgPSBuZXcgUGF0aFNldHRpbmcoUGF0aFNldHRpbmdUeXBlLkV4Y2x1ZGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmNsdWRlUGF0aHMgPSBuZXcgUGF0aFNldHRpbmcoUGF0aFNldHRpbmdUeXBlLkluY2x1ZGUpO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBwYXRoIGlzIGlnbm9yZWQgYnkgdGhlIGluY2x1ZGUvZXhjbHVkZSBwYXRoIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gaXNGb2xkZXIgLSBXaGV0aGVyIHRoZSBwYXRoIGlzIGEgZm9sZGVyLiBPbmx5IGEgZm9sZGVyLW9ubHkgZ2xvYiAob25lIGVuZGluZyBpbiBgL2ApIHJlYWRzIGl0OiBzdWNoIGEgZ2xvYlxuICAgKiBhbHdheXMgbWF0Y2hlcyB0aGUgY29udGVudHMgb2YgYSBtYXRjaGluZyBmb2xkZXIsIGFuZCBtYXRjaGVzIHRoZSBmb2xkZXIgaXRzZWxmIG9ubHkgd2hlbiB0aGlzIGlzIGB0cnVlYC5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwYXRoIGlzIGlnbm9yZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIGlzUGF0aElnbm9yZWQocGF0aDogc3RyaW5nLCBpc0ZvbGRlciA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2luY2x1ZGVQYXRocy5pc1BhdGhJZ25vcmVkKHBhdGgsIGlzRm9sZGVyKSB8fCB0aGlzLl9leGNsdWRlUGF0aHMuaXNQYXRoSWdub3JlZChwYXRoLCBpc0ZvbGRlcik7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgaW5jbHVkZS9leGNsdWRlIHBhdGggZW50cmllcywgcmVwb3J0aW5nIHRoZSBmaXJzdCBlbnRyeSB0aGF0IGlzIG5vdCBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciBnbG9iLlxuICpcbiAqIEFuIGludmFsaWQgZW50cnkgZG9lcyBub3QgdGhyb3cgd2hlbiBhc3NpZ25lZCB0byB7QGxpbmsgUGF0aFNldHRpbmdzfSDigJQgdGhlIHdob2xlIGxpc3QgZmFsbHMgYmFjayB0byBpdHMgZGVmYXVsdFxuICogcGF0dGVybiBpbnN0ZWFkIOKAlCBzbyB0aGlzIHZhbGlkYXRvciBpcyB3aGF0IHN1cmZhY2VzIHRoZSBwcm9ibGVtIHRvIHRoZSB1c2VyLiBUaGUgbWVzc2FnZSBuYW1lcyB0aGUgZW50cnkgYW5kIHRoZVxuICogcmVhc29uIGl0IGlzIGludmFsaWQuXG4gKlxuICogQHBhcmFtIHBhdGhzIC0gVGhlIHBhdGggZW50cmllcyB0byB2YWxpZGF0ZS5cbiAqIEByZXR1cm5zIEEgbWVzc2FnZSBuYW1pbmcgdGhlIGZpcnN0IGludmFsaWQgZW50cnksIG9yIG5vdGhpbmcgd2hlbiBldmVyeSBlbnRyeSBpcyB2YWxpZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhdGhzVmFsaWRhdG9yKHBhdGhzOiBzdHJpbmdbXSk6IE1heWJlUmV0dXJuPHN0cmluZz4ge1xuICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICBjb25zdCB7IGVycm9yIH0gPSBjb21waWxlRW50cnkocGF0aCwgTkVWRVJfTUFUQ0hFUik7XG4gICAgaWYgKGVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcGlsZUVudHJ5KGVudHJ5OiBzdHJpbmcsIGRlZmF1bHRNYXRjaGVyOiBQYXRoTWF0Y2hlcik6IENvbXBpbGVSZXN1bHQge1xuICBpZiAoZW50cnkgPT09ICcvJykge1xuICAgIHJldHVybiB7IG1hdGNoZXI6IGRlZmF1bHRNYXRjaGVyIH07XG4gIH1cblxuICBpZiAoUkVHX0VYUF9FTlRSWV9SRUdfRVhQLnRlc3QoZW50cnkpKSB7XG4gICAgY29uc3QgZmxhZ3NTZXBhcmF0b3JJbmRleCA9IGVudHJ5Lmxhc3RJbmRleE9mKCcvJyk7XG4gICAgcmV0dXJuIGNvbXBpbGVSZWdFeHBFbnRyeShlbnRyeSwgZW50cnkuc2xpY2UoMSwgZmxhZ3NTZXBhcmF0b3JJbmRleCksIGVudHJ5LnNsaWNlKGZsYWdzU2VwYXJhdG9ySW5kZXggKyAxKSk7XG4gIH1cblxuICByZXR1cm4gaGFzVW5lc2NhcGVkR2xvYkNoYXJhY3RlcihlbnRyeSkgPyBjb21waWxlR2xvYkVudHJ5KGVudHJ5KSA6IGNvbXBpbGVQbGFpblBhdGhFbnRyeShlbnRyeSk7XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVHbG9iRW50cnkoZ2xvYjogc3RyaW5nKTogQ29tcGlsZVJlc3VsdCB7XG4gIGNvbnN0IGlzRm9sZGVyT25seSA9IGdsb2IuZW5kc1dpdGgoJy8nKTtcbiAgY29uc3QgYm9keSA9IGdsb2IucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG4gIGNvbnN0IGdsb2JTb3VyY2UgPSBnZXRHbG9iU291cmNlKGJvZHkpO1xuICBpZiAoIWdsb2JTb3VyY2UuaXNWYWxpZCkge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcjogdCgoJCkgPT4gJC5vYnNpZGlhbkxpYi5wYXRoU2V0dGluZ3MuaW52YWxpZEdsb2IsIHsgZ2xvYiwgcmVhc29uOiBnbG9iU291cmNlLmVycm9yIH0pXG4gICAgfTtcbiAgfVxuICBjb25zdCB7IHNvdXJjZSB9ID0gZ2xvYlNvdXJjZTtcblxuICBjb25zdCBwcmVmaXggPSBib2R5LmluY2x1ZGVzKCcvJykgPyAnXicgOiAnKD86XnwvKSc7XG5cbiAgbGV0IHNlbGZSZWdFeHA6IFJlZ0V4cDtcbiAgbGV0IGNvbnRlbnRzUmVnRXhwOiBSZWdFeHA7XG4gIHRyeSB7XG4gICAgc2VsZlJlZ0V4cCA9IG5ldyBSZWdFeHAoYCR7cHJlZml4fSR7c291cmNlfSRgLCBDQVNFX0lOU0VOU0lUSVZFX0ZMQUcpO1xuICAgIGNvbnRlbnRzUmVnRXhwID0gbmV3IFJlZ0V4cChgJHtwcmVmaXh9JHtzb3VyY2V9L2AsIENBU0VfSU5TRU5TSVRJVkVfRkxBRyk7XG4gIH0gY2F0Y2ggKGVycm9yXykge1xuICAgIC8vIEFuIG91dC1vZi1vcmRlciBjaGFyYWN0ZXIgY2xhc3MgcmFuZ2UgKGBbei1hXWApIGlzIHRoZSBvbmUgaW52YWxpZCBnbG9iIG9ubHkgdGhlIGVuZ2luZSBjYW4gdGVsbC5cbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3I6IHQoKCQpID0+ICQub2JzaWRpYW5MaWIucGF0aFNldHRpbmdzLmludmFsaWRHbG9iLCB7IGdsb2IsIHJlYXNvbjogZ2V0UmVnRXhwRXJyb3JSZWFzb24oZXJyb3JfKSB9KVxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1hdGNoZXI6IHtcbiAgICAgIGlzTWF0Y2g6IChwYXRoLCBpc0ZvbGRlcikgPT4gY29udGVudHNSZWdFeHAudGVzdChwYXRoKSB8fCAoKGlzRm9sZGVyIHx8ICFpc0ZvbGRlck9ubHkpICYmIHNlbGZSZWdFeHAudGVzdChwYXRoKSlcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVQbGFpblBhdGhFbnRyeShwYXRoOiBzdHJpbmcpOiBDb21waWxlUmVzdWx0IHtcbiAgY29uc3QgdW5lc2NhcGVkUGF0aCA9IHBhdGgucmVwbGFjZUFsbCgvXFxcXCg/PGNoYXJhY3Rlcj4uKS9ncywgJyQ8Y2hhcmFjdGVyPicpLnJlcGxhY2UoL1xcLyskLywgJycpO1xuICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKGBeJHtlc2NhcGVSZWdFeHAodW5lc2NhcGVkUGF0aCl9KD86L3wkKWAsIENBU0VfSU5TRU5TSVRJVkVfRkxBRyk7XG4gIHJldHVybiB7XG4gICAgbWF0Y2hlcjoge1xuICAgICAgaXNNYXRjaDogKHBhdGhUb0NoZWNrKSA9PiByZWdFeHAudGVzdChwYXRoVG9DaGVjaylcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVSZWdFeHBFbnRyeShlbnRyeTogc3RyaW5nLCBzb3VyY2U6IHN0cmluZywgZmxhZ3M6IHN0cmluZyk6IENvbXBpbGVSZXN1bHQge1xuICBsZXQgcmVnRXhwOiBSZWdFeHA7XG4gIHRyeSB7XG4gICAgLy8gQ29tcGlsZWQgd2l0aCB0aGUgZmxhZ3MgYXMgd3JpdHRlbiBmaXJzdCwgc28gYW4gdW5rbm93biBvciByZXBlYXRlZCBmbGFnIGlzIHJlcG9ydGVkIHJhdGhlciB0aGFuIGlnbm9yZWQuXG4gICAgbmV3IFJlZ0V4cChzb3VyY2UsIGZsYWdzKTtcbiAgICBjb25zdCBlZmZlY3RpdmVGbGFncyA9IGZsYWdzLnJlcGxhY2VBbGwoU1RBVEVGVUxfRkxBR1NfUkVHX0VYUCwgJycpO1xuICAgIHJlZ0V4cCA9IG5ldyBSZWdFeHAoc291cmNlLCBlZmZlY3RpdmVGbGFncy5pbmNsdWRlcyhDQVNFX0lOU0VOU0lUSVZFX0ZMQUcpID8gZWZmZWN0aXZlRmxhZ3MgOiBgJHtlZmZlY3RpdmVGbGFnc30ke0NBU0VfSU5TRU5TSVRJVkVfRkxBR31gKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBBIHBhcnRpYWxseSB0eXBlZCByZWdleCBsaXRlcmFsIChgL15JbmJveFxcL2ApIGlzIG5vdCBwYXJzZWFibGUuXG4gICAgLy8gUmVwb3J0IGl0IGluc3RlYWQgb2YgdGhyb3dpbmcgZnJvbSBhIHNldHRpbmdzIHNldHRlciwgd2hpY2ggd291bGQgYnJlYWsgYm90aCB0aGUgc2V0dGluZ3MgVUkgYW5kIHRoZSBzYXZlIHBhdGguXG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiB0KCgkKSA9PiAkLm9ic2lkaWFuTGliLnBhdGhTZXR0aW5ncy5pbnZhbGlkUmVndWxhckV4cHJlc3Npb24sIHsgcmVhc29uOiBnZXRSZWdFeHBFcnJvclJlYXNvbihlcnJvciksIHJlZ0V4cDogZW50cnkgfSlcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtYXRjaGVyOiB7XG4gICAgICBpc01hdGNoOiAocGF0aCkgPT4gcmVnRXhwLnRlc3QocGF0aClcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUNoYXJhY3RlckNsYXNzQ2hhcmFjdGVyKGNoYXJhY3Rlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIC9bLVxcXFxcXF1eW10vLnRlc3QoY2hhcmFjdGVyKSA/IGBcXFxcJHtjaGFyYWN0ZXJ9YCA6IGNoYXJhY3Rlcjtcbn1cblxuZnVuY3Rpb24gZ2V0Q2hhcmFjdGVyQ2xhc3NTb3VyY2UoZ2xvYjogc3RyaW5nLCBvcGVuSW5kZXg6IG51bWJlcik6IENoYXJhY3RlckNsYXNzU291cmNlUmVzdWx0IHtcbiAgbGV0IGluZGV4ID0gb3BlbkluZGV4ICsgMTtcbiAgbGV0IGlzTmVnYXRlZCA9IGZhbHNlO1xuICBpZiAoZ2xvYltpbmRleF0gPT09ICchJyB8fCBnbG9iW2luZGV4XSA9PT0gJ14nKSB7XG4gICAgaXNOZWdhdGVkID0gdHJ1ZTtcbiAgICBpbmRleCsrO1xuICB9XG5cbiAgbGV0IGNvbnRlbnQgPSAnJztcbiAgaWYgKGdsb2JbaW5kZXhdID09PSAnXScpIHtcbiAgICBjb250ZW50ICs9IFN0cmluZy5yYXdgXFxdYDtcbiAgICBpbmRleCsrO1xuICB9XG5cbiAgd2hpbGUgKGluZGV4IDwgZ2xvYi5sZW5ndGgpIHtcbiAgICBjb25zdCBjaGFyYWN0ZXIgPSBnbG9iLmNoYXJBdChpbmRleCk7XG4gICAgaWYgKGNoYXJhY3RlciA9PT0gJ10nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbmRJbmRleDogaW5kZXggKyAxLFxuICAgICAgICBpc1ZhbGlkOiB0cnVlLFxuICAgICAgICBzb3VyY2U6IGBbJHtpc05lZ2F0ZWQgPyAnXi8nIDogJyd9JHtjb250ZW50fV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChjaGFyYWN0ZXIgPT09ICdcXFxcJykge1xuICAgICAgaW5kZXgrKztcbiAgICAgIGlmIChpbmRleCA+PSBnbG9iLmxlbmd0aCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQgKz0gZXNjYXBlQ2hhcmFjdGVyQ2xhc3NDaGFyYWN0ZXIoZ2xvYi5jaGFyQXQoaW5kZXgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCArPSBjaGFyYWN0ZXIgPT09ICctJyA/IGNoYXJhY3RlciA6IGVzY2FwZUNoYXJhY3RlckNsYXNzQ2hhcmFjdGVyKGNoYXJhY3Rlcik7XG4gICAgfVxuICAgIGluZGV4Kys7XG4gIH1cblxuICByZXR1cm4geyBlcnJvcjogdCgoJCkgPT4gJC5vYnNpZGlhbkxpYi5wYXRoU2V0dGluZ3MudW5jbG9zZWRDaGFyYWN0ZXJDbGFzcyksIGlzVmFsaWQ6IGZhbHNlIH07XG59XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRNYXRjaGVyKHR5cGU6IFBhdGhTZXR0aW5nVHlwZSk6IFBhdGhNYXRjaGVyIHtcbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsbCBicmFuY2hlcyBjb3ZlcmVkIGJ1dCB2OCByZXBvcnRzIHN3aXRjaCBhcyBwYXJ0aWFsLiAqL1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIGNhc2UgUGF0aFNldHRpbmdUeXBlLkV4Y2x1ZGU6IHtcbiAgICAgIHJldHVybiBORVZFUl9NQVRDSEVSO1xuICAgIH1cbiAgICBjYXNlIFBhdGhTZXR0aW5nVHlwZS5JbmNsdWRlOiB7XG4gICAgICByZXR1cm4gQUxXQVlTX01BVENIRVI7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBFeGhhdXN0aXZlIHN3aXRjaCBndWFyZC4gKi9cbiAgICAgIGFzc2VydE5ldmVyKHR5cGUpO1xuICAgIH1cbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0R2xvYlNvdXJjZShnbG9iOiBzdHJpbmcpOiBHbG9iU291cmNlUmVzdWx0IHtcbiAgbGV0IHNvdXJjZSA9ICcnO1xuICBsZXQgaW5kZXggPSAwO1xuXG4gIHdoaWxlIChpbmRleCA8IGdsb2IubGVuZ3RoKSB7XG4gICAgY29uc3QgY2hhcmFjdGVyID0gZ2xvYi5jaGFyQXQoaW5kZXgpO1xuICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7XG4gICAgICBjYXNlICc/Jzoge1xuICAgICAgICBzb3VyY2UgKz0gJ1teL10nO1xuICAgICAgICBpbmRleCsrO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1snOiB7XG4gICAgICAgIGNvbnN0IGNoYXJhY3RlckNsYXNzID0gZ2V0Q2hhcmFjdGVyQ2xhc3NTb3VyY2UoZ2xvYiwgaW5kZXgpO1xuICAgICAgICBpZiAoIWNoYXJhY3RlckNsYXNzLmlzVmFsaWQpIHtcbiAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyQ2xhc3M7XG4gICAgICAgIH1cbiAgICAgICAgc291cmNlICs9IGNoYXJhY3RlckNsYXNzLnNvdXJjZTtcbiAgICAgICAgaW5kZXggPSBjaGFyYWN0ZXJDbGFzcy5lbmRJbmRleDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICcqJzoge1xuICAgICAgICBpZiAoIWdsb2Iuc3RhcnRzV2l0aChHTE9CU1RBUiwgaW5kZXgpKSB7XG4gICAgICAgICAgc291cmNlICs9ICdbXi9dKic7XG4gICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzU2VnbWVudFN0YXJ0ID0gaW5kZXggPT09IDAgfHwgZ2xvYltpbmRleCAtIDFdID09PSAnLyc7XG4gICAgICAgIGlmIChpc1NlZ21lbnRTdGFydCAmJiBnbG9iLnN0YXJ0c1dpdGgoR0xPQlNUQVJfRk9MREVSUywgaW5kZXgpKSB7XG4gICAgICAgICAgLy8gYCoqL2AgaXMgemVybyBvciBtb3JlIHdob2xlIGZvbGRlcnMuXG4gICAgICAgICAgc291cmNlICs9ICcoPzpbXi9dKi8pKic7XG4gICAgICAgICAgaW5kZXggKz0gR0xPQlNUQVJfRk9MREVSUy5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNTZWdtZW50U3RhcnQgJiYgaW5kZXggKyBHTE9CU1RBUi5sZW5ndGggPT09IGdsb2IubGVuZ3RoKSB7XG4gICAgICAgICAgLy8gQSB0cmFpbGluZyBgLyoqYCBpcyBldmVyeXRoaW5nIGluc2lkZSB0aGUgZm9sZGVyLlxuICAgICAgICAgIHNvdXJjZSArPSAnLionO1xuICAgICAgICAgIGluZGV4ICs9IEdMT0JTVEFSLmxlbmd0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBBbnkgb3RoZXIgYCoqYCBpcyBhbiBvcmRpbmFyeSBgKmAsIGFzIGluIGAuZ2l0aWdub3JlYC5cbiAgICAgICAgICBzb3VyY2UgKz0gJ1teL10qJztcbiAgICAgICAgICBpbmRleCArPSBHTE9CU1RBUi5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdcXFxcJzoge1xuICAgICAgICBpbmRleCsrO1xuICAgICAgICBpZiAoaW5kZXggPj0gZ2xvYi5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4geyBlcnJvcjogdCgoJCkgPT4gJC5vYnNpZGlhbkxpYi5wYXRoU2V0dGluZ3MudHJhaWxpbmdFc2NhcGUpLCBpc1ZhbGlkOiBmYWxzZSB9O1xuICAgICAgICB9XG4gICAgICAgIHNvdXJjZSArPSBlc2NhcGVSZWdFeHAoZ2xvYi5jaGFyQXQoaW5kZXgpKTtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHNvdXJjZSArPSBlc2NhcGVSZWdFeHAoY2hhcmFjdGVyKTtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgc291cmNlIH07XG59XG5cbmZ1bmN0aW9uIGdldFJlZ0V4cEVycm9yUmVhc29uKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFRoZSBSZWdFeHAgY29uc3RydWN0b3Igb25seSBldmVyIHRocm93cyBhIFN5bnRheEVycm9yLiAqL1xuICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAvLyBWOCBwaHJhc2VzIGl0IGBJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogLzxzb3VyY2U+LzxmbGFncz46IDxyZWFzb24+YDsgdGhlIGVudHJ5IGlzIGFscmVhZHkgbmFtZWQuXG4gIGNvbnN0IG1hdGNoID0gL15JbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogXFwvLipcXC9bYS16XSo6ICg/PHJlYXNvbj4uKikkL3MuZXhlYyhtZXNzYWdlKTtcbiAgcmV0dXJuIG1hdGNoPy5ncm91cHM/LlsncmVhc29uJ10gPz8gbWVzc2FnZTtcbn1cblxuZnVuY3Rpb24gaGFzVW5lc2NhcGVkR2xvYkNoYXJhY3RlcihlbnRyeTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBlbnRyeS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBjaGFyYWN0ZXIgPSBlbnRyeS5jaGFyQXQoaW5kZXgpO1xuICAgIGlmIChjaGFyYWN0ZXIgPT09ICdcXFxcJykge1xuICAgICAgaW5kZXgrKztcbiAgICB9IGVsc2UgaWYgKEdMT0JfQ0hBUkFDVEVSUy5oYXMoY2hhcmFjdGVyKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbWFrZU1hdGNoZXJzKHBhdGhzOiBzdHJpbmdbXSwgZGVmYXVsdE1hdGNoZXI6IFBhdGhNYXRjaGVyKTogbnVsbCB8IFBhdGhNYXRjaGVyW10ge1xuICBpZiAocGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtkZWZhdWx0TWF0Y2hlcl07XG4gIH1cblxuICBjb25zdCBtYXRjaGVyczogUGF0aE1hdGNoZXJbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICBjb25zdCB7IG1hdGNoZXIgfSA9IGNvbXBpbGVFbnRyeShwYXRoLCBkZWZhdWx0TWF0Y2hlcik7XG4gICAgaWYgKCFtYXRjaGVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgbWF0Y2hlcnMucHVzaChtYXRjaGVyKTtcbiAgfVxuICByZXR1cm4gbWF0Y2hlcnM7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW1CQSxxQkFBNkI7QUFDN0IseUJBQTRCO0FBRTVCLGtCQUFrQjtBQWtDbEIsTUFBTSx3QkFBd0I7QUFDOUIsTUFBTSx3QkFBd0I7QUFDOUIsTUFBTSx5QkFBeUI7QUFDL0IsTUFBTSxrQkFBa0Isb0JBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxHQUFHLENBQUM7QUFDL0MsTUFBTSxXQUFXO0FBQ2pCLE1BQU0sbUJBQW1CO0FBRXpCLE1BQU0saUJBQThCO0FBQUEsRUFDbEMsU0FBUyxNQUFNO0FBQ2pCO0FBRUEsTUFBTSxnQkFBNkI7QUFBQSxFQUNqQyxTQUFTLE1BQU07QUFDakI7QUFFQSxNQUFNLFlBQVk7QUFBQSxFQWNULFlBQTZCLE1BQXVCO0FBQXZCO0FBQ2xDLFNBQUssaUJBQWlCLGtCQUFrQixJQUFJO0FBQzVDLFNBQUssV0FBVyxDQUFDLEtBQUssY0FBYztBQUFBLEVBQ3RDO0FBQUEsRUFIb0M7QUFBQSxFQWJwQyxJQUFXLFFBQWtCO0FBQzNCLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQSxFQUVBLElBQVcsTUFBTSxPQUFpQjtBQUNoQyxTQUFLLFNBQVMsTUFBTSxPQUFPLE9BQU87QUFDbEMsU0FBSyxXQUFXLGFB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
@@ -99,7 +99,6 @@ var plugin_exports = {};
99
99
  __export(plugin_exports, {
100
100
  plugin: () => plugin,
101
101
  "plugin-api": () => plugin_api,
102
- "plugin-api-schema": () => plugin_api_schema,
103
102
  "plugin-context": () => plugin_context,
104
103
  "plugin-event-source": () => plugin_event_source,
105
104
  "plugin-install-state": () => plugin_install_state,
@@ -108,7 +107,6 @@ __export(plugin_exports, {
108
107
  "settings-migration-api": () => settings_migration_api
109
108
  });
110
109
  module.exports = __toCommonJS(plugin_exports);
111
- var plugin_api_schema = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./plugin-api-schema.cjs')), 1);
112
110
  var plugin_api = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./plugin-api.cjs')), 1);
113
111
  var plugin_context = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./plugin-context.cjs')), 1);
114
112
  var plugin_event_source = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./plugin-event-source.cjs')), 1);
@@ -121,7 +119,6 @@ var settings_migration_api = __toESM(((module) => module && module.__esModule &&
121
119
  0 && (module.exports = {
122
120
  plugin,
123
121
  "plugin-api": null,
124
- "plugin-api-schema": null,
125
122
  "plugin-context": null,
126
123
  "plugin-event-source": null,
127
124
  "plugin-install-state": null,
@@ -129,4 +126,4 @@ var settings_migration_api = __toESM(((module) => module && module.__esModule &&
129
126
  "plugin-settings-tab": null,
130
127
  "settings-migration-api": null
131
128
  });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW4vaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdwbHVnaW4tYXBpLXNjaGVtYScgZnJvbSAnLi9wbHVnaW4tYXBpLXNjaGVtYS50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLWFwaScgZnJvbSAnLi9wbHVnaW4tYXBpLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tY29udGV4dCcgZnJvbSAnLi9wbHVnaW4tY29udGV4dC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLWV2ZW50LXNvdXJjZScgZnJvbSAnLi9wbHVnaW4tZXZlbnQtc291cmNlLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4taW5zdGFsbC1zdGF0ZScgZnJvbSAnLi9wbHVnaW4taW5zdGFsbC1zdGF0ZS50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLWxpZmVjeWNsZS1ldmVudHMnIGZyb20gJy4vcGx1Z2luLWxpZmVjeWNsZS1ldmVudHMudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1zZXR0aW5ncy10YWInIGZyb20gJy4vcGx1Z2luLXNldHRpbmdzLXRhYi50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luJyBmcm9tICcuL3BsdWdpbi50cyc7XG5leHBvcnQgKiBhcyAnc2V0dGluZ3MtbWlncmF0aW9uLWFwaScgZnJvbSAnLi9zZXR0aW5ncy1taWdyYXRpb24tYXBpLnRzJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBLHNCQUFBQTtBQUFBLEVBQUEsMkJBQUFDO0FBQUEsRUFBQSx3QkFBQUM7QUFBQSxFQUFBLDZCQUFBQztBQUFBLEVBQUEsOEJBQUFDO0FBQUEsRUFBQSxpQ0FBQUM7QUFBQSxFQUFBLDZCQUFBQztBQUFBLEVBQUEsZ0NBQUFDO0FBQUE7QUFBQTtBQUVBLElBQUFOLG9CQUFxQztBQUNyQyxJQUFBRCxhQUE4QjtBQUM5QixJQUFBRSxpQkFBa0M7QUFDbEMsSUFBQUMsc0JBQXVDO0FBQ3ZDLElBQUFDLHVCQUF3QztBQUN4QyxJQUFBQywwQkFBMkM7QUFDM0MsSUFBQUMsc0JBQXVDO0FBQ3ZDLGFBQTBCO0FBQzFCLElBQUFDLHlCQUEwQzsiLCJuYW1lcyI6WyJwbHVnaW4tYXBpIiwicGx1Z2luLWFwaS1zY2hlbWEiLCJwbHVnaW4tY29udGV4dCIsInBsdWdpbi1ldmVudC1zb3VyY2UiLCJwbHVnaW4taW5zdGFsbC1zdGF0ZSIsInBsdWdpbi1saWZlY3ljbGUtZXZlbnRzIiwicGx1Z2luLXNldHRpbmdzLXRhYiIsInNldHRpbmdzLW1pZ3JhdGlvbi1hcGkiXX0=
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW4vaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdwbHVnaW4tYXBpJyBmcm9tICcuL3BsdWdpbi1hcGkudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1jb250ZXh0JyBmcm9tICcuL3BsdWdpbi1jb250ZXh0LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tZXZlbnQtc291cmNlJyBmcm9tICcuL3BsdWdpbi1ldmVudC1zb3VyY2UudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1pbnN0YWxsLXN0YXRlJyBmcm9tICcuL3BsdWdpbi1pbnN0YWxsLXN0YXRlLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tbGlmZWN5Y2xlLWV2ZW50cycgZnJvbSAnLi9wbHVnaW4tbGlmZWN5Y2xlLWV2ZW50cy50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLXNldHRpbmdzLXRhYicgZnJvbSAnLi9wbHVnaW4tc2V0dGluZ3MtdGFiLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4nIGZyb20gJy4vcGx1Z2luLnRzJztcbmV4cG9ydCAqIGFzICdzZXR0aW5ncy1taWdyYXRpb24tYXBpJyBmcm9tICcuL3NldHRpbmdzLW1pZ3JhdGlvbi1hcGkudHMnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUEsc0JBQUFBO0FBQUEsRUFBQSx3QkFBQUM7QUFBQSxFQUFBLDZCQUFBQztBQUFBLEVBQUEsOEJBQUFDO0FBQUEsRUFBQSxpQ0FBQUM7QUFBQSxFQUFBLDZCQUFBQztBQUFBLEVBQUEsZ0NBQUFDO0FBQUE7QUFBQTtBQUVBLElBQUFOLGFBQThCO0FBQzlCLElBQUFDLGlCQUFrQztBQUNsQyxJQUFBQyxzQkFBdUM7QUFDdkMsSUFBQUMsdUJBQXdDO0FBQ3hDLElBQUFDLDBCQUEyQztBQUMzQyxJQUFBQyxzQkFBdUM7QUFDdkMsYUFBMEI7QUFDMUIsSUFBQUMseUJBQTBDOyIsIm5hbWVzIjpbInBsdWdpbi1hcGkiLCJwbHVnaW4tY29udGV4dCIsInBsdWdpbi1ldmVudC1zb3VyY2UiLCJwbHVnaW4taW5zdGFsbC1zdGF0ZSIsInBsdWdpbi1saWZlY3ljbGUtZXZlbnRzIiwicGx1Z2luLXNldHRpbmdzLXRhYiIsInNldHRpbmdzLW1pZ3JhdGlvbi1hcGkiXX0=
@@ -1,5 +1,4 @@
1
1
  /// <reference path="../library-references.d.cts" />
2
- export * as 'plugin-api-schema' from './plugin-api-schema.cjs';
3
2
  export * as 'plugin-api' from './plugin-api.cjs';
4
3
  export * as 'plugin-context' from './plugin-context.cjs';
5
4
  export * as 'plugin-event-source' from './plugin-event-source.cjs';