@mnaoumov/obsidian-lib 2.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/dist/lib/cjs/__merged.cjs +3 -1
  2. package/dist/lib/cjs/__merged.d.cts +1 -1
  3. package/dist/lib/cjs/attachment-path.cjs +8 -5
  4. package/dist/lib/cjs/attachment-path.d.cts +4 -4
  5. package/dist/lib/cjs/attachment-unit-folder.cjs +1 -1
  6. package/dist/lib/cjs/attachment-unit-folder.d.cts +3 -3
  7. package/dist/lib/cjs/callout.cjs +1 -1
  8. package/dist/lib/cjs/callout.d.cts +2 -2
  9. package/dist/lib/cjs/canvas.cjs +1 -1
  10. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +9 -9
  11. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.d.cts +14 -14
  12. package/dist/lib/cjs/components/plugin-gate-component.cjs +3 -3
  13. package/dist/lib/cjs/components/plugin-gate-component.d.cts +8 -2
  14. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +4 -3
  15. package/dist/lib/cjs/components/plugin-suggestion-component.d.cts +5 -1
  16. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +1 -1
  17. package/dist/lib/cjs/dataview-link.cjs +1 -1
  18. package/dist/lib/cjs/dataview-link.d.cts +1 -1
  19. package/dist/lib/cjs/dataview.cjs +1 -1
  20. package/dist/lib/cjs/dataview.d.cts +16 -10
  21. package/dist/lib/cjs/demo-vault-helper-settings.cjs +1 -1
  22. package/dist/lib/cjs/demo-vault-helper-settings.d.cts +1 -1
  23. package/dist/lib/cjs/demo-vault-helper.cjs +1 -1
  24. package/dist/lib/cjs/demo-vault-helper.d.cts +11 -11
  25. package/dist/lib/cjs/file-system.cjs +1 -1
  26. package/dist/lib/cjs/file-system.d.cts +2 -2
  27. package/dist/lib/cjs/folder-note.cjs +1 -1
  28. package/dist/lib/cjs/generated-during-build.cjs +1 -1
  29. package/dist/lib/cjs/html-element.cjs +6 -1
  30. package/dist/lib/cjs/html-element.d.cts +11 -0
  31. package/dist/lib/cjs/metadata-cache.cjs +2 -2
  32. package/dist/lib/cjs/metadata-cache.d.cts +6 -6
  33. package/dist/lib/cjs/note-priority.cjs +1 -1
  34. package/dist/lib/cjs/note-priority.d.cts +1 -1
  35. package/dist/lib/cjs/notebook-navigator.cjs +1 -1
  36. package/dist/lib/cjs/notebook-navigator.d.cts +12 -12
  37. package/dist/lib/cjs/plugin/plugin.cjs +2 -2
  38. package/dist/lib/cjs/plugin/plugin.d.cts +1 -1
  39. package/dist/lib/cjs/templater.cjs +4 -4
  40. package/dist/lib/cjs/templater.d.cts +35 -35
  41. package/dist/lib/esm/__merged.d.mts +1 -1
  42. package/dist/lib/esm/__merged.mjs +3 -1
  43. package/dist/lib/esm/attachment-path.d.mts +4 -4
  44. package/dist/lib/esm/attachment-path.mjs +8 -5
  45. package/dist/lib/esm/attachment-unit-folder.d.mts +3 -3
  46. package/dist/lib/esm/attachment-unit-folder.mjs +1 -1
  47. package/dist/lib/esm/callout.d.mts +2 -2
  48. package/dist/lib/esm/callout.mjs +1 -1
  49. package/dist/lib/esm/canvas.mjs +1 -1
  50. package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.d.mts +14 -14
  51. package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.mjs +9 -9
  52. package/dist/lib/esm/components/plugin-gate-component.d.mts +8 -2
  53. package/dist/lib/esm/components/plugin-gate-component.mjs +4 -3
  54. package/dist/lib/esm/components/plugin-suggestion-component.d.mts +5 -1
  55. package/dist/lib/esm/components/plugin-suggestion-component.mjs +4 -3
  56. package/dist/lib/esm/components/rename-delete-handler-component.mjs +1 -1
  57. package/dist/lib/esm/dataview-link.d.mts +1 -1
  58. package/dist/lib/esm/dataview-link.mjs +1 -1
  59. package/dist/lib/esm/dataview.d.mts +16 -10
  60. package/dist/lib/esm/dataview.mjs +1 -1
  61. package/dist/lib/esm/demo-vault-helper-settings.d.mts +1 -1
  62. package/dist/lib/esm/demo-vault-helper.d.mts +11 -11
  63. package/dist/lib/esm/demo-vault-helper.mjs +1 -1
  64. package/dist/lib/esm/file-system.d.mts +2 -2
  65. package/dist/lib/esm/file-system.mjs +1 -1
  66. package/dist/lib/esm/folder-note.mjs +1 -1
  67. package/dist/lib/esm/generated-during-build.mjs +1 -1
  68. package/dist/lib/esm/html-element.d.mts +11 -0
  69. package/dist/lib/esm/html-element.mjs +5 -1
  70. package/dist/lib/esm/metadata-cache.d.mts +6 -6
  71. package/dist/lib/esm/metadata-cache.mjs +2 -2
  72. package/dist/lib/esm/note-priority.d.mts +1 -1
  73. package/dist/lib/esm/note-priority.mjs +1 -1
  74. package/dist/lib/esm/notebook-navigator.d.mts +12 -12
  75. package/dist/lib/esm/notebook-navigator.mjs +1 -1
  76. package/dist/lib/esm/plugin/plugin.d.mts +1 -1
  77. package/dist/lib/esm/plugin/plugin.mjs +2 -2
  78. package/dist/lib/esm/templater.d.mts +35 -35
  79. package/dist/lib/esm/templater.mjs +4 -4
  80. package/package.json +4 -135
  81. package/@types/dataview/api/data-array/package.json +0 -4
  82. package/@types/dataview/api/extensions/package.json +0 -4
  83. package/@types/dataview/api/inline-api/package.json +0 -4
  84. package/@types/dataview/api/plugin-api/package.json +0 -4
  85. package/@types/dataview/api/result/package.json +0 -4
  86. package/@types/dataview/data-import/common/package.json +0 -4
  87. package/@types/dataview/data-import/csv/package.json +0 -4
  88. package/@types/dataview/data-import/inline-field/package.json +0 -4
  89. package/@types/dataview/data-import/markdown-file/package.json +0 -4
  90. package/@types/dataview/data-import/persister/package.json +0 -4
  91. package/@types/dataview/data-import/web-worker/import-entry/package.json +0 -4
  92. package/@types/dataview/data-import/web-worker/import-impl/package.json +0 -4
  93. package/@types/dataview/data-import/web-worker/import-manager/package.json +0 -4
  94. package/@types/dataview/data-index/index/package.json +0 -4
  95. package/@types/dataview/data-index/package.json +0 -4
  96. package/@types/dataview/data-index/resolver/package.json +0 -4
  97. package/@types/dataview/data-index/source/package.json +0 -4
  98. package/@types/dataview/data-model/markdown/package.json +0 -4
  99. package/@types/dataview/data-model/serialized/markdown/package.json +0 -4
  100. package/@types/dataview/data-model/transferable/package.json +0 -4
  101. package/@types/dataview/data-model/value/package.json +0 -4
  102. package/@types/dataview/expression/binaryop/package.json +0 -4
  103. package/@types/dataview/expression/context/package.json +0 -4
  104. package/@types/dataview/expression/field/package.json +0 -4
  105. package/@types/dataview/expression/functions/package.json +0 -4
  106. package/@types/dataview/expression/parse/package.json +0 -4
  107. package/@types/dataview/index/package.json +0 -4
  108. package/@types/dataview/main/package.json +0 -4
  109. package/@types/dataview/package.json +0 -4
  110. package/@types/dataview/query/engine/package.json +0 -4
  111. package/@types/dataview/query/parse/package.json +0 -4
  112. package/@types/dataview/query/query/package.json +0 -4
  113. package/@types/dataview/settings/package.json +0 -4
  114. package/@types/dataview/typings/obsidian-ex/package.json +0 -4
  115. package/@types/dataview/typings/workers/package.json +0 -4
  116. package/@types/dataview/ui/export/markdown/package.json +0 -4
  117. package/@types/dataview/ui/lp-render/package.json +0 -4
  118. package/@types/dataview/ui/markdown/package.json +0 -4
  119. package/@types/dataview/ui/refreshable-view/package.json +0 -4
  120. package/@types/dataview/ui/render/package.json +0 -4
  121. package/@types/dataview/ui/views/calendar-view/package.json +0 -4
  122. package/@types/dataview/ui/views/inline-field-live-preview/package.json +0 -4
  123. package/@types/dataview/ui/views/inline-view/package.json +0 -4
  124. package/@types/dataview/ui/views/js-view/package.json +0 -4
  125. package/@types/dataview/ui/views/list-view/package.json +0 -4
  126. package/@types/dataview/ui/views/table-view/package.json +0 -4
  127. package/@types/dataview/ui/views/task-view/package.json +0 -4
  128. package/@types/dataview/util/hash/package.json +0 -4
  129. package/@types/dataview/util/locale/package.json +0 -4
  130. package/@types/dataview/util/media/package.json +0 -4
  131. package/@types/dataview/util/normalize/package.json +0 -4
  132. package/dist/lib/cjs/@types/dataview/api/data-array.d.cts +0 -137
  133. package/dist/lib/cjs/@types/dataview/api/extensions.d.cts +0 -16
  134. package/dist/lib/cjs/@types/dataview/api/inline-api.d.cts +0 -187
  135. package/dist/lib/cjs/@types/dataview/api/plugin-api.d.cts +0 -210
  136. package/dist/lib/cjs/@types/dataview/api/result.d.cts +0 -39
  137. package/dist/lib/cjs/@types/dataview/data-import/common.d.cts +0 -4
  138. package/dist/lib/cjs/@types/dataview/data-import/csv.d.cts +0 -4
  139. package/dist/lib/cjs/@types/dataview/data-import/inline-field.d.cts +0 -43
  140. package/dist/lib/cjs/@types/dataview/data-import/markdown-file.d.cts +0 -53
  141. package/dist/lib/cjs/@types/dataview/data-import/persister.d.cts +0 -33
  142. package/dist/lib/cjs/@types/dataview/data-import/web-worker/import-entry.d.cts +0 -2
  143. package/dist/lib/cjs/@types/dataview/data-import/web-worker/import-impl.d.cts +0 -7
  144. package/dist/lib/cjs/@types/dataview/data-import/web-worker/import-manager.d.cts +0 -38
  145. package/dist/lib/cjs/@types/dataview/data-index/index.d.cts +0 -187
  146. package/dist/lib/cjs/@types/dataview/data-index/resolver.d.cts +0 -24
  147. package/dist/lib/cjs/@types/dataview/data-index/source.d.cts +0 -72
  148. package/dist/lib/cjs/@types/dataview/data-model/markdown.d.cts +0 -116
  149. package/dist/lib/cjs/@types/dataview/data-model/serialized/markdown.d.cts +0 -107
  150. package/dist/lib/cjs/@types/dataview/data-model/transferable.d.cts +0 -8
  151. package/dist/lib/cjs/@types/dataview/data-model/value.d.cts +0 -176
  152. package/dist/lib/cjs/@types/dataview/expression/binaryop.d.cts +0 -44
  153. package/dist/lib/cjs/@types/dataview/expression/context.d.cts +0 -50
  154. package/dist/lib/cjs/@types/dataview/expression/field.d.cts +0 -83
  155. package/dist/lib/cjs/@types/dataview/expression/functions.d.cts +0 -150
  156. package/dist/lib/cjs/@types/dataview/expression/parse.d.cts +0 -164
  157. package/dist/lib/cjs/@types/dataview/index.d.cts +0 -56
  158. package/dist/lib/cjs/@types/dataview/main.d.cts +0 -53
  159. package/dist/lib/cjs/@types/dataview/query/engine.d.cts +0 -104
  160. package/dist/lib/cjs/@types/dataview/query/parse.d.cts +0 -45
  161. package/dist/lib/cjs/@types/dataview/query/query.d.cts +0 -96
  162. package/dist/lib/cjs/@types/dataview/settings.d.cts +0 -61
  163. package/dist/lib/cjs/@types/dataview/typings/obsidian-ex.d.cts +0 -29
  164. package/dist/lib/cjs/@types/dataview/typings/workers.d.cts +0 -5
  165. package/dist/lib/cjs/@types/dataview/ui/export/markdown.d.cts +0 -16
  166. package/dist/lib/cjs/@types/dataview/ui/lp-render.d.cts +0 -38
  167. package/dist/lib/cjs/@types/dataview/ui/markdown.d.cts +0 -87
  168. package/dist/lib/cjs/@types/dataview/ui/refreshable-view.d.cts +0 -19
  169. package/dist/lib/cjs/@types/dataview/ui/render.d.cts +0 -34
  170. package/dist/lib/cjs/@types/dataview/ui/views/calendar-view.d.cts +0 -18
  171. package/dist/lib/cjs/@types/dataview/ui/views/inline-field-live-preview.d.cts +0 -43
  172. package/dist/lib/cjs/@types/dataview/ui/views/inline-view.d.cts +0 -29
  173. package/dist/lib/cjs/@types/dataview/ui/views/js-view.d.cts +0 -24
  174. package/dist/lib/cjs/@types/dataview/ui/views/list-view.d.cts +0 -26
  175. package/dist/lib/cjs/@types/dataview/ui/views/table-view.d.cts +0 -29
  176. package/dist/lib/cjs/@types/dataview/ui/views/task-view.d.cts +0 -52
  177. package/dist/lib/cjs/@types/dataview/util/hash.d.cts +0 -2
  178. package/dist/lib/cjs/@types/dataview/util/locale.d.cts +0 -3
  179. package/dist/lib/cjs/@types/dataview/util/media.d.cts +0 -7
  180. package/dist/lib/cjs/@types/dataview/util/normalize.d.cts +0 -45
  181. package/dist/lib/esm/@types/dataview/api/data-array.d.mts +0 -137
  182. package/dist/lib/esm/@types/dataview/api/extensions.d.mts +0 -16
  183. package/dist/lib/esm/@types/dataview/api/inline-api.d.mts +0 -187
  184. package/dist/lib/esm/@types/dataview/api/plugin-api.d.mts +0 -210
  185. package/dist/lib/esm/@types/dataview/api/result.d.mts +0 -39
  186. package/dist/lib/esm/@types/dataview/data-import/common.d.mts +0 -4
  187. package/dist/lib/esm/@types/dataview/data-import/csv.d.mts +0 -4
  188. package/dist/lib/esm/@types/dataview/data-import/inline-field.d.mts +0 -43
  189. package/dist/lib/esm/@types/dataview/data-import/markdown-file.d.mts +0 -53
  190. package/dist/lib/esm/@types/dataview/data-import/persister.d.mts +0 -33
  191. package/dist/lib/esm/@types/dataview/data-import/web-worker/import-entry.d.mts +0 -2
  192. package/dist/lib/esm/@types/dataview/data-import/web-worker/import-impl.d.mts +0 -7
  193. package/dist/lib/esm/@types/dataview/data-import/web-worker/import-manager.d.mts +0 -38
  194. package/dist/lib/esm/@types/dataview/data-index/index.d.mts +0 -187
  195. package/dist/lib/esm/@types/dataview/data-index/resolver.d.mts +0 -24
  196. package/dist/lib/esm/@types/dataview/data-index/source.d.mts +0 -72
  197. package/dist/lib/esm/@types/dataview/data-model/markdown.d.mts +0 -116
  198. package/dist/lib/esm/@types/dataview/data-model/serialized/markdown.d.mts +0 -107
  199. package/dist/lib/esm/@types/dataview/data-model/transferable.d.mts +0 -8
  200. package/dist/lib/esm/@types/dataview/data-model/value.d.mts +0 -176
  201. package/dist/lib/esm/@types/dataview/expression/binaryop.d.mts +0 -44
  202. package/dist/lib/esm/@types/dataview/expression/context.d.mts +0 -50
  203. package/dist/lib/esm/@types/dataview/expression/field.d.mts +0 -83
  204. package/dist/lib/esm/@types/dataview/expression/functions.d.mts +0 -150
  205. package/dist/lib/esm/@types/dataview/expression/parse.d.mts +0 -164
  206. package/dist/lib/esm/@types/dataview/index.d.mts +0 -56
  207. package/dist/lib/esm/@types/dataview/main.d.mts +0 -53
  208. package/dist/lib/esm/@types/dataview/query/engine.d.mts +0 -104
  209. package/dist/lib/esm/@types/dataview/query/parse.d.mts +0 -45
  210. package/dist/lib/esm/@types/dataview/query/query.d.mts +0 -96
  211. package/dist/lib/esm/@types/dataview/settings.d.mts +0 -61
  212. package/dist/lib/esm/@types/dataview/typings/obsidian-ex.d.mts +0 -29
  213. package/dist/lib/esm/@types/dataview/typings/workers.d.mts +0 -5
  214. package/dist/lib/esm/@types/dataview/ui/export/markdown.d.mts +0 -16
  215. package/dist/lib/esm/@types/dataview/ui/lp-render.d.mts +0 -38
  216. package/dist/lib/esm/@types/dataview/ui/markdown.d.mts +0 -87
  217. package/dist/lib/esm/@types/dataview/ui/refreshable-view.d.mts +0 -19
  218. package/dist/lib/esm/@types/dataview/ui/render.d.mts +0 -34
  219. package/dist/lib/esm/@types/dataview/ui/views/calendar-view.d.mts +0 -18
  220. package/dist/lib/esm/@types/dataview/ui/views/inline-field-live-preview.d.mts +0 -43
  221. package/dist/lib/esm/@types/dataview/ui/views/inline-view.d.mts +0 -29
  222. package/dist/lib/esm/@types/dataview/ui/views/js-view.d.mts +0 -24
  223. package/dist/lib/esm/@types/dataview/ui/views/list-view.d.mts +0 -26
  224. package/dist/lib/esm/@types/dataview/ui/views/table-view.d.mts +0 -29
  225. package/dist/lib/esm/@types/dataview/ui/views/task-view.d.mts +0 -52
  226. package/dist/lib/esm/@types/dataview/util/hash.d.mts +0 -2
  227. package/dist/lib/esm/@types/dataview/util/locale.d.mts +0 -3
  228. package/dist/lib/esm/@types/dataview/util/media.d.mts +0 -7
  229. package/dist/lib/esm/@types/dataview/util/normalize.d.mts +0 -45
@@ -337,6 +337,7 @@ __export(merged_exports, {
337
337
  adoptSettingEx: () => import_setting_ex.adoptSettingEx,
338
338
  alert: () => import_alert.alert,
339
339
  appendCodeBlock: () => import_html_element.appendCodeBlock,
340
+ appendTextOrFragmentClone: () => import_html_element.appendTextOrFragmentClone,
340
341
  applyContentChanges: () => import_file_change.applyContentChanges,
341
342
  applyFileChanges: () => import_file_change.applyFileChanges,
342
343
  applySpellcheckMode: () => import_html_element.applySpellcheckMode,
@@ -1209,6 +1210,7 @@ var import_value_wrapper = require('@mnaoumov/typescript-lib/value-wrapper');
1209
1210
  adoptSettingEx,
1210
1211
  alert,
1211
1212
  appendCodeBlock,
1213
+ appendTextOrFragmentClone,
1212
1214
  applyContentChanges,
1213
1215
  applyFileChanges,
1214
1216
  applySpellcheckMode,
@@ -1667,4 +1669,4 @@ var import_value_wrapper = require('@mnaoumov/typescript-lib/value-wrapper');
1667
1669
  watchPluginApi,
1668
1670
  wrapForCallout
1669
1671
  });
1670
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL19fbWVyZ2VkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0IHsgQXBwQWN0aXZlRmlsZVByb3ZpZGVyIH0gZnJvbSAnLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5leHBvcnQgeyBnZXRBcHAgfSBmcm9tICcuL2FwcC50cyc7XG5leHBvcnQge1xuICByZXRyeVdpdGhUaW1lb3V0Tm90aWNlLFxuICBydW5XaXRoVGltZW91dE5vdGljZVxufSBmcm9tICcuL2FzeW5jLXdpdGgtbm90aWNlLnRzJztcbmV4cG9ydCB7XG4gIEF0dGFjaG1lbnRQYXRoQ29udGV4dCxcbiAgQ1VTVE9NX0FUVEFDSE1FTlRfTE9DQVRJT05fUExVR0lOX0lELFxuICBEVU1NWV9QQVRILFxuICBnZXRBdHRhY2htZW50RmlsZVBhdGgsXG4gIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoLFxuICBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aFN5bmNPck51bGwsXG4gIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyxcbiAgZ2V0Q2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyRnVuY3Rpb24sXG4gIGhhc093bkF0dGFjaG1lbnRGb2xkZXIsXG4gIGlzQXRQcm9wZXJBdHRhY2htZW50UGF0aFxufSBmcm9tICcuL2F0dGFjaG1lbnQtcGF0aC50cyc7XG5leHBvcnQge1xuICBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoLFxuICByZWJhc2VQYXRoT250b0ZvbGRlclxufSBmcm9tICcuL2F0dGFjaG1lbnQtdW5pdC1mb2xkZXIudHMnO1xuZXhwb3J0IHsgZ2V0SW5kZXhlZEJhY2tsaW5rc0ZvckZpbGUgfSBmcm9tICcuL2JhY2tsaW5rLWluZGV4LnRzJztcbmV4cG9ydCB7XG4gIHJlbmRlckJhY2tsaW5rc1RhYmxlLFxuICByZW5kZXJEZWxheWVkQmFja2xpbmtzLFxuICByZW5kZXJEZWxheWVkQmFja2xpbmtzRm9yRm9sZGVyXG59IGZyb20gJy4vYmFja2xpbmsudHMnO1xuZXhwb3J0IHsgUGx1Z2luQmFzZXNWaWV3UmVnaXN0cmFyIH0gZnJvbSAnLi9iYXNlcy12aWV3LXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBDYWxsb3V0TW9kZSxcbiAgcmVuZGVyQ2FsbG91dCxcbiAgd3JhcEZvckNhbGxvdXRcbn0gZnJvbSAnLi9jYWxsb3V0LnRzJztcbmV4cG9ydCB7IGdldENhbnZhc1JlZmVyZW5jZXMgfSBmcm9tICcuL2NhbnZhcy50cyc7XG5leHBvcnQge1xuICBDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgsXG4gIGdldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCxcbiAgc2V0Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4LFxuICB1bnNldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleFxufSBmcm9tICcuL2Nhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleC50cyc7XG5leHBvcnQgeyBjcmVhdGVDb2RlQmxvY2tSZWdFeHAgfSBmcm9tICcuL2NvZGUtYmxvY2stcmVnLWV4cC50cyc7XG5leHBvcnQgeyBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vY29tbWFuZC1oYW5kbGVycy9hYnN0cmFjdC1maWxlLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBDb21tYW5kSGFuZGxlckNvbXBvbmVudCB9IGZyb20gJy4vY29tbWFuZC1oYW5kbGVycy9jb21tYW5kLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IENvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9jb21tYW5kLWhhbmRsZXJzL2NvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBFZGl0b3JDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vY29tbWFuZC1oYW5kbGVycy9lZGl0b3ItY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IEZpbGVDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vY29tbWFuZC1oYW5kbGVycy9maWxlLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBGb2xkZXJDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vY29tbWFuZC1oYW5kbGVycy9mb2xkZXItY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IEdsb2JhbENvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9jb21tYW5kLWhhbmRsZXJzL2dsb2JhbC1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgT3BlbkRlbW9WYXVsdENvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9jb21tYW5kLWhhbmRsZXJzL29wZW4tZGVtby12YXVsdC1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgT3BlblNldHRpbmdzQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL2NvbW1hbmQtaGFuZGxlcnMvb3Blbi1zZXR0aW5ncy1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgVW5sb2NrQWN0aXZlTm90ZUNvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9jb21tYW5kLWhhbmRsZXJzL3VubG9jay1hY3RpdmUtbm90ZS1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgUGx1Z2luQ29tbWFuZFJlZ2lzdHJhciB9IGZyb20gJy4vY29tbWFuZC1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgY29uZmlndXJlQ29tbXVuaXR5UGx1Z2luLFxuICBDb25maWd1cmVDb21tdW5pdHlQbHVnaW5SZXN1bHQsXG4gIGRpc2FibGVDb21tdW5pdHlQbHVnaW4sXG4gIGVuYWJsZUNvbW11bml0eVBsdWdpbixcbiAgZ2V0Q29tbXVuaXR5UGx1Z2luUmVwbyxcbiAgZ2V0TGF0ZXN0UmVsZWFzZVZlcnNpb24sXG4gIGluc3RhbGxDb21tdW5pdHlQbHVnaW4sXG4gIGluc3RhbGxDb25maWd1cmVFbmFibGVDb21tdW5pdHlQbHVnaW4sXG4gIHNlYXJjaENvbW11bml0eVBsdWdpbnMsXG4gIHRvZ2dsZUVuYWJsZUNvbW11bml0eVBsdWdpbixcbiAgdG9nZ2xlSW5zdGFsbENvbW11bml0eVBsdWdpbixcbiAgdW5pbnN0YWxsQ29tbXVuaXR5UGx1Z2luXG59IGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbnMudHMnO1xuZXhwb3J0IHsgQWJvcnRTaWduYWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWJvcnQtc2lnbmFsLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBBbGxXaW5kb3dzRXZlbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IEFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FzeW5jLWVycm9yLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IHJlZ2lzdGVyQXN5bmNFdmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hc3luYy1ldmVudHMtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IENvbXBvbmVudEV4IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbXBvbmVudC1leC50cyc7XG5leHBvcnQgeyBDb25zb2xlRGVidWdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29uc29sZS1kZWJ1Zy1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgQ29yZVBsdWdpblRvZ2dsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlLXBsdWdpbi10b2dnbGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGFzRGlzcG9zYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kaXNwb3NhYmxlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBFbWJlZEV4dGVuc2lvbnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZW1iZWQtZXh0ZW5zaW9ucy1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgR2VuZXJhdGVNYXJrZG93bkxpbmtEZWZhdWx0UGFyYW1zQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQsXG4gIExheW91dFJlYWR5Q29tcG9uZW50XG59IGZyb20gJy4vY29tcG9uZW50cy9sYXlvdXQtcmVhZHktY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE1lbnVFdmVudFJlZ2lzdHJhckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHtcbiAgYXJvdW5kLFxuICBoYXNQYXRjaFRva2VuLFxuICBNb25rZXlBcm91bmRDb21wb25lbnRcbn0gZnJvbSAnLi9jb21wb25lbnRzL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE5vdGVib29rTmF2aWdhdG9yTWVudUV2ZW50UmVnaXN0cmFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL25vdGVib29rLW5hdmlnYXRvci1tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUGx1Z2luQ29udGV4dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tY29udGV4dC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHtcbiAgUGx1Z2luQ29uZmxpY3RTZXZlcml0eSxcbiAgUGx1Z2luR2F0ZUNvbXBvbmVudFxufSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLWdhdGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIFBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgUGx1Z2luTm90aWNlTW9kZVxufSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlIH0gZnJvbSAnLi9jb21wb25lbnRzL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUGx1Z2luU2V0dGluZ3NUYWJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLXNldHRpbmdzLXRhYi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHtcbiAgUGx1Z2luU3VnZ2VzdGlvbkNvbXBvbmVudCxcbiAgU3VnZ2VzdGVkUGx1Z2luU3RhdGVcbn0gZnJvbSAnLi9jb21wb25lbnRzL3BsdWdpbi1zdWdnZXN0aW9uLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBQb2ludGVyUG9zaXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcG9pbnRlci1wb3NpdGlvbi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUmVnaXN0cnlDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVnaXN0cnktY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFJlbGVhc2VOb3Rlc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZWxlYXNlLW5vdGVzLWNvbXBvbmVudC50cyc7XG5leHBvcnQge1xuICBFbXB0eUZvbGRlckJlaGF2aW9yLFxuICBSZW5hbWVEZWxldGVIYW5kbGVyQ29tcG9uZW50XG59IGZyb20gJy4vY29tcG9uZW50cy9yZW5hbWUtZGVsZXRlLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIE5PVF9FTVBUWV9ESVJFQ1RPUllfRVJST1JfQ09ERSxcbiAgUm1kaXJHdWFyZENvbXBvbmVudFxufSBmcm9tICcuL2NvbXBvbmVudHMvcm1kaXItZ3VhcmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFNldHRpbmdzTWlncmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NldHRpbmdzLW1pZ3JhdGlvbi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgU3ludGF4SGlnaGxpZ2h0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3N5bnRheC1oaWdobGlnaHRpbmctY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFRlbXBsYXRlc0xhbmd1YWdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RlbXBsYXRlcy1sYW5ndWFnZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgZ2V0RG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3RvciB9IGZyb20gJy4vY29uc3RydWN0b3JzL2dldC1kb20tZXZlbnRzLWhhbmRsZXJzLWNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi9jc3MtY2xhc3MudHMnO1xuZXhwb3J0IHsgUGx1Z2luRGF0YUhhbmRsZXIgfSBmcm9tICcuL2RhdGEtaGFuZGxlci50cyc7XG5leHBvcnQge1xuICBmaXhUaXRsZSxcbiAgbWFrZUxpbmtXaXRoUGF0aFxufSBmcm9tICcuL2RhdGF2aWV3LWxpbmsudHMnO1xuZXhwb3J0IHtcbiAgZ2V0UmVuZGVyZWRDb250YWluZXIsXG4gIGluc2VydENvZGVCbG9jayxcbiAgcmVsb2FkQ3VycmVudEZpbGVDYWNoZSxcbiAgcmVuZGVySWZyYW1lLFxuICByZW5kZXJQYWdpbmF0ZWRMaXN0LFxuICByZW5kZXJQYWdpbmF0ZWRUYWJsZVxufSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmV4cG9ydCB7IGdldE9ic2lkaWFuTGliRGVidWdnZXIgfSBmcm9tICcuL2RlYnVnLnRzJztcbmV4cG9ydCB7IGJvb3RzdHJhcERlbW9WYXVsdCB9IGZyb20gJy4vZGVtby12YXVsdC1oZWxwZXIudHMnO1xuZXhwb3J0IHtcbiAgZ2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lLFxuICBnZXREZW1vVmF1bHRGb2xkZXJOYW1lXG59IGZyb20gJy4vZGVtby12YXVsdC1uYW1pbmcudHMnO1xuZXhwb3J0IHsgb3BlbkRlbW9WYXVsdCB9IGZyb20gJy4vZGVza3RvcC1kZW1vLXZhdWx0LW9wZW5lci50cyc7XG5leHBvcnQgeyBQbHVnaW5FZGl0b3JFeHRlbnNpb25SZWdpc3RyYXIgfSBmcm9tICcuL2VkaXRvci1leHRlbnNpb24tcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7IFBsdWdpbkVkaXRvclN1Z2dlc3RSZWdpc3RyYXIgfSBmcm9tICcuL2VkaXRvci1zdWdnZXN0LXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBzeW5jT3BlbkVkaXRvckJ1ZmZlcnNGb3JQYXRoLFxuICB0b2dnbGVFZGl0b3JSZWFkT25seVxufSBmcm9tICcuL2VkaXRvci50cyc7XG5leHBvcnQge1xuICBFdmVudFJlZkRpc3Bvc2FibGUsXG4gIHN1YnNjcmliZURpc3Bvc2FibGVFdmVudCxcbiAgc3Vic2NyaWJlRXZlbnRcbn0gZnJvbSAnLi9ldmVudHMudHMnO1xuZXhwb3J0IHsgUGx1Z2luRXh0ZW5zaW9uc1JlZ2lzdHJhciB9IGZyb20gJy4vZXh0ZW5zaW9ucy1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgYXBwbHlDb250ZW50Q2hhbmdlcyxcbiAgYXBwbHlGaWxlQ2hhbmdlcyxcbiAgaXNDYW52YXNDaGFuZ2UsXG4gIGlzQ2FudmFzRmlsZU5vZGVDaGFuZ2UsXG4gIGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UsXG4gIGlzQ29udGVudENoYW5nZSxcbiAgaXNGcm9udG1hdHRlckNoYW5nZSxcbiAgaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzLFxuICB0b0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNcbn0gZnJvbSAnLi9maWxlLWNoYW5nZS50cyc7XG5leHBvcnQgeyByZXZlYWxJbkZpbGVFeHBsb3JlciB9IGZyb20gJy4vZmlsZS1leHBsb3Jlci50cyc7XG5leHBvcnQge1xuICBhZGRBbGlhcyxcbiAgZGVsZXRlQWxpYXMsXG4gIHByb2Nlc3NGcm9udG1hdHRlcixcbiAgd2FpdEZvclBlbmRpbmdMaW5rVXBkYXRlc1xufSBmcm9tICcuL2ZpbGUtbWFuYWdlci50cyc7XG5leHBvcnQge1xuICBhc0FycmF5T2ZGaWxlcyxcbiAgYXNBcnJheU9mRm9sZGVycyxcbiAgYXNGaWxlLFxuICBhc0ZpbGVPck51bGwsXG4gIGFzRm9sZGVyLFxuICBhc0ZvbGRlck9yTnVsbCxcbiAgQkFTRV9GSUxFX0VYVEVOU0lPTixcbiAgQ0FOVkFTX0ZJTEVfRVhURU5TSU9OLFxuICBjaGVja0V4dGVuc2lvbixcbiAgZG9lc0V4aXN0LFxuICBGaWxlU3lzdGVtVHlwZSxcbiAgZ2V0QWJzdHJhY3RGaWxlLFxuICBnZXRBYnN0cmFjdEZpbGVPck51bGwsXG4gIGdldEJhc2VuYW1lLFxuICBnZXRFeHRlbnNpb24sXG4gIGdldEZpbGUsXG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZpbGVTeXN0ZW1UeXBlLFxuICBnZXRGb2xkZXIsXG4gIGdldEZvbGRlck9yTnVsbCxcbiAgZ2V0TWFya2Rvd25GaWxlcyxcbiAgZ2V0T3JDcmVhdGVGaWxlLFxuICBnZXRPckNyZWF0ZUZvbGRlcixcbiAgZ2V0UGF0aCxcbiAgaXNBYnN0cmFjdEZpbGUsXG4gIGlzQmFzZUZpbGUsXG4gIGlzQ2FudmFzRmlsZSxcbiAgaXNGaWxlLFxuICBpc0ZvbGRlcixcbiAgaXNNYXJrZG93bkZpbGUsXG4gIGlzTm90ZSxcbiAgaXNQYXRoT3JGaWxlLFxuICBpc1RyZWF0ZWRBc0F0dGFjaG1lbnQsXG4gIE1BUktET1dOX0ZJTEVfRVhURU5TSU9OLFxuICBNaXNzaW5nUGF0aFRyZWF0bWVudCxcbiAgdHJpbU1hcmtkb3duRXh0ZW5zaW9uXG59IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuZXhwb3J0IHtcbiAgRk9MREVSX05PVEVTX1BMVUdJTl9JRCxcbiAgRm9sZGVyTm90ZUxvY2F0aW9uLFxuICByZXNvbHZlRm9sZGVyTm90ZSxcbiAgcmVzb2x2ZUZvbGRlck5vdGVDb25maWdcbn0gZnJvbSAnLi9mb2xkZXItbm90ZS50cyc7XG5leHBvcnQge1xuICBlbmFibGVGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2YXRpb24sXG4gIHByZXNlcnZlRnJvbnRtYXR0ZXJGb3JtYXR0aW5nXG59IGZyb20gJy4vZnJvbnRtYXR0ZXItZm9ybWF0dGluZy50cyc7XG5leHBvcnQge1xuICBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMsXG4gIHRvRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0c1xufSBmcm9tICcuL2Zyb250bWF0dGVyLWxpbmstY2FjaGUtd2l0aC1vZmZzZXRzLnRzJztcbmV4cG9ydCB7XG4gIGNoZWNrSXNQbGFpbk9iamVjdCxcbiAgcGFyc2VGcm9udG1hdHRlcixcbiAgcmVnaXN0ZXJGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXIsXG4gIHJlbW92ZUVtcHR5RnJvbnRtYXR0ZXJWYWx1ZXMsXG4gIHNldEZyb250bWF0dGVyXG59IGZyb20gJy4vZnJvbnRtYXR0ZXIudHMnO1xuZXhwb3J0IHtcbiAgTElCUkFSWV9TVFlMRVMsXG4gIExJQlJBUllfVkVSU0lPTlxufSBmcm9tICcuL2dlbmVyYXRlZC1kdXJpbmctYnVpbGQudHMnO1xuZXhwb3J0IHsgUGx1Z2luSG92ZXJMaW5rU291cmNlUmVnaXN0cmFyIH0gZnJvbSAnLi9ob3Zlci1saW5rLXNvdXJjZS1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgYXBwZW5kQ29kZUJsb2NrLFxuICBhcHBseVNwZWxsY2hlY2tNb2RlLFxuICBhc0NvZGVCbG9jayxcbiAgY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2Nrc1xufSBmcm9tICcuL2h0bWwtZWxlbWVudC50cyc7XG5leHBvcnQge1xuICBERUZBVUxUX05TLFxuICBpbml0STE4TixcbiAgdFxufSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5leHBvcnQgeyBlbiB9IGZyb20gJy4vaTE4bi9sb2NhbGVzL2VuLnRzJztcbmV4cG9ydCB7XG4gIERFRkFVTFRfTEFOR1VBR0UsXG4gIGRlZmF1bHRUcmFuc2xhdGlvbnNNYXBcbn0gZnJvbSAnLi9pMThuL2xvY2FsZXMvdHJhbnNsYXRpb25zLW1hcC50cyc7XG5leHBvcnQgeyBpc0luT2JzaWRpYW4gfSBmcm9tICcuL2lzLWluLW9ic2lkaWFuLnRzJztcbmV4cG9ydCB7XG4gIGluamVjdExpYnJhcnlTdHlsZXMsXG4gIExBU1RfT0JTSURJQU5fTElCX1ZFUlNJT05fS0VZLFxuICBMRUdBQ1lfTEFTVF9MSUJSQVJZX1ZFUlNJT05fS0VZLFxuICBMRUdBQ1lfTEFTVF9MSUJSQVJZX1ZFUlNJT05fU0VOVElORUwsXG4gIExJQlJBUllfU1RZTEVTX0VMRU1FTlRfSURcbn0gZnJvbSAnLi9saWJyYXJ5LXN0eWxlcy50cyc7XG5leHBvcnQge1xuICBPQlNJRElBTl9MSUJSQVJZX05BTUUsXG4gIE9ic2lkaWFuTGlicmFyeVxufSBmcm9tICcuL2xpYnJhcnkudHMnO1xuZXhwb3J0IHsgbm9ybWFsaXplTGlua05hbWUgfSBmcm9tICcuL2xpbmstbmFtZS50cyc7XG5leHBvcnQge1xuICBidWlsZEJhY2tsaW5rc1NuYXBzaG90LFxuICBjb252ZXJ0TGluayxcbiAgZWRpdEJhY2tsaW5rcyxcbiAgZWRpdEJhY2tsaW5rc1NuYXBzaG90LFxuICBlZGl0TGlua3MsXG4gIGVkaXRMaW5rc0luQ29udGVudCxcbiAgZXh0cmFjdExpbmtGaWxlLFxuICBnZW5lcmF0ZU1hcmtkb3duTGluayxcbiAgZ2VuZXJhdGVSYXdNYXJrZG93bkxpbmssXG4gIGdldEdlbmVyYXRlTWFya2Rvd25MaW5rRGVmYXVsdFBhcmFtc0ZucyxcbiAgaGFzQW5nbGVCcmFja2V0cyxcbiAgaGFzRW1iZWRTeW50YXgsXG4gIGhhc0xlYWRpbmdEb3QsXG4gIGhhc0xlYWRpbmdTbGFzaCxcbiAgaGFzV2lraWxpbmtTeW50YXgsXG4gIExpbmtQYXRoU3R5bGUsXG4gIExpbmtTdHlsZSxcbiAgc2hvdWxkUmVzZXRBbGlhcyxcbiAgc3BsaXRTdWJwYXRoLFxuICB1cGRhdGVGaWxlVXJsTGlua3NJbkNvbnRlbnQsXG4gIHVwZGF0ZUZpbGVVcmxMaW5rc0luRmlsZSxcbiAgdXBkYXRlTGluayxcbiAgdXBkYXRlTGlua3NJbkNvbnRlbnQsXG4gIHVwZGF0ZUxpbmtzSW5GaWxlXG59IGZyb20gJy4vbGluay50cyc7XG5leHBvcnQgeyBpbnZva2VBc3luY0FuZExvZyB9IGZyb20gJy4vbG9nZ2VyLnRzJztcbmV4cG9ydCB7IGxvb3AgfSBmcm9tICcuL2xvb3AudHMnO1xuZXhwb3J0IHsgUGx1Z2luTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JSZWdpc3RyYXIgfSBmcm9tICcuL21hcmtkb3duLWNvZGUtYmxvY2stcHJvY2Vzc29yLXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8sXG4gIGluc2VydEFmdGVyQ29kZUJsb2NrLFxuICBpbnNlcnRCZWZvcmVDb2RlQmxvY2ssXG4gIHJlbW92ZUNvZGVCbG9jayxcbiAgcmVwbGFjZUNvZGVCbG9ja1xufSBmcm9tICcuL21hcmtkb3duLWNvZGUtYmxvY2stcHJvY2Vzc29yLnRzJztcbmV4cG9ydCB7IFBsdWdpbk1hcmtkb3duUG9zdFByb2Nlc3NvclJlZ2lzdHJhciB9IGZyb20gJy4vbWFya2Rvd24tcG9zdC1wcm9jZXNzb3ItcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7IGdldEZ1bGxDb250ZW50SHRtbCB9IGZyb20gJy4vbWFya2Rvd24tdmlldy50cyc7XG5leHBvcnQge1xuICBmdWxsUmVuZGVyLFxuICBtYXJrZG93blRvSHRtbCxcbiAgcmVnaXN0ZXJMaW5rSGFuZGxlcnMsXG4gIHJlbmRlckV4dGVybmFsTGluayxcbiAgcmVuZGVySW50ZXJuYWxMaW5rXG59IGZyb20gJy4vbWFya2Rvd24udHMnO1xuZXhwb3J0IHtcbiAgQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfUExVR0lOX0lELFxuICBCQUNLTElOS19DQUNIRV9QTFVHSU5fSUQsXG4gIENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLFxuICBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHksXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgsXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlLFxuICBnZXRDYWNoZVNhZmUsXG4gIGdldEZyb250bWF0dGVyU2FmZSxcbiAgZ2V0TGlua3MsXG4gIGhhc0JhY2tsaW5rQ2FjaGVQbHVnaW4sXG4gIGlzQ2FjaGVkTWV0YWRhdGFFeCxcbiAgcGFyc2VNZXRhZGF0YSxcbiAgcmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUsXG4gIHJlZ2lzdGVyRmlsZXMsXG4gIHVucmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUsXG4gIHVucmVnaXN0ZXJGaWxlc1xufSBmcm9tICcuL21ldGFkYXRhLWNhY2hlLnRzJztcbmV4cG9ydCB7IGFsZXJ0IH0gZnJvbSAnLi9tb2RhbHMvYWxlcnQudHMnO1xuZXhwb3J0IHsgY29uZmlybSB9IGZyb20gJy4vbW9kYWxzL2NvbmZpcm0udHMnO1xuZXhwb3J0IHsgTWluaW1pemFibGVNb2RhbCB9IGZyb20gJy4vbW9kYWxzL21pbmltaXphYmxlLW1vZGFsLnRzJztcbmV4cG9ydCB7XG4gIE1vZGFsQ29tbWFuZEJ1aWxkZXIsXG4gIE1vZGFsQ29tbWFuZHNSZW5kZXJNb2RlXG59IGZyb20gJy4vbW9kYWxzL21vZGFsLWNvbW1hbmQtYnVpbGRlci50cyc7XG5leHBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL21vZGFscy9tb2RhbC50cyc7XG5leHBvcnQgeyBwcm9tcHQgfSBmcm9tICcuL21vZGFscy9wcm9tcHQudHMnO1xuZXhwb3J0IHsgc2VsZWN0SXRlbSB9IGZyb20gJy4vbW9kYWxzL3NlbGVjdC1pdGVtLnRzJztcbmV4cG9ydCB7IHNlbGVjdE9wdGlvbiB9IGZyb20gJy4vbW9kYWxzL3NlbGVjdC1vcHRpb24udHMnO1xuZXhwb3J0IHsgU3VnZ2VzdE1vZGFsQ29tbWFuZEJ1aWxkZXIgfSBmcm9tICcuL21vZGFscy9zdWdnZXN0LW1vZGFsLWNvbW1hbmQtYnVpbGRlci50cyc7XG5leHBvcnQge1xuICBmaWx0ZXJIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aHMsXG4gIGZpbmROb1ByaW9yaXR5V2lubmVyUmVhc29uLFxuICBmaW5kTm90ZVByaW9yaXR5UmFuayxcbiAgTk9fUFJJT1JJVFlfTUFUQ0gsXG4gIE5vUHJpb3JpdHlXaW5uZXJSZWFzb24sXG4gIHBpY2tIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aFxufSBmcm9tICcuL25vdGUtcHJpb3JpdHkudHMnO1xuZXhwb3J0IHtcbiAgTk9URUJPT0tfTkFWSUdBVE9SX01FTlVfU09VUkNFLFxuICBOT1RFQk9PS19OQVZJR0FUT1JfUExVR0lOX0lELFxuICByZXNvbHZlTm90ZWJvb2tOYXZpZ2F0b3JBcGlcbn0gZnJvbSAnLi9ub3RlYm9vay1uYXZpZ2F0b3IudHMnO1xuZXhwb3J0IHtcbiAgZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlLFxuICByZXNldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSxcbiAgc2hhcmVUeXBlc2NyaXB0TGliU3RhdGVXaXRoT2JzaWRpYW5EZXZVdGlsc1N0YXRlXG59IGZyb20gJy4vb2JzaWRpYW4tZGV2LXV0aWxzLXN0YXRlLnRzJztcbmV4cG9ydCB7IFBsdWdpbk9ic2lkaWFuUHJvdG9jb2xIYW5kbGVyUmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi1wcm90b2NvbC1oYW5kbGVyLXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBnZXROZXdMaW5rRm9ybWF0LFxuICBpc1NwZWxsY2hlY2tFbmFibGVkLFxuICBpc1NwZWxsY2hlY2tFbmFibGVkRm9yTW9kZSxcbiAgc2hvdWxkVXNlV2lraWxpbmtzLFxuICBTcGVsbGNoZWNrTW9kZVxufSBmcm9tICcuL29ic2lkaWFuLXNldHRpbmdzLnRzJztcbmV4cG9ydCB7XG4gIGVzY2FwZUFsaWFzLFxuICBpc1BhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlLFxuICBpc1BhcnNlTGlua1JlZmVyZW5jZSxcbiAgcGFyc2VGcm9udG1hdHRlckxpbmtzLFxuICBwYXJzZUxpbmssXG4gIHBhcnNlTGlua3MsXG4gIHRvUGFyc2VMaW5rUmVmZXJlbmNlLFxuICB1bmVzY2FwZUFsaWFzXG59IGZyb20gJy4vcGFyc2UtbGluay50cyc7XG5leHBvcnQge1xuICBQYXRoU2V0dGluZ3MsXG4gIHBhdGhzVmFsaWRhdG9yXG59IGZyb20gJy4vcGF0aC1zZXR0aW5ncy50cyc7XG5leHBvcnQgeyBwcmludFRvUGRmIH0gZnJvbSAnLi9wZGYudHMnO1xuZXhwb3J0IHsgUGx1Z2luQ2xpSGFuZGxlclJlZ2lzdHJhciB9IGZyb20gJy4vcGx1Z2luLWNsaS1oYW5kbGVyLXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBjcmVhdGVBcmd1bWVudHNTY2hlbWEsXG4gIGNyZWF0ZVR5cGVHdWFyZFNjaGVtYVxufSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLXNjaGVtYS50cyc7XG5leHBvcnQge1xuICBmaW5kUGx1Z2luQXBpLFxuICBQbHVnaW5BcGlQYXlsb2FkS2luZCxcbiAgUGx1Z2luQXBpUmV2b2tlZEVycm9yLFxuICBQbHVnaW5BcGlVbmF2YWlsYWJpbGl0eVJlYXNvbixcbiAgUGx1Z2luQXBpVW5hdmFpbGFibGVFcnJvcixcbiAgUGx1Z2luQXBpVmFsaWRhdGlvbkVycm9yLFxuICBwdWJsaXNoUGx1Z2luQXBpLFxuICB3YXRjaFBsdWdpbkFwaVxufSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcbmV4cG9ydCB7XG4gIGFkZFBsdWdpbkNzc0NsYXNzZXMsXG4gIGluaXREZWJ1Z0NvbnRyb2xsZXIsXG4gIGluaXRQbHVnaW5Db250ZXh0XG59IGZyb20gJy4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcbmV4cG9ydCB7IFBsdWdpbkV2ZW50U291cmNlSW1wbCB9IGZyb20gJy4vcGx1Z2luL3BsdWdpbi1ldmVudC1zb3VyY2UudHMnO1xuZXhwb3J0IHtcbiAgZ2V0SW5zdGFsbGVkUGx1Z2luU3RhdGUsXG4gIGdldEluc3RhbGxlZFBsdWdpblZlcnNpb24sXG4gIGluc3RhbGxBbmRFbmFibGVQbHVnaW4sXG4gIEluc3RhbGxlZFBsdWdpblN0YXRlXG59IGZyb20gJy4vcGx1Z2luL3BsdWdpbi1pbnN0YWxsLXN0YXRlLnRzJztcbmV4cG9ydCB7XG4gIFBMVUdJTl9MT0FERURfRVZFTlRfTkFNRSxcbiAgUExVR0lOX1VOTE9BREVEX0VWRU5UX05BTUUsXG4gIHRyaWdnZXJQbHVnaW5MaWZlY3ljbGVFdmVudFxufSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tbGlmZWN5Y2xlLWV2ZW50cy50cyc7XG5leHBvcnQge1xuICBQbHVnaW5TZXR0aW5nc1RhYkJhc2UsXG4gIFNBVkVfVE9fRklMRV9DT05URVhUXG59IGZyb20gJy4vcGx1Z2luL3BsdWdpbi1zZXR0aW5ncy10YWIudHMnO1xuZXhwb3J0IHtcbiAgUGx1Z2luQmFzZSxcbiAgcmVsb2FkUGx1Z2luLFxuICBzaG93RXJyb3JBbmREaXNhYmxlUGx1Z2luXG59IGZyb20gJy4vcGx1Z2luL3BsdWdpbi50cyc7XG5leHBvcnQgeyBnZXRTZXR0aW5nc01pZ3JhdGlvbkFwaUNvbnRyYWN0IH0gZnJvbSAnLi9wbHVnaW4vc2V0dGluZ3MtbWlncmF0aW9uLWFwaS50cyc7XG5leHBvcnQgeyBlZGl0RmllbGRzSW5Qb3BvdmVyIH0gZnJvbSAnLi9wb3BvdmVycy9maWVsZC1wb3BvdmVyLnRzJztcbmV4cG9ydCB7XG4gIGNyZWF0ZUFuY2hvckZyb21Eb2N1bWVudENlbnRlcixcbiAgY3JlYXRlQW5jaG9yRnJvbUVsZW1lbnQsXG4gIGNyZWF0ZUFuY2hvckZyb21Qb2ludCxcbiAgY3JlYXRlQW5jaG9yRnJvbVNlbGVjdGlvblxufSBmcm9tICcuL3BvcG92ZXJzL3BvcG92ZXItYW5jaG9yLnRzJztcbmV4cG9ydCB7IHNob3dQb3BvdmVyIH0gZnJvbSAnLi9wb3BvdmVycy9wb3BvdmVyLnRzJztcbmV4cG9ydCB7XG4gIGNoZWNrUHJvcGVydHlFbnRyeU1hdGNoZXMsXG4gIGlzUHJvcGVydHlFbnRyeSxcbiAgUFJPUEVSVFlfRU5UUllfUFJFRklYXG59IGZyb20gJy4vcHJvcGVydHktZW50cnkudHMnO1xuZXhwb3J0IHtcbiAgYWRkVG9RdWV1ZSxcbiAgYWRkVG9RdWV1ZUFuZFdhaXQsXG4gIGZsdXNoUXVldWVcbn0gZnJvbSAnLi9xdWV1ZS50cyc7XG5leHBvcnQge1xuICBBcHBDb250ZXh0LFxuICB1c2VBcHBcbn0gZnJvbSAnLi9yZWFjdC9hcHAtY29udGV4dC50cyc7XG5leHBvcnQge1xuICBpc0NhbnZhc0ZpbGVOb2RlUmVmZXJlbmNlLFxuICBpc0NhbnZhc1JlZmVyZW5jZSxcbiAgaXNDYW52YXNUZXh0Tm9kZVJlZmVyZW5jZSxcbiAgaXNSZWZlcmVuY2VJbk9mZnNldFJhbmdlLFxuICByZWZlcmVuY2VUb0ZpbGVDaGFuZ2UsXG4gIHNvcnRSZWZlcmVuY2VzXG59IGZyb20gJy4vcmVmZXJlbmNlLnRzJztcbmV4cG9ydCB7XG4gIGlzUmVzb3VyY2VMb2NrZWRGb3JQYXRoLFxuICBpc1Jlc291cmNlTG9ja2VkRm9yUGF0aEJ5QW5jZXN0b3IsXG4gIGxvY2tSZXNvdXJjZUZvclBhdGgsXG4gIHJlcXVlc3RSZXNvdXJjZVVubG9ja0ZvclBhdGgsXG4gIFJlc291cmNlTG9ja0NvbXBvbmVudCxcbiAgUmVzb3VyY2VMb2NrZWRFcnJvcixcbiAgdW5sb2NrUmVzb3VyY2VGb3JQYXRoXG59IGZyb20gJy4vcmVzb3VyY2UtbG9jay50cyc7XG5leHBvcnQgeyByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsIH0gZnJvbSAnLi9yZXNvdXJjZS11cmwudHMnO1xuZXhwb3J0IHsgUGx1Z2luUmliYm9uSWNvblJlZ2lzdHJhciB9IGZyb20gJy4vcmliYm9uLWljb24tcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvY2hlY2tib3gtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IENvZGVIaWdobGlnaHRlckNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL2NvZGUtaGlnaGxpZ2h0ZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IERhdGVDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9kYXRlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBEYXRlVGltZUNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL2RhdGUtdGltZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgRW1haWxDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9lbWFpbC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgRmlsZUNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL2ZpbGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE1vbnRoQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvbW9udGgtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgTXVsdGlwbGVFbWFpbENvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL211bHRpcGxlLWVtYWlsLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBNdWx0aXBsZUZpbGVDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS1maWxlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBNdWx0aXBsZVRleHRDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9udW1iZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvcGFzc3dvcmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGVuc3VyZVdyYXBwZWQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9zZXR0aW5nLWNvbXBvbmVudC13cmFwcGVyLnRzJztcbmV4cG9ydCB7IFRlbGVwaG9uZUNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3RlbGVwaG9uZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgZ2V0VGV4dEJhc2VkQ29tcG9uZW50VmFsdWUgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy90ZXh0LWJhc2VkLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBUaW1lQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvdGltZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHJpU3RhdGVDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3RyaS1zdGF0ZS1jaGVja2JveC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHlwZWREcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3R5cGVkLWRyb3Bkb3duLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBUeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC1tdWx0aXBsZS1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHlwZWRSYW5nZVRleHRDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC1yYW5nZS10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBUeXBlZFRleHRDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBVcmxDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy91cmwtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGdldFZhbGlkYXRvckNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3ZhbGlkYXRvci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgV2Vla0NvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3dlZWstY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIGFkb3B0U2V0dGluZ0V4LFxuICBTZXR0aW5nRXhcbn0gZnJvbSAnLi9zZXR0aW5nLWV4LnRzJztcbmV4cG9ydCB7IFNldHRpbmdHcm91cEV4IH0gZnJvbSAnLi9zZXR0aW5nLWdyb3VwLWV4LnRzJztcbmV4cG9ydCB7IFBsdWdpblN0YXR1c0Jhckl0ZW1SZWdpc3RyYXIgfSBmcm9tICcuL3N0YXR1cy1iYXItaXRlbS1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgZ2V0VGVtcGxhdGVyRnVuY3Rpb25zLFxuICBnZXRUZW1wbGF0ZXJSZW5kZXJUYXJnZXRGaWxlLFxuICBwYXJzZVRlbXBsYXRlLFxuICByZXF1aXJlVGVtcGxhdGVyQXBpLFxuICByZXNvbHZlVGVtcGxhdGVyQXBpLFxuICBURU1QTEFURVJfUExVR0lOX0lELFxuICBUZW1wbGF0ZXJBY3RpdmVGaWxlUHJvdmlkZXIsXG4gIFRlbXBsYXRlclJ1bk1vZGUsXG4gIFRlbXBsYXRlclVuYXZhaWxhYmlsaXR5UmVhc29uLFxuICBUZW1wbGF0ZXJVbmF2YWlsYWJsZUVycm9yXG59IGZyb20gJy4vdGVtcGxhdGVyLnRzJztcbmV4cG9ydCB7IER1cmF0aW9uVHJhbnNmb3JtZXIgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9kdXJhdGlvbi10cmFuc2Zvcm1lci50cyc7XG5leHBvcnQge1xuICBjbGlja0VsZW1lbnQsXG4gIGNsaWNrTW91c2UsXG4gIGhvdmVyRWxlbWVudCxcbiAgbW92ZU1vdXNlLFxuICBwcmVzc0tleSxcbiAgdHlwZUludG9FZGl0b3IsXG4gIHVuaG92ZXJFbGVtZW50XG59IGZyb20gJy4vdHJ1c3RlZC1pbnB1dC50cyc7XG5leHBvcnQge1xuICBnZXRPc0FuZE9ic2lkaWFuVW5zYWZlUGF0aENoYXJzUmVnRXhwLFxuICBnZXRPc1Vuc2FmZVBhdGhDaGFyc1JlZ0V4cCxcbiAgaGFzV2luZG93c1RyYWlsaW5nQ2hhcnMsXG4gIGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIsXG4gIGlzV2luZG93c1Jlc2VydmVkTmFtZSxcbiAgT0JTSURJQU5fVU5TQUZFX0ZJTEVOQU1FX0NIQVJTLFxuICB0cmltV2luZG93c1RyYWlsaW5nQ2hhcnMsXG4gIFVOSVhfVU5TQUZFX1BBVEhfQ0hBUlMsXG4gIFdJTkRPV1NfVU5TQUZFX1BBVEhfQ0hBUlNcbn0gZnJvbSAnLi92YWxpZGF0aW9uLnRzJztcbmV4cG9ydCB7XG4gIGRlbGV0ZUlmTm90VXNlZCxcbiAgRGVsZXRlSWZOb3RVc2VkUmVzdWx0XG59IGZyb20gJy4vdmF1bHQtZGVsZXRlLnRzJztcbmV4cG9ydCB7IFZhdWx0VHJhbnNhY3Rpb24gfSBmcm9tICcuL3ZhdWx0LXRyYW5zYWN0aW9uLnRzJztcbmV4cG9ydCB7XG4gIGNsZWFudXBFbXB0eUZvbGRlcnMsXG4gIGNvcHlTYWZlLFxuICBjcmVhdGVGb2xkZXJTYWZlLFxuICBDcmVhdGVGb2xkZXJTYWZlUmVzdWx0LFxuICBjcmVhdGVUZW1wb3JhcnlGaWxlLFxuICBjcmVhdGVUZW1wb3JhcnlGb2xkZXIsXG4gIGRlbGV0ZUVtcHR5Rm9sZGVyLFxuICBkZWxldGVFbXB0eUZvbGRlckhpZXJhcmNoeSxcbiAgZ2V0QWJzdHJhY3RGaWxlUGF0aFNhZmUsXG4gIGdldEF2YWlsYWJsZVBhdGgsXG4gIGdldEZpbGVQYXRoU2FmZSxcbiAgZ2V0Rm9sZGVyUGF0aFNhZmUsXG4gIGdldE1hcmtkb3duRmlsZXNTb3J0ZWQsXG4gIGdldE5vdGVGaWxlc1NvcnRlZCxcbiAgZ2V0T3JDcmVhdGVBYnN0cmFjdEZpbGVTYWZlLFxuICBnZXRPckNyZWF0ZUZpbGVTYWZlLFxuICBnZXRPckNyZWF0ZUZvbGRlclNhZmUsXG4gIGdldFNhZmVSZW5hbWVQYXRoLFxuICBJbnZva2VGaWxlQWN0aW9uU2FmZVJlc3VsdCxcbiAgaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrLFxuICBpc0NoaWxkLFxuICBpc0NoaWxkT3JTZWxmLFxuICBpc0VtcHR5Rm9sZGVyLFxuICBsaXN0U2FmZSxcbiAgcHJvY2VzcyxcbiAgcmVhZFNhZmUsXG4gIHJlbmFtZVNhZmUsXG4gIHNhdmVOb3RlLFxuICB0cmFzaFNhZmVcbn0gZnJvbSAnLi92YXVsdC50cyc7XG5leHBvcnQgeyBQbHVnaW5WaWV3UmVnaXN0cmFyIH0gZnJvbSAnLi92aWV3LXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBlbnN1cmVMYXlvdXRSZWFkeSxcbiAgZ2V0QWxsQ29udGFpbmVycyxcbiAgZ2V0QWxsRG9tV2luZG93cyxcbiAgZ2V0TWFpbldpbmRvdyxcbiAgc3dpdGNoVG9NYWluV2luZG93LFxuICBzd2l0Y2hUb1dpbmRvd1xufSBmcm9tICcuL3dvcmtzcGFjZS50cyc7XG5leHBvcnQge1xuICBhYm9ydFNpZ25hbEFueSxcbiAgYWJvcnRTaWduYWxOZXZlcixcbiAgYWJvcnRTaWduYWxUaW1lb3V0LFxuICBnZXRTaGFyZWRBYm9ydENvbnRyb2xsZXIsXG4gIGdldFNoYXJlZEFib3J0U2lnbmFsLFxuICBJTkZJTklURV9USU1FT1VULFxuICBvbkFib3J0LFxuICBSZXNldHRhYmxlQWJvcnRDb250cm9sbGVyLFxuICB3YWl0Rm9yQWJvcnRcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Fib3J0LWNvbnRyb2xsZXInO1xuZXhwb3J0IHsgY3JlYXRlQWdncmVnYXRlRXJyb3IgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYWdncmVnYXRlLWVycm9yJztcbmV4cG9ydCB7XG4gIGZpbHRlckluUGxhY2UsXG4gIHNuYXBzaG90LFxuICB1bmlxdWUsXG4gIHVuaXF1ZUluUGxhY2Vcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FycmF5JztcbmV4cG9ydCB7IHRvQXJyYXlCdWZmZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXJyYXktYnVmZmVyJztcbmV4cG9ydCB7XG4gIGFkZEVycm9ySGFuZGxlcixcbiAgYXN5bmNGaWx0ZXIsXG4gIGFzeW5jRmlsdGVySW5QbGFjZSxcbiAgYXN5bmNGbGF0TWFwLFxuICBhc3luY01hcCxcbiAgY2hhaW4sXG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgY29udmVydFN5bmNUb0FzeW5jLFxuICBoYW5kbGVTaWxlbnRFcnJvcixcbiAgaWdub3JlRXJyb3IsXG4gIGludm9rZUFzeW5jU2FmZWx5LFxuICBpbnZva2VBc3luY1NhZmVseUFmdGVyRGVsYXksXG4gIG1hcmtzQXNUZXJtaW5hdGVSZXRyeSxcbiAgbmV2ZXJFbmRzLFxuICBuZXh0VGlja0FzeW5jLFxuICBub3JtYWxpemVQcm9taXNhYmxlLFxuICBwcm9taXNlQWxsQXN5bmNGbnNTZXF1ZW50aWFsbHksXG4gIHByb21pc2VBbGxTZXF1ZW50aWFsbHksXG4gIHF1ZXVlTWljcm90YXNrQXN5bmMsXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jLFxuICByZXRyeVdpdGhUaW1lb3V0LFxuICBydW5XaXRoVGltZW91dCxcbiAgc2V0SW1tZWRpYXRlQXN5bmMsXG4gIHNldFRpbWVvdXRBc3luYyxcbiAgc2xlZXAsXG4gIHRpbWVvdXQsXG4gIHRvQXJyYXlcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmV4cG9ydCB7XG4gIEFzeW5jRXZlbnRSZWZEaXNwb3NhYmxlLFxuICBBc3luY0V2ZW50cyxcbiAgQXN5bmNFdmVudHNCYXNlLFxuICBtaXhpbkFzeW5jRXZlbnRzLFxuICBzdWJzY3JpYmVBc3luY0Rpc3Bvc2FibGVFdmVudFxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMtZXZlbnRzJztcbmV4cG9ydCB7XG4gIEFTWU5DX09QRVJBVElPTl9IT09LX0tFWSxcbiAgQVNZTkNfT1BFUkFUSU9OX0hPT0tfVkVSU0lPTixcbiAgZ2V0QXN5bmNPcGVyYXRpb25Ib29rLFxuICBub3RpZnlBc3luY09wZXJhdGlvblN0YXJ0ZWQsXG4gIHNldEFzeW5jT3BlcmF0aW9uSG9va1xufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMtb3BlcmF0aW9uLWhvb2snO1xuZXhwb3J0IHsgQmVlcGVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2JlZXBlcic7XG5leHBvcnQge1xuICBibG9iVG9BcnJheUJ1ZmZlcixcbiAgYmxvYlRvRGF0YVVybCxcbiAgYmxvYlRvSnBlZ0FycmF5QnVmZmVyLFxuICBkYXRhVXJsVG9BcnJheUJ1ZmZlcixcbiAgaXNJbWFnZUZpbGVcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Jsb2InO1xuZXhwb3J0IHsgZm9ybWF0Qnl0ZXMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYnl0ZXMnO1xuZXhwb3J0IHtcbiAgZW5hYmxlTGlicmFyeURlYnVnZ2VycyxcbiAgZ2V0RGVidWdDb250cm9sbGVyLFxuICBnZXREZWJ1Z2dlcixcbiAgZ2V0TGliRGVidWdnZXIsXG4gIHByaW50V2l0aFN0YWNrVHJhY2UsXG4gIHNob3dJbml0aWFsRGVidWdNZXNzYWdlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9kZWJ1Zyc7XG5leHBvcnQgeyBleHRyYWN0WmlwQXJjaGl2ZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9kZXNrdG9wLXppcC1leHRyYWN0b3InO1xuZXhwb3J0IHtcbiAgQXN5bmNDYWxsYmFja0Rpc3Bvc2FibGUsXG4gIEFzeW5jRGlzcG9zYWJsZUJhc2UsXG4gIENhbGxiYWNrRGlzcG9zYWJsZSxcbiAgQ29tYmluZUFzeW5jRGlzcG9zYWJsZSxcbiAgQ29tYmluZURpc3Bvc2FibGUsXG4gIERpc3Bvc2FibGVCYXNlLFxuICBkaXNwb3NlLFxuICBkaXNwb3NlQXN5bmMsXG4gIERpc3Bvc2VFcnJvckJlaGF2aW9yLFxuICBEaXNwb3NlT3JkZXIsXG4gIGlzQXN5bmNEaXNwb3NhYmxlLFxuICBpc0FzeW5jRGlzcG9zYWJsZUV4LFxuICBpc0Rpc3Bvc2FibGUsXG4gIGlzRGlzcG9zYWJsZUV4LFxuICBNdWx0aXBsZURpc3Bvc2VCZWhhdmlvcixcbiAgdG9Bc3luY0Rpc3Bvc2FibGVFeCxcbiAgdG9EaXNwb3NhYmxlRXhcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Rpc3Bvc2FibGUnO1xuZXhwb3J0IHtcbiAgZ2V0RW51bUtleSxcbiAgZ2V0RW51bVZhbHVlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9lbnVtJztcbmV4cG9ydCB7XG4gIEFTWU5DX1dSQVBQRVJfRVJST1JfTUVTU0FHRSxcbiAgQ3VzdG9tU3RhY2tUcmFjZUVycm9yLFxuICBkcmFpbkNvbGxlY3RlZFVuaGFuZGxlZEFzeW5jRXJyb3JzLFxuICBlbWl0QXN5bmNFcnJvckV2ZW50LFxuICBlcnJvclRvU3RyaW5nLFxuICBFcnJvcldyYXBwZXIsXG4gIGdldFN0YWNrVHJhY2UsXG4gIGlzQXN5bmNFcnJvcklnbm9yZUNvbnRleHRBY3RpdmUsXG4gIHByaW50RXJyb3IsXG4gIHJlZ2lzdGVyQXN5bmNFcnJvckV2ZW50SGFuZGxlcixcbiAgU2lsZW50RXJyb3IsXG4gIHN0YXJ0QXN5bmNFcnJvcklnbm9yZUNvbnRleHQsXG4gIHN0YXJ0Q29sbGVjdGluZ1VuaGFuZGxlZEFzeW5jRXJyb3JzLFxuICBzdG9wQ29sbGVjdGluZ1VuaGFuZGxlZEFzeW5jRXJyb3JzLFxuICB0aHJvd0V4cHJlc3Npb25cbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmV4cG9ydCB7XG4gIGNsb25lRnVuY3Rpb24sXG4gIGNyZWF0ZUZ1bmN0aW9uLFxuICBnZXRGdW5jdGlvbkV4cHJlc3Npb25TdHJpbmcsXG4gIG5vb3AsXG4gIG5vb3BBc3luYyxcbiAgbm9vcEFzeW5jU2luZ2xldG9uUHJvbWlzZSxcbiAgb21pdEFzeW5jUmV0dXJuVHlwZSxcbiAgb21pdFJldHVyblR5cGVcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Z1bmN0aW9uJztcbmV4cG9ydCB7XG4gIGNyZWF0ZURpdkFzeW5jLFxuICBjcmVhdGVFbEFzeW5jLFxuICBjcmVhdGVGcmFnbWVudEFzeW5jLFxuICBjcmVhdGVTcGFuQXN5bmMsXG4gIGNyZWF0ZVN2Z0FzeW5jLFxuICBlbnN1cmVMb2FkZWQsXG4gIGdldERvY3VtZW50V2luZG93LFxuICBnZXRaSW5kZXgsXG4gIGlzRWxlbWVudFZpc2libGVJbk9mZnNldFBhcmVudCxcbiAgaXNMb2FkZWQsXG4gIG9uQW5jZXN0b3JTY3JvbGxPclJlc2l6ZSxcbiAgdG9QeCxcbiAgd2FpdFVudGlsQ29ubmVjdGVkXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9odG1sLWVsZW1lbnQnO1xuZXhwb3J0IHtcbiAgZXh0cmFjdEpwZWdNZXRhZGF0YVNlZ21lbnRzLFxuICBpbmplY3RKcGVnTWV0YWRhdGFTZWdtZW50c1xufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvanBlZy1tZXRhZGF0YSc7XG5leHBvcnQge1xuICBERUZBVUxUX0RFQlVHX05BTUVTUEFDRSxcbiAgTGlicmFyeSxcbiAgTElCUkFSWV9OQU1FXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9saWJyYXJ5JztcbmV4cG9ydCB7XG4gIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyxcbiAgY2FzdFRvLFxuICBjbG9uZVdpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyxcbiAgZGVsZXRlUHJvcGVydGllcyxcbiAgZGVsZXRlUHJvcGVydHksXG4gIGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcCxcbiAgRnVuY3Rpb25IYW5kbGluZ01vZGUsXG4gIGdldEFsbEVudHJpZXMsXG4gIGdldEFsbEtleXMsXG4gIGdldE5lc3RlZFByb3BlcnR5VmFsdWUsXG4gIGdldFByb3RvdHlwZU9mLFxuICBpc0RlZXBFcXVhbCxcbiAgbmFtZW9mLFxuICBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMsXG4gIHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMsXG4gIHNldE5lc3RlZFByb3BlcnR5VmFsdWUsXG4gIHRvSnNvblxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvb2JqZWN0LXV0aWxzJztcbmV4cG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkZWxpbWl0ZXIsXG4gIGRpcm5hbWUsXG4gIGV4dG5hbWUsXG4gIGZvcm1hdCxcbiAgZ2V0RmlsZU5hbWUsXG4gIGdldEZvbGRlck5hbWUsXG4gIGlzQWJzb2x1dGUsXG4gIGpvaW4sXG4gIG1ha2VGaWxlTmFtZSxcbiAgbm9ybWFsaXplSWZSZWxhdGl2ZSxcbiAgbm9ybWFsaXplUGF0aCxcbiAgcGFyc2UsXG4gIHBvc2l4LFxuICByZWxhdGl2ZSxcbiAgcmVzb2x2ZSxcbiAgc2VwYXJhdG9yLFxuICB0b1Bvc2l4QnVmZmVyLFxuICB0b1Bvc2l4UGF0aFxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5leHBvcnQge1xuICBBTFdBWVNfTUFUQ0hfUkVHX0VYUCxcbiAgZXNjYXBlUmVnRXhwLFxuICBnZXRNYW5kYXRvcnlOYW1lZEdyb3VwLFxuICBnZXRPcHRpb25hbE5hbWVkR3JvdXAsXG4gIGlzVmFsaWRSZWdFeHAsXG4gIE5FVkVSX01BVENIX1JFR19FWFAsXG4gIG9uZU9mLFxuICBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcmVnLWV4cCc7XG5leHBvcnQge1xuICBFTVBUWSxcbiAgZW5zdXJlRW5kc1dpdGgsXG4gIGVuc3VyZUxmRW5kaW5ncyxcbiAgZW5zdXJlU3RhcnRzV2l0aCxcbiAgZXNjYXBlLFxuICBnZXRMZk5vcm1hbGl6ZWRPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwcGVyLFxuICBoYXNTaW5nbGVPY2N1cnJlbmNlLFxuICBpbmRlbnQsXG4gIGluc2VydEF0LFxuICBtYWtlVmFsaWRWYXJpYWJsZU5hbWUsXG4gIG5vcm1hbGl6ZVN0cmluZyxcbiAgcmVwbGFjZSxcbiAgcmVwbGFjZUFsbCxcbiAgcmVwbGFjZUFsbEFzeW5jLFxuICB0cmltRW5kLFxuICB0cmltU3RhcnQsXG4gIHVuZXNjYXBlLFxuICB1bmluZGVudFxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvc3RyaW5nJztcbmV4cG9ydCB7IERhdGVUcmFuc2Zvcm1lciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90cmFuc2Zvcm1lcnMvZGF0ZS10cmFuc2Zvcm1lcic7XG5leHBvcnQgeyBHcm91cFRyYW5zZm9ybWVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3RyYW5zZm9ybWVycy9ncm91cC10cmFuc2Zvcm1lcic7XG5leHBvcnQgeyBNYXBUcmFuc2Zvcm1lciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90cmFuc2Zvcm1lcnMvbWFwLXRyYW5zZm9ybWVyJztcbmV4cG9ydCB7IFNldFRyYW5zZm9ybWVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3RyYW5zZm9ybWVycy9zZXQtdHJhbnNmb3JtZXInO1xuZXhwb3J0IHsgU2tpcFByaXZhdGVQcm9wZXJ0eVRyYW5zZm9ybWVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3RyYW5zZm9ybWVycy9za2lwLXByaXZhdGUtcHJvcGVydHktdHJhbnNmb3JtZXInO1xuZXhwb3J0IHsgVHJhbnNmb3JtZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHJhbnNmb3JtZXJzL3RyYW5zZm9ybWVyJztcbmV4cG9ydCB7IFR3b1dheU1hcFRyYW5zZm9ybWVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3RyYW5zZm9ybWVycy90d28td2F5LW1hcC10cmFuc2Zvcm1lcic7XG5leHBvcnQgeyBUeXBlZFRyYW5zZm9ybWVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3RyYW5zZm9ybWVycy90eXBlZC10cmFuc2Zvcm1lcic7XG5leHBvcnQgeyBUd29XYXlNYXAgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHdvLXdheS1tYXAnO1xuZXhwb3J0IHsgVHlwZUFzc2VydGVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUnO1xuZXhwb3J0IHtcbiAgYXNzZXJ0LFxuICBhc3NlcnRHZW5lcmljT2JqZWN0LFxuICBhc3NlcnROZXZlcixcbiAgYXNzZXJ0Tm9uTnVsbGFibGUsXG4gIGVuc3VyZUdlbmVyaWNPYmplY3QsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5leHBvcnQge1xuICBnZXRUeXBlc2NyaXB0TGliU3RhdGUsXG4gIGdldFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3QsXG4gIHJlc2V0VHlwZXNjcmlwdExpYlN0YXRlLFxuICBUWVBFU0NSSVBUX0xJQl9TVEFURV9LRVksXG4gIFRZUEVTQ1JJUFRfTElCX1NUQVRFX1ZFUlNJT05cbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGVzY3JpcHQtbGliLXN0YXRlJztcbmV4cG9ydCB7XG4gIGVuY29kZVVybCxcbiAgaXNGaWxlVXJsLFxuICBpc1VybCxcbiAgbm9ybWFsaXplRmlsZVVybCxcbiAgcGF0aFRvRmlsZVVybFxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdXJsJztcbmV4cG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS1wcm92aWRlcic7XG5leHBvcnQgeyBWYWx1ZVdyYXBwZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdmFsdWUtd3JhcHBlcic7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFB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QUFDN0MsdUJBV087QUFDUCxrQ0FBb0M7QUFDcEMsMkJBUU87QUFDUCx3QkFVTztBQUNQLDBCQUdPO0FBQ1AsK0JBQWlDO0FBQ2pDLG1CQThCTztBQUNQLDRCQUFvQztBQUNwQyx1QkFPTztBQUNQLDhCQVVPO0FBQ1AsNkJBQXFDO0FBQ3JDLG1CQUtPO0FBQ1AsMEJBQThCO0FBQzlCLG1CQTRCTztBQUNQLDBCQU1PO0FBQ1Asa0NBTU87QUFDUCxvQkFBdUI7QUFDdkIsa0JBTU87QUFDUCxtQkFBNEI7QUFDNUIsSUFBQUEsZ0JBT087QUFDUCxtQ0FBa0M7QUFDbEMsd0JBa0JPO0FBQ1Asa0JBR087QUFDUCxtQkFnQk87QUFDUCxzQkFTTztBQUNQLElBQUFDLHVCQWNPO0FBQ1AsMkJBR087QUFDUCxJQUFBQyxrQkFJTztBQUNQLDBCQWtCTztBQUNQLGtCQW9CTztBQUNQLHFCQVNPO0FBQ1Asb0JBbUJPO0FBQ1AsOEJBQWdDO0FBQ2hDLCtCQUFpQztBQUNqQyw2QkFBK0I7QUFDL0IsNkJBQStCO0FBQy9CLCtDQUErQztBQUMvQyx5QkFBNEI7QUFDNUIscUNBQXFDO0FBQ3JDLCtCQUFpQztBQUNqQyx5QkFBMEI7QUFDMUIsa0JBQTZCO0FBQzdCLHlCQU9PO0FBQ1Asa0NBTU87QUFDUCxpQkFNTztBQUNQLDRCQUE2QjtBQUM3QiwyQkFBNkI7IiwKICAibmFtZXMiOiBbImltcG9ydF9kZWJ1ZyIsICJpbXBvcnRfaHRtbF9lbGVtZW50IiwgImltcG9ydF9saWJyYXJ5Il0KfQo=
1672
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL19fbWVyZ2VkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0IHsgQXBwQWN0aXZlRmlsZVByb3ZpZGVyIH0gZnJvbSAnLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5leHBvcnQgeyBnZXRBcHAgfSBmcm9tICcuL2FwcC50cyc7XG5leHBvcnQge1xuICByZXRyeVdpdGhUaW1lb3V0Tm90aWNlLFxuICBydW5XaXRoVGltZW91dE5vdGljZVxufSBmcm9tICcuL2FzeW5jLXdpdGgtbm90aWNlLnRzJztcbmV4cG9ydCB7XG4gIEF0dGFjaG1lbnRQYXRoQ29udGV4dCxcbiAgQ1VTVE9NX0FUVEFDSE1FTlRfTE9DQVRJT05fUExVR0lOX0lELFxuICBEVU1NWV9QQVRILFxuICBnZXRBdHRhY2htZW50RmlsZVBhdGgsXG4gIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoLFxuICBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aFN5bmNPck51bGwsXG4gIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyxcbiAgZ2V0Q2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyRnVuY3Rpb24sXG4gIGhhc093bkF0dGFjaG1lbnRGb2xkZXIsXG4gIGlzQXRQcm9wZXJBdHRhY2htZW50UGF0aFxufSBmcm9tICcuL2F0dGFjaG1lbnQtcGF0aC50cyc7XG5leHBvcnQge1xuICBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoLFxuICByZWJhc2VQYXRoT250b0ZvbGRlclxufSBmcm9tICcuL2F0dGFjaG1lbnQtdW5pdC1mb2xkZXIudHMnO1xuZXhwb3J0IHsgZ2V0SW5kZXhlZEJhY2tsaW5rc0ZvckZpbGUgfSBmcm9tICcuL2JhY2tsaW5rLWluZGV4LnRzJztcbmV4cG9ydCB7XG4gIHJlbmRlckJhY2tsaW5rc1RhYmxlLFxuICByZW5kZXJEZWxheWVkQmFja2xpbmtzLFxuICByZW5kZXJEZWxheWVkQmFja2xpbmtzRm9yRm9sZGVyXG59IGZyb20gJy4vYmFja2xpbmsudHMnO1xuZXhwb3J0IHsgUGx1Z2luQmFzZXNWaWV3UmVnaXN0cmFyIH0gZnJvbSAnLi9iYXNlcy12aWV3LXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBDYWxsb3V0TW9kZSxcbiAgcmVuZGVyQ2FsbG91dCxcbiAgd3JhcEZvckNhbGxvdXRcbn0gZnJvbSAnLi9jYWxsb3V0LnRzJztcbmV4cG9ydCB7IGdldENhbnZhc1JlZmVyZW5jZXMgfSBmcm9tICcuL2NhbnZhcy50cyc7XG5leHBvcnQge1xuICBDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgsXG4gIGdldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCxcbiAgc2V0Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4LFxuICB1bnNldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleFxufSBmcm9tICcuL2Nhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleC50cyc7XG5leHBvcnQgeyBjcmVhdGVDb2RlQmxvY2tSZWdFeHAgfSBmcm9tICcuL2NvZGUtYmxvY2stcmVnLWV4cC50cyc7XG5leHBvcnQgeyBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vY29tbWFuZC1oYW5kbGVycy9hYnN0cmFjdC1maWxlLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBDb21tYW5kSGFuZGxlckNvbXBvbmVudCB9IGZyb20gJy4vY29tbWFuZC1oYW5kbGVycy9jb21tYW5kLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IENvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9jb21tYW5kLWhhbmRsZXJzL2NvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBFZGl0b3JDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vY29tbWFuZC1oYW5kbGVycy9lZGl0b3ItY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IEZpbGVDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vY29tbWFuZC1oYW5kbGVycy9maWxlLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBGb2xkZXJDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vY29tbWFuZC1oYW5kbGVycy9mb2xkZXItY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IEdsb2JhbENvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9jb21tYW5kLWhhbmRsZXJzL2dsb2JhbC1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgT3BlbkRlbW9WYXVsdENvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9jb21tYW5kLWhhbmRsZXJzL29wZW4tZGVtby12YXVsdC1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgT3BlblNldHRpbmdzQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL2NvbW1hbmQtaGFuZGxlcnMvb3Blbi1zZXR0aW5ncy1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgVW5sb2NrQWN0aXZlTm90ZUNvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9jb21tYW5kLWhhbmRsZXJzL3VubG9jay1hY3RpdmUtbm90ZS1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgUGx1Z2luQ29tbWFuZFJlZ2lzdHJhciB9IGZyb20gJy4vY29tbWFuZC1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgY29uZmlndXJlQ29tbXVuaXR5UGx1Z2luLFxuICBDb25maWd1cmVDb21tdW5pdHlQbHVnaW5SZXN1bHQsXG4gIGRpc2FibGVDb21tdW5pdHlQbHVnaW4sXG4gIGVuYWJsZUNvbW11bml0eVBsdWdpbixcbiAgZ2V0Q29tbXVuaXR5UGx1Z2luUmVwbyxcbiAgZ2V0TGF0ZXN0UmVsZWFzZVZlcnNpb24sXG4gIGluc3RhbGxDb21tdW5pdHlQbHVnaW4sXG4gIGluc3RhbGxDb25maWd1cmVFbmFibGVDb21tdW5pdHlQbHVnaW4sXG4gIHNlYXJjaENvbW11bml0eVBsdWdpbnMsXG4gIHRvZ2dsZUVuYWJsZUNvbW11bml0eVBsdWdpbixcbiAgdG9nZ2xlSW5zdGFsbENvbW11bml0eVBsdWdpbixcbiAgdW5pbnN0YWxsQ29tbXVuaXR5UGx1Z2luXG59IGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbnMudHMnO1xuZXhwb3J0IHsgQWJvcnRTaWduYWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWJvcnQtc2lnbmFsLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBBbGxXaW5kb3dzRXZlbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IEFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FzeW5jLWVycm9yLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IHJlZ2lzdGVyQXN5bmNFdmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hc3luYy1ldmVudHMtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IENvbXBvbmVudEV4IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbXBvbmVudC1leC50cyc7XG5leHBvcnQgeyBDb25zb2xlRGVidWdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29uc29sZS1kZWJ1Zy1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgQ29yZVBsdWdpblRvZ2dsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlLXBsdWdpbi10b2dnbGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGFzRGlzcG9zYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kaXNwb3NhYmxlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBFbWJlZEV4dGVuc2lvbnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZW1iZWQtZXh0ZW5zaW9ucy1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgR2VuZXJhdGVNYXJrZG93bkxpbmtEZWZhdWx0UGFyYW1zQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQsXG4gIExheW91dFJlYWR5Q29tcG9uZW50XG59IGZyb20gJy4vY29tcG9uZW50cy9sYXlvdXQtcmVhZHktY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE1lbnVFdmVudFJlZ2lzdHJhckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHtcbiAgYXJvdW5kLFxuICBoYXNQYXRjaFRva2VuLFxuICBNb25rZXlBcm91bmRDb21wb25lbnRcbn0gZnJvbSAnLi9jb21wb25lbnRzL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE5vdGVib29rTmF2aWdhdG9yTWVudUV2ZW50UmVnaXN0cmFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL25vdGVib29rLW5hdmlnYXRvci1tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUGx1Z2luQ29udGV4dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tY29udGV4dC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHtcbiAgUGx1Z2luQ29uZmxpY3RTZXZlcml0eSxcbiAgUGx1Z2luR2F0ZUNvbXBvbmVudFxufSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLWdhdGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIFBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgUGx1Z2luTm90aWNlTW9kZVxufSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlIH0gZnJvbSAnLi9jb21wb25lbnRzL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUGx1Z2luU2V0dGluZ3NUYWJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLXNldHRpbmdzLXRhYi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHtcbiAgUGx1Z2luU3VnZ2VzdGlvbkNvbXBvbmVudCxcbiAgU3VnZ2VzdGVkUGx1Z2luU3RhdGVcbn0gZnJvbSAnLi9jb21wb25lbnRzL3BsdWdpbi1zdWdnZXN0aW9uLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBQb2ludGVyUG9zaXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcG9pbnRlci1wb3NpdGlvbi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUmVnaXN0cnlDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVnaXN0cnktY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFJlbGVhc2VOb3Rlc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZWxlYXNlLW5vdGVzLWNvbXBvbmVudC50cyc7XG5leHBvcnQge1xuICBFbXB0eUZvbGRlckJlaGF2aW9yLFxuICBSZW5hbWVEZWxldGVIYW5kbGVyQ29tcG9uZW50XG59IGZyb20gJy4vY29tcG9uZW50cy9yZW5hbWUtZGVsZXRlLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIE5PVF9FTVBUWV9ESVJFQ1RPUllfRVJST1JfQ09ERSxcbiAgUm1kaXJHdWFyZENvbXBvbmVudFxufSBmcm9tICcuL2NvbXBvbmVudHMvcm1kaXItZ3VhcmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFNldHRpbmdzTWlncmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NldHRpbmdzLW1pZ3JhdGlvbi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgU3ludGF4SGlnaGxpZ2h0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3N5bnRheC1oaWdobGlnaHRpbmctY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFRlbXBsYXRlc0xhbmd1YWdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RlbXBsYXRlcy1sYW5ndWFnZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgZ2V0RG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3RvciB9IGZyb20gJy4vY29uc3RydWN0b3JzL2dldC1kb20tZXZlbnRzLWhhbmRsZXJzLWNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi9jc3MtY2xhc3MudHMnO1xuZXhwb3J0IHsgUGx1Z2luRGF0YUhhbmRsZXIgfSBmcm9tICcuL2RhdGEtaGFuZGxlci50cyc7XG5leHBvcnQge1xuICBmaXhUaXRsZSxcbiAgbWFrZUxpbmtXaXRoUGF0aFxufSBmcm9tICcuL2RhdGF2aWV3LWxpbmsudHMnO1xuZXhwb3J0IHtcbiAgZ2V0UmVuZGVyZWRDb250YWluZXIsXG4gIGluc2VydENvZGVCbG9jayxcbiAgcmVsb2FkQ3VycmVudEZpbGVDYWNoZSxcbiAgcmVuZGVySWZyYW1lLFxuICByZW5kZXJQYWdpbmF0ZWRMaXN0LFxuICByZW5kZXJQYWdpbmF0ZWRUYWJsZVxufSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmV4cG9ydCB7IGdldE9ic2lkaWFuTGliRGVidWdnZXIgfSBmcm9tICcuL2RlYnVnLnRzJztcbmV4cG9ydCB7IGJvb3RzdHJhcERlbW9WYXVsdCB9IGZyb20gJy4vZGVtby12YXVsdC1oZWxwZXIudHMnO1xuZXhwb3J0IHtcbiAgZ2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lLFxuICBnZXREZW1vVmF1bHRGb2xkZXJOYW1lXG59IGZyb20gJy4vZGVtby12YXVsdC1uYW1pbmcudHMnO1xuZXhwb3J0IHsgb3BlbkRlbW9WYXVsdCB9IGZyb20gJy4vZGVza3RvcC1kZW1vLXZhdWx0LW9wZW5lci50cyc7XG5leHBvcnQgeyBQbHVnaW5FZGl0b3JFeHRlbnNpb25SZWdpc3RyYXIgfSBmcm9tICcuL2VkaXRvci1leHRlbnNpb24tcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7IFBsdWdpbkVkaXRvclN1Z2dlc3RSZWdpc3RyYXIgfSBmcm9tICcuL2VkaXRvci1zdWdnZXN0LXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBzeW5jT3BlbkVkaXRvckJ1ZmZlcnNGb3JQYXRoLFxuICB0b2dnbGVFZGl0b3JSZWFkT25seVxufSBmcm9tICcuL2VkaXRvci50cyc7XG5leHBvcnQge1xuICBFdmVudFJlZkRpc3Bvc2FibGUsXG4gIHN1YnNjcmliZURpc3Bvc2FibGVFdmVudCxcbiAgc3Vic2NyaWJlRXZlbnRcbn0gZnJvbSAnLi9ldmVudHMudHMnO1xuZXhwb3J0IHsgUGx1Z2luRXh0ZW5zaW9uc1JlZ2lzdHJhciB9IGZyb20gJy4vZXh0ZW5zaW9ucy1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgYXBwbHlDb250ZW50Q2hhbmdlcyxcbiAgYXBwbHlGaWxlQ2hhbmdlcyxcbiAgaXNDYW52YXNDaGFuZ2UsXG4gIGlzQ2FudmFzRmlsZU5vZGVDaGFuZ2UsXG4gIGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UsXG4gIGlzQ29udGVudENoYW5nZSxcbiAgaXNGcm9udG1hdHRlckNoYW5nZSxcbiAgaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzLFxuICB0b0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNcbn0gZnJvbSAnLi9maWxlLWNoYW5nZS50cyc7XG5leHBvcnQgeyByZXZlYWxJbkZpbGVFeHBsb3JlciB9IGZyb20gJy4vZmlsZS1leHBsb3Jlci50cyc7XG5leHBvcnQge1xuICBhZGRBbGlhcyxcbiAgZGVsZXRlQWxpYXMsXG4gIHByb2Nlc3NGcm9udG1hdHRlcixcbiAgd2FpdEZvclBlbmRpbmdMaW5rVXBkYXRlc1xufSBmcm9tICcuL2ZpbGUtbWFuYWdlci50cyc7XG5leHBvcnQge1xuICBhc0FycmF5T2ZGaWxlcyxcbiAgYXNBcnJheU9mRm9sZGVycyxcbiAgYXNGaWxlLFxuICBhc0ZpbGVPck51bGwsXG4gIGFzRm9sZGVyLFxuICBhc0ZvbGRlck9yTnVsbCxcbiAgQkFTRV9GSUxFX0VYVEVOU0lPTixcbiAgQ0FOVkFTX0ZJTEVfRVhURU5TSU9OLFxuICBjaGVja0V4dGVuc2lvbixcbiAgZG9lc0V4aXN0LFxuICBGaWxlU3lzdGVtVHlwZSxcbiAgZ2V0QWJzdHJhY3RGaWxlLFxuICBnZXRBYnN0cmFjdEZpbGVPck51bGwsXG4gIGdldEJhc2VuYW1lLFxuICBnZXRFeHRlbnNpb24sXG4gIGdldEZpbGUsXG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZpbGVTeXN0ZW1UeXBlLFxuICBnZXRGb2xkZXIsXG4gIGdldEZvbGRlck9yTnVsbCxcbiAgZ2V0TWFya2Rvd25GaWxlcyxcbiAgZ2V0T3JDcmVhdGVGaWxlLFxuICBnZXRPckNyZWF0ZUZvbGRlcixcbiAgZ2V0UGF0aCxcbiAgaXNBYnN0cmFjdEZpbGUsXG4gIGlzQmFzZUZpbGUsXG4gIGlzQ2FudmFzRmlsZSxcbiAgaXNGaWxlLFxuICBpc0ZvbGRlcixcbiAgaXNNYXJrZG93bkZpbGUsXG4gIGlzTm90ZSxcbiAgaXNQYXRoT3JGaWxlLFxuICBpc1RyZWF0ZWRBc0F0dGFjaG1lbnQsXG4gIE1BUktET1dOX0ZJTEVfRVhURU5TSU9OLFxuICBNaXNzaW5nUGF0aFRyZWF0bWVudCxcbiAgdHJpbU1hcmtkb3duRXh0ZW5zaW9uXG59IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuZXhwb3J0IHtcbiAgRk9MREVSX05PVEVTX1BMVUdJTl9JRCxcbiAgRm9sZGVyTm90ZUxvY2F0aW9uLFxuICByZXNvbHZlRm9sZGVyTm90ZSxcbiAgcmVzb2x2ZUZvbGRlck5vdGVDb25maWdcbn0gZnJvbSAnLi9mb2xkZXItbm90ZS50cyc7XG5leHBvcnQge1xuICBlbmFibGVGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2YXRpb24sXG4gIHByZXNlcnZlRnJvbnRtYXR0ZXJGb3JtYXR0aW5nXG59IGZyb20gJy4vZnJvbnRtYXR0ZXItZm9ybWF0dGluZy50cyc7XG5leHBvcnQge1xuICBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMsXG4gIHRvRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0c1xufSBmcm9tICcuL2Zyb250bWF0dGVyLWxpbmstY2FjaGUtd2l0aC1vZmZzZXRzLnRzJztcbmV4cG9ydCB7XG4gIGNoZWNrSXNQbGFpbk9iamVjdCxcbiAgcGFyc2VGcm9udG1hdHRlcixcbiAgcmVnaXN0ZXJGcm9udG1hdHRlckZvcm1hdHRpbmdQcmVzZXJ2ZXIsXG4gIHJlbW92ZUVtcHR5RnJvbnRtYXR0ZXJWYWx1ZXMsXG4gIHNldEZyb250bWF0dGVyXG59IGZyb20gJy4vZnJvbnRtYXR0ZXIudHMnO1xuZXhwb3J0IHtcbiAgTElCUkFSWV9TVFlMRVMsXG4gIExJQlJBUllfVkVSU0lPTlxufSBmcm9tICcuL2dlbmVyYXRlZC1kdXJpbmctYnVpbGQudHMnO1xuZXhwb3J0IHsgUGx1Z2luSG92ZXJMaW5rU291cmNlUmVnaXN0cmFyIH0gZnJvbSAnLi9ob3Zlci1saW5rLXNvdXJjZS1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgYXBwZW5kQ29kZUJsb2NrLFxuICBhcHBlbmRUZXh0T3JGcmFnbWVudENsb25lLFxuICBhcHBseVNwZWxsY2hlY2tNb2RlLFxuICBhc0NvZGVCbG9jayxcbiAgY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2Nrc1xufSBmcm9tICcuL2h0bWwtZWxlbWVudC50cyc7XG5leHBvcnQge1xuICBERUZBVUxUX05TLFxuICBpbml0STE4TixcbiAgdFxufSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5leHBvcnQgeyBlbiB9IGZyb20gJy4vaTE4bi9sb2NhbGVzL2VuLnRzJztcbmV4cG9ydCB7XG4gIERFRkFVTFRfTEFOR1VBR0UsXG4gIGRlZmF1bHRUcmFuc2xhdGlvbnNNYXBcbn0gZnJvbSAnLi9pMThuL2xvY2FsZXMvdHJhbnNsYXRpb25zLW1hcC50cyc7XG5leHBvcnQgeyBpc0luT2JzaWRpYW4gfSBmcm9tICcuL2lzLWluLW9ic2lkaWFuLnRzJztcbmV4cG9ydCB7XG4gIGluamVjdExpYnJhcnlTdHlsZXMsXG4gIExBU1RfT0JTSURJQU5fTElCX1ZFUlNJT05fS0VZLFxuICBMRUdBQ1lfTEFTVF9MSUJSQVJZX1ZFUlNJT05fS0VZLFxuICBMRUdBQ1lfTEFTVF9MSUJSQVJZX1ZFUlNJT05fU0VOVElORUwsXG4gIExJQlJBUllfU1RZTEVTX0VMRU1FTlRfSURcbn0gZnJvbSAnLi9saWJyYXJ5LXN0eWxlcy50cyc7XG5leHBvcnQge1xuICBPQlNJRElBTl9MSUJSQVJZX05BTUUsXG4gIE9ic2lkaWFuTGlicmFyeVxufSBmcm9tICcuL2xpYnJhcnkudHMnO1xuZXhwb3J0IHsgbm9ybWFsaXplTGlua05hbWUgfSBmcm9tICcuL2xpbmstbmFtZS50cyc7XG5leHBvcnQge1xuICBidWlsZEJhY2tsaW5rc1NuYXBzaG90LFxuICBjb252ZXJ0TGluayxcbiAgZWRpdEJhY2tsaW5rcyxcbiAgZWRpdEJhY2tsaW5rc1NuYXBzaG90LFxuICBlZGl0TGlua3MsXG4gIGVkaXRMaW5rc0luQ29udGVudCxcbiAgZXh0cmFjdExpbmtGaWxlLFxuICBnZW5lcmF0ZU1hcmtkb3duTGluayxcbiAgZ2VuZXJhdGVSYXdNYXJrZG93bkxpbmssXG4gIGdldEdlbmVyYXRlTWFya2Rvd25MaW5rRGVmYXVsdFBhcmFtc0ZucyxcbiAgaGFzQW5nbGVCcmFja2V0cyxcbiAgaGFzRW1iZWRTeW50YXgsXG4gIGhhc0xlYWRpbmdEb3QsXG4gIGhhc0xlYWRpbmdTbGFzaCxcbiAgaGFzV2lraWxpbmtTeW50YXgsXG4gIExpbmtQYXRoU3R5bGUsXG4gIExpbmtTdHlsZSxcbiAgc2hvdWxkUmVzZXRBbGlhcyxcbiAgc3BsaXRTdWJwYXRoLFxuICB1cGRhdGVGaWxlVXJsTGlua3NJbkNvbnRlbnQsXG4gIHVwZGF0ZUZpbGVVcmxMaW5rc0luRmlsZSxcbiAgdXBkYXRlTGluayxcbiAgdXBkYXRlTGlua3NJbkNvbnRlbnQsXG4gIHVwZGF0ZUxpbmtzSW5GaWxlXG59IGZyb20gJy4vbGluay50cyc7XG5leHBvcnQgeyBpbnZva2VBc3luY0FuZExvZyB9IGZyb20gJy4vbG9nZ2VyLnRzJztcbmV4cG9ydCB7IGxvb3AgfSBmcm9tICcuL2xvb3AudHMnO1xuZXhwb3J0IHsgUGx1Z2luTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JSZWdpc3RyYXIgfSBmcm9tICcuL21hcmtkb3duLWNvZGUtYmxvY2stcHJvY2Vzc29yLXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8sXG4gIGluc2VydEFmdGVyQ29kZUJsb2NrLFxuICBpbnNlcnRCZWZvcmVDb2RlQmxvY2ssXG4gIHJlbW92ZUNvZGVCbG9jayxcbiAgcmVwbGFjZUNvZGVCbG9ja1xufSBmcm9tICcuL21hcmtkb3duLWNvZGUtYmxvY2stcHJvY2Vzc29yLnRzJztcbmV4cG9ydCB7IFBsdWdpbk1hcmtkb3duUG9zdFByb2Nlc3NvclJlZ2lzdHJhciB9IGZyb20gJy4vbWFya2Rvd24tcG9zdC1wcm9jZXNzb3ItcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7IGdldEZ1bGxDb250ZW50SHRtbCB9IGZyb20gJy4vbWFya2Rvd24tdmlldy50cyc7XG5leHBvcnQge1xuICBmdWxsUmVuZGVyLFxuICBtYXJrZG93blRvSHRtbCxcbiAgcmVnaXN0ZXJMaW5rSGFuZGxlcnMsXG4gIHJlbmRlckV4dGVybmFsTGluayxcbiAgcmVuZGVySW50ZXJuYWxMaW5rXG59IGZyb20gJy4vbWFya2Rvd24udHMnO1xuZXhwb3J0IHtcbiAgQURWQU5DRURfTUVUQURBVEFfQ0FDSEVfUExVR0lOX0lELFxuICBCQUNLTElOS19DQUNIRV9QTFVHSU5fSUQsXG4gIENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLFxuICBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHksXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgsXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlLFxuICBnZXRDYWNoZVNhZmUsXG4gIGdldEZyb250bWF0dGVyU2FmZSxcbiAgZ2V0TGlua3MsXG4gIGhhc0JhY2tsaW5rQ2FjaGVQbHVnaW4sXG4gIGlzQ2FjaGVkTWV0YWRhdGFFeCxcbiAgcGFyc2VNZXRhZGF0YSxcbiAgcmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUsXG4gIHJlZ2lzdGVyRmlsZXMsXG4gIHVucmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUsXG4gIHVucmVnaXN0ZXJGaWxlc1xufSBmcm9tICcuL21ldGFkYXRhLWNhY2hlLnRzJztcbmV4cG9ydCB7IGFsZXJ0IH0gZnJvbSAnLi9tb2RhbHMvYWxlcnQudHMnO1xuZXhwb3J0IHsgY29uZmlybSB9IGZyb20gJy4vbW9kYWxzL2NvbmZpcm0udHMnO1xuZXhwb3J0IHsgTWluaW1pemFibGVNb2RhbCB9IGZyb20gJy4vbW9kYWxzL21pbmltaXphYmxlLW1vZGFsLnRzJztcbmV4cG9ydCB7XG4gIE1vZGFsQ29tbWFuZEJ1aWxkZXIsXG4gIE1vZGFsQ29tbWFuZHNSZW5kZXJNb2RlXG59IGZyb20gJy4vbW9kYWxzL21vZGFsLWNvbW1hbmQtYnVpbGRlci50cyc7XG5leHBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL21vZGFscy9tb2RhbC50cyc7XG5leHBvcnQgeyBwcm9tcHQgfSBmcm9tICcuL21vZGFscy9wcm9tcHQudHMnO1xuZXhwb3J0IHsgc2VsZWN0SXRlbSB9IGZyb20gJy4vbW9kYWxzL3NlbGVjdC1pdGVtLnRzJztcbmV4cG9ydCB7IHNlbGVjdE9wdGlvbiB9IGZyb20gJy4vbW9kYWxzL3NlbGVjdC1vcHRpb24udHMnO1xuZXhwb3J0IHsgU3VnZ2VzdE1vZGFsQ29tbWFuZEJ1aWxkZXIgfSBmcm9tICcuL21vZGFscy9zdWdnZXN0LW1vZGFsLWNvbW1hbmQtYnVpbGRlci50cyc7XG5leHBvcnQge1xuICBmaWx0ZXJIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aHMsXG4gIGZpbmROb1ByaW9yaXR5V2lubmVyUmVhc29uLFxuICBmaW5kTm90ZVByaW9yaXR5UmFuayxcbiAgTk9fUFJJT1JJVFlfTUFUQ0gsXG4gIE5vUHJpb3JpdHlXaW5uZXJSZWFzb24sXG4gIHBpY2tIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aFxufSBmcm9tICcuL25vdGUtcHJpb3JpdHkudHMnO1xuZXhwb3J0IHtcbiAgTk9URUJPT0tfTkFWSUdBVE9SX01FTlVfU09VUkNFLFxuICBOT1RFQk9PS19OQVZJR0FUT1JfUExVR0lOX0lELFxuICByZXNvbHZlTm90ZWJvb2tOYXZpZ2F0b3JBcGlcbn0gZnJvbSAnLi9ub3RlYm9vay1uYXZpZ2F0b3IudHMnO1xuZXhwb3J0IHtcbiAgZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlLFxuICByZXNldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSxcbiAgc2hhcmVUeXBlc2NyaXB0TGliU3RhdGVXaXRoT2JzaWRpYW5EZXZVdGlsc1N0YXRlXG59IGZyb20gJy4vb2JzaWRpYW4tZGV2LXV0aWxzLXN0YXRlLnRzJztcbmV4cG9ydCB7IFBsdWdpbk9ic2lkaWFuUHJvdG9jb2xIYW5kbGVyUmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi1wcm90b2NvbC1oYW5kbGVyLXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBnZXROZXdMaW5rRm9ybWF0LFxuICBpc1NwZWxsY2hlY2tFbmFibGVkLFxuICBpc1NwZWxsY2hlY2tFbmFibGVkRm9yTW9kZSxcbiAgc2hvdWxkVXNlV2lraWxpbmtzLFxuICBTcGVsbGNoZWNrTW9kZVxufSBmcm9tICcuL29ic2lkaWFuLXNldHRpbmdzLnRzJztcbmV4cG9ydCB7XG4gIGVzY2FwZUFsaWFzLFxuICBpc1BhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlLFxuICBpc1BhcnNlTGlua1JlZmVyZW5jZSxcbiAgcGFyc2VGcm9udG1hdHRlckxpbmtzLFxuICBwYXJzZUxpbmssXG4gIHBhcnNlTGlua3MsXG4gIHRvUGFyc2VMaW5rUmVmZXJlbmNlLFxuICB1bmVzY2FwZUFsaWFzXG59IGZyb20gJy4vcGFyc2UtbGluay50cyc7XG5leHBvcnQge1xuICBQYXRoU2V0dGluZ3MsXG4gIHBhdGhzVmFsaWRhdG9yXG59IGZyb20gJy4vcGF0aC1zZXR0aW5ncy50cyc7XG5leHBvcnQgeyBwcmludFRvUGRmIH0gZnJvbSAnLi9wZGYudHMnO1xuZXhwb3J0IHsgUGx1Z2luQ2xpSGFuZGxlclJlZ2lzdHJhciB9IGZyb20gJy4vcGx1Z2luLWNsaS1oYW5kbGVyLXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBjcmVhdGVBcmd1bWVudHNTY2hlbWEsXG4gIGNyZWF0ZVR5cGVHdWFyZFNjaGVtYVxufSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLXNjaGVtYS50cyc7XG5leHBvcnQge1xuICBmaW5kUGx1Z2luQXBpLFxuICBQbHVnaW5BcGlQYXlsb2FkS2luZCxcbiAgUGx1Z2luQXBpUmV2b2tlZEVycm9yLFxuICBQbHVnaW5BcGlVbmF2YWlsYWJpbGl0eVJlYXNvbixcbiAgUGx1Z2luQXBpVW5hdmFpbGFibGVFcnJvcixcbiAgUGx1Z2luQXBpVmFsaWRhdGlvbkVycm9yLFxuICBwdWJsaXNoUGx1Z2luQXBpLFxuICB3YXRjaFBsdWdpbkFwaVxufSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcbmV4cG9ydCB7XG4gIGFkZFBsdWdpbkNzc0NsYXNzZXMsXG4gIGluaXREZWJ1Z0NvbnRyb2xsZXIsXG4gIGluaXRQbHVnaW5Db250ZXh0XG59IGZyb20gJy4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcbmV4cG9ydCB7IFBsdWdpbkV2ZW50U291cmNlSW1wbCB9IGZyb20gJy4vcGx1Z2luL3BsdWdpbi1ldmVudC1zb3VyY2UudHMnO1xuZXhwb3J0IHtcbiAgZ2V0SW5zdGFsbGVkUGx1Z2luU3RhdGUsXG4gIGdldEluc3RhbGxlZFBsdWdpblZlcnNpb24sXG4gIGluc3RhbGxBbmRFbmFibGVQbHVnaW4sXG4gIEluc3RhbGxlZFBsdWdpblN0YXRlXG59IGZyb20gJy4vcGx1Z2luL3BsdWdpbi1pbnN0YWxsLXN0YXRlLnRzJztcbmV4cG9ydCB7XG4gIFBMVUdJTl9MT0FERURfRVZFTlRfTkFNRSxcbiAgUExVR0lOX1VOTE9BREVEX0VWRU5UX05BTUUsXG4gIHRyaWdnZXJQbHVnaW5MaWZlY3ljbGVFdmVudFxufSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tbGlmZWN5Y2xlLWV2ZW50cy50cyc7XG5leHBvcnQge1xuICBQbHVnaW5TZXR0aW5nc1RhYkJhc2UsXG4gIFNBVkVfVE9fRklMRV9DT05URVhUXG59IGZyb20gJy4vcGx1Z2luL3BsdWdpbi1zZXR0aW5ncy10YWIudHMnO1xuZXhwb3J0IHtcbiAgUGx1Z2luQmFzZSxcbiAgcmVsb2FkUGx1Z2luLFxuICBzaG93RXJyb3JBbmREaXNhYmxlUGx1Z2luXG59IGZyb20gJy4vcGx1Z2luL3BsdWdpbi50cyc7XG5leHBvcnQgeyBnZXRTZXR0aW5nc01pZ3JhdGlvbkFwaUNvbnRyYWN0IH0gZnJvbSAnLi9wbHVnaW4vc2V0dGluZ3MtbWlncmF0aW9uLWFwaS50cyc7XG5leHBvcnQgeyBlZGl0RmllbGRzSW5Qb3BvdmVyIH0gZnJvbSAnLi9wb3BvdmVycy9maWVsZC1wb3BvdmVyLnRzJztcbmV4cG9ydCB7XG4gIGNyZWF0ZUFuY2hvckZyb21Eb2N1bWVudENlbnRlcixcbiAgY3JlYXRlQW5jaG9yRnJvbUVsZW1lbnQsXG4gIGNyZWF0ZUFuY2hvckZyb21Qb2ludCxcbiAgY3JlYXRlQW5jaG9yRnJvbVNlbGVjdGlvblxufSBmcm9tICcuL3BvcG92ZXJzL3BvcG92ZXItYW5jaG9yLnRzJztcbmV4cG9ydCB7IHNob3dQb3BvdmVyIH0gZnJvbSAnLi9wb3BvdmVycy9wb3BvdmVyLnRzJztcbmV4cG9ydCB7XG4gIGNoZWNrUHJvcGVydHlFbnRyeU1hdGNoZXMsXG4gIGlzUHJvcGVydHlFbnRyeSxcbiAgUFJPUEVSVFlfRU5UUllfUFJFRklYXG59IGZyb20gJy4vcHJvcGVydHktZW50cnkudHMnO1xuZXhwb3J0IHtcbiAgYWRkVG9RdWV1ZSxcbiAgYWRkVG9RdWV1ZUFuZFdhaXQsXG4gIGZsdXNoUXVldWVcbn0gZnJvbSAnLi9xdWV1ZS50cyc7XG5leHBvcnQge1xuICBBcHBDb250ZXh0LFxuICB1c2VBcHBcbn0gZnJvbSAnLi9yZWFjdC9hcHAtY29udGV4dC50cyc7XG5leHBvcnQge1xuICBpc0NhbnZhc0ZpbGVOb2RlUmVmZXJlbmNlLFxuICBpc0NhbnZhc1JlZmVyZW5jZSxcbiAgaXNDYW52YXNUZXh0Tm9kZVJlZmVyZW5jZSxcbiAgaXNSZWZlcmVuY2VJbk9mZnNldFJhbmdlLFxuICByZWZlcmVuY2VUb0ZpbGVDaGFuZ2UsXG4gIHNvcnRSZWZlcmVuY2VzXG59IGZyb20gJy4vcmVmZXJlbmNlLnRzJztcbmV4cG9ydCB7XG4gIGlzUmVzb3VyY2VMb2NrZWRGb3JQYXRoLFxuICBpc1Jlc291cmNlTG9ja2VkRm9yUGF0aEJ5QW5jZXN0b3IsXG4gIGxvY2tSZXNvdXJjZUZvclBhdGgsXG4gIHJlcXVlc3RSZXNvdXJjZVVubG9ja0ZvclBhdGgsXG4gIFJlc291cmNlTG9ja0NvbXBvbmVudCxcbiAgUmVzb3VyY2VMb2NrZWRFcnJvcixcbiAgdW5sb2NrUmVzb3VyY2VGb3JQYXRoXG59IGZyb20gJy4vcmVzb3VyY2UtbG9jay50cyc7XG5leHBvcnQgeyByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsIH0gZnJvbSAnLi9yZXNvdXJjZS11cmwudHMnO1xuZXhwb3J0IHsgUGx1Z2luUmliYm9uSWNvblJlZ2lzdHJhciB9IGZyb20gJy4vcmliYm9uLWljb24tcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvY2hlY2tib3gtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IENvZGVIaWdobGlnaHRlckNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL2NvZGUtaGlnaGxpZ2h0ZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IERhdGVDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9kYXRlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBEYXRlVGltZUNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL2RhdGUtdGltZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgRW1haWxDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9lbWFpbC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgRmlsZUNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL2ZpbGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE1vbnRoQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvbW9udGgtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgTXVsdGlwbGVFbWFpbENvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL211bHRpcGxlLWVtYWlsLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBNdWx0aXBsZUZpbGVDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS1maWxlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBNdWx0aXBsZVRleHRDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9udW1iZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvcGFzc3dvcmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGVuc3VyZVdyYXBwZWQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9zZXR0aW5nLWNvbXBvbmVudC13cmFwcGVyLnRzJztcbmV4cG9ydCB7IFRlbGVwaG9uZUNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3RlbGVwaG9uZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgZ2V0VGV4dEJhc2VkQ29tcG9uZW50VmFsdWUgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy90ZXh0LWJhc2VkLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBUaW1lQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWNvbXBvbmVudHMvdGltZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHJpU3RhdGVDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3RyaS1zdGF0ZS1jaGVja2JveC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHlwZWREcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3R5cGVkLWRyb3Bkb3duLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBUeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC1tdWx0aXBsZS1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHlwZWRSYW5nZVRleHRDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC1yYW5nZS10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBUeXBlZFRleHRDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBVcmxDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy91cmwtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGdldFZhbGlkYXRvckNvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3ZhbGlkYXRvci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgV2Vla0NvbXBvbmVudCB9IGZyb20gJy4vc2V0dGluZy1jb21wb25lbnRzL3dlZWstY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIGFkb3B0U2V0dGluZ0V4LFxuICBTZXR0aW5nRXhcbn0gZnJvbSAnLi9zZXR0aW5nLWV4LnRzJztcbmV4cG9ydCB7IFNldHRpbmdHcm91cEV4IH0gZnJvbSAnLi9zZXR0aW5nLWdyb3VwLWV4LnRzJztcbmV4cG9ydCB7IFBsdWdpblN0YXR1c0Jhckl0ZW1SZWdpc3RyYXIgfSBmcm9tICcuL3N0YXR1cy1iYXItaXRlbS1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgZ2V0VGVtcGxhdGVyRnVuY3Rpb25zLFxuICBnZXRUZW1wbGF0ZXJSZW5kZXJUYXJnZXRGaWxlLFxuICBwYXJzZVRlbXBsYXRlLFxuICByZXF1aXJlVGVtcGxhdGVyQXBpLFxuICByZXNvbHZlVGVtcGxhdGVyQXBpLFxuICBURU1QTEFURVJfUExVR0lOX0lELFxuICBUZW1wbGF0ZXJBY3RpdmVGaWxlUHJvdmlkZXIsXG4gIFRlbXBsYXRlclJ1bk1vZGUsXG4gIFRlbXBsYXRlclVuYXZhaWxhYmlsaXR5UmVhc29uLFxuICBUZW1wbGF0ZXJVbmF2YWlsYWJsZUVycm9yXG59IGZyb20gJy4vdGVtcGxhdGVyLnRzJztcbmV4cG9ydCB7IER1cmF0aW9uVHJhbnNmb3JtZXIgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9kdXJhdGlvbi10cmFuc2Zvcm1lci50cyc7XG5leHBvcnQge1xuICBjbGlja0VsZW1lbnQsXG4gIGNsaWNrTW91c2UsXG4gIGhvdmVyRWxlbWVudCxcbiAgbW92ZU1vdXNlLFxuICBwcmVzc0tleSxcbiAgdHlwZUludG9FZGl0b3IsXG4gIHVuaG92ZXJFbGVtZW50XG59IGZyb20gJy4vdHJ1c3RlZC1pbnB1dC50cyc7XG5leHBvcnQge1xuICBnZXRPc0FuZE9ic2lkaWFuVW5zYWZlUGF0aENoYXJzUmVnRXhwLFxuICBnZXRPc1Vuc2FmZVBhdGhDaGFyc1JlZ0V4cCxcbiAgaGFzV2luZG93c1RyYWlsaW5nQ2hhcnMsXG4gIGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIsXG4gIGlzV2luZG93c1Jlc2VydmVkTmFtZSxcbiAgT0JTSURJQU5fVU5TQUZFX0ZJTEVOQU1FX0NIQVJTLFxuICB0cmltV2luZG93c1RyYWlsaW5nQ2hhcnMsXG4gIFVOSVhfVU5TQUZFX1BBVEhfQ0hBUlMsXG4gIFdJTkRPV1NfVU5TQUZFX1BBVEhfQ0hBUlNcbn0gZnJvbSAnLi92YWxpZGF0aW9uLnRzJztcbmV4cG9ydCB7XG4gIGRlbGV0ZUlmTm90VXNlZCxcbiAgRGVsZXRlSWZOb3RVc2VkUmVzdWx0XG59IGZyb20gJy4vdmF1bHQtZGVsZXRlLnRzJztcbmV4cG9ydCB7IFZhdWx0VHJhbnNhY3Rpb24gfSBmcm9tICcuL3ZhdWx0LXRyYW5zYWN0aW9uLnRzJztcbmV4cG9ydCB7XG4gIGNsZWFudXBFbXB0eUZvbGRlcnMsXG4gIGNvcHlTYWZlLFxuICBjcmVhdGVGb2xkZXJTYWZlLFxuICBDcmVhdGVGb2xkZXJTYWZlUmVzdWx0LFxuICBjcmVhdGVUZW1wb3JhcnlGaWxlLFxuICBjcmVhdGVUZW1wb3JhcnlGb2xkZXIsXG4gIGRlbGV0ZUVtcHR5Rm9sZGVyLFxuICBkZWxldGVFbXB0eUZvbGRlckhpZXJhcmNoeSxcbiAgZ2V0QWJzdHJhY3RGaWxlUGF0aFNhZmUsXG4gIGdldEF2YWlsYWJsZVBhdGgsXG4gIGdldEZpbGVQYXRoU2FmZSxcbiAgZ2V0Rm9sZGVyUGF0aFNhZmUsXG4gIGdldE1hcmtkb3duRmlsZXNTb3J0ZWQsXG4gIGdldE5vdGVGaWxlc1NvcnRlZCxcbiAgZ2V0T3JDcmVhdGVBYnN0cmFjdEZpbGVTYWZlLFxuICBnZXRPckNyZWF0ZUZpbGVTYWZlLFxuICBnZXRPckNyZWF0ZUZvbGRlclNhZmUsXG4gIGdldFNhZmVSZW5hbWVQYXRoLFxuICBJbnZva2VGaWxlQWN0aW9uU2FmZVJlc3VsdCxcbiAgaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrLFxuICBpc0NoaWxkLFxuICBpc0NoaWxkT3JTZWxmLFxuICBpc0VtcHR5Rm9sZGVyLFxuICBsaXN0U2FmZSxcbiAgcHJvY2VzcyxcbiAgcmVhZFNhZmUsXG4gIHJlbmFtZVNhZmUsXG4gIHNhdmVOb3RlLFxuICB0cmFzaFNhZmVcbn0gZnJvbSAnLi92YXVsdC50cyc7XG5leHBvcnQgeyBQbHVnaW5WaWV3UmVnaXN0cmFyIH0gZnJvbSAnLi92aWV3LXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBlbnN1cmVMYXlvdXRSZWFkeSxcbiAgZ2V0QWxsQ29udGFpbmVycyxcbiAgZ2V0QWxsRG9tV2luZG93cyxcbiAgZ2V0TWFpbldpbmRvdyxcbiAgc3dpdGNoVG9NYWluV2luZG93LFxuICBzd2l0Y2hUb1dpbmRvd1xufSBmcm9tICcuL3dvcmtzcGFjZS50cyc7XG5leHBvcnQge1xuICBhYm9ydFNpZ25hbEFueSxcbiAgYWJvcnRTaWduYWxOZXZlcixcbiAgYWJvcnRTaWduYWxUaW1lb3V0LFxuICBnZXRTaGFyZWRBYm9ydENvbnRyb2xsZXIsXG4gIGdldFNoYXJlZEFib3J0U2lnbmFsLFxuICBJTkZJTklURV9USU1FT1VULFxuICBvbkFib3J0LFxuICBSZXNldHRhYmxlQWJvcnRDb250cm9sbGVyLFxuICB3YWl0Rm9yQWJvcnRcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Fib3J0LWNvbnRyb2xsZXInO1xuZXhwb3J0IHsgY3JlYXRlQWdncmVnYXRlRXJyb3IgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYWdncmVnYXRlLWVycm9yJztcbmV4cG9ydCB7XG4gIGZpbHRlckluUGxhY2UsXG4gIHNuYXBzaG90LFxuICB1bmlxdWUsXG4gIHVuaXF1ZUluUGxhY2Vcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FycmF5JztcbmV4cG9ydCB7IHRvQXJyYXlCdWZmZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXJyYXktYnVmZmVyJztcbmV4cG9ydCB7XG4gIGFkZEVycm9ySGFuZGxlcixcbiAgYXN5bmNGaWx0ZXIsXG4gIGFzeW5jRmlsdGVySW5QbGFjZSxcbiAgYXN5bmNGbGF0TWFwLFxuICBhc3luY01hcCxcbiAgY2hhaW4sXG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgY29udmVydFN5bmNUb0FzeW5jLFxuICBoYW5kbGVTaWxlbnRFcnJvcixcbiAgaWdub3JlRXJyb3IsXG4gIGludm9rZUFzeW5jU2FmZWx5LFxuICBpbnZva2VBc3luY1NhZmVseUFmdGVyRGVsYXksXG4gIG1hcmtzQXNUZXJtaW5hdGVSZXRyeSxcbiAgbmV2ZXJFbmRzLFxuICBuZXh0VGlja0FzeW5jLFxuICBub3JtYWxpemVQcm9taXNhYmxlLFxuICBwcm9taXNlQWxsQXN5bmNGbnNTZXF1ZW50aWFsbHksXG4gIHByb21pc2VBbGxTZXF1ZW50aWFsbHksXG4gIHF1ZXVlTWljcm90YXNrQXN5bmMsXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jLFxuICByZXRyeVdpdGhUaW1lb3V0LFxuICBydW5XaXRoVGltZW91dCxcbiAgc2V0SW1tZWRpYXRlQXN5bmMsXG4gIHNldFRpbWVvdXRBc3luYyxcbiAgc2xlZXAsXG4gIHRpbWVvdXQsXG4gIHRvQXJyYXlcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmV4cG9ydCB7XG4gIEFzeW5jRXZlbnRSZWZEaXNwb3NhYmxlLFxuICBBc3luY0V2ZW50cyxcbiAgQXN5bmNFdmVudHNCYXNlLFxuICBtaXhpbkFzeW5jRXZlbnRzLFxuICBzdWJzY3JpYmVBc3luY0Rpc3Bvc2FibGVFdmVudFxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMtZXZlbnRzJztcbmV4cG9ydCB7XG4gIEFTWU5DX09QRVJBVElPTl9IT09LX0tFWSxcbiAgQVNZTkNfT1BFUkFUSU9OX0hPT0tfVkVSU0lPTixcbiAgZ2V0QXN5bmNPcGVyYXRpb25Ib29rLFxuICBub3RpZnlBc3luY09wZXJhdGlvblN0YXJ0ZWQsXG4gIHNldEFzeW5jT3BlcmF0aW9uSG9va1xufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMtb3BlcmF0aW9uLWhvb2snO1xuZXhwb3J0IHsgQmVlcGVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2JlZXBlcic7XG5leHBvcnQge1xuICBibG9iVG9BcnJheUJ1ZmZlcixcbiAgYmxvYlRvRGF0YVVybCxcbiAgYmxvYlRvSnBlZ0FycmF5QnVmZmVyLFxuICBkYXRhVXJsVG9BcnJheUJ1ZmZlcixcbiAgaXNJbWFnZUZpbGVcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Jsb2InO1xuZXhwb3J0IHsgZm9ybWF0Qnl0ZXMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYnl0ZXMnO1xuZXhwb3J0IHtcbiAgZW5hYmxlTGlicmFyeURlYnVnZ2VycyxcbiAgZ2V0RGVidWdDb250cm9sbGVyLFxuICBnZXREZWJ1Z2dlcixcbiAgZ2V0TGliRGVidWdnZXIsXG4gIHByaW50V2l0aFN0YWNrVHJhY2UsXG4gIHNob3dJbml0aWFsRGVidWdNZXNzYWdlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9kZWJ1Zyc7XG5leHBvcnQgeyBleHRyYWN0WmlwQXJjaGl2ZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9kZXNrdG9wLXppcC1leHRyYWN0b3InO1xuZXhwb3J0IHtcbiAgQXN5bmNDYWxsYmFja0Rpc3Bvc2FibGUsXG4gIEFzeW5jRGlzcG9zYWJsZUJhc2UsXG4gIENhbGxiYWNrRGlzcG9zYWJsZSxcbiAgQ29tYmluZUFzeW5jRGlzcG9zYWJsZSxcbiAgQ29tYmluZURpc3Bvc2FibGUsXG4gIERpc3Bvc2FibGVCYXNlLFxuICBkaXNwb3NlLFxuICBkaXNwb3NlQXN5bmMsXG4gIERpc3Bvc2VFcnJvckJlaGF2aW9yLFxuICBEaXNwb3NlT3JkZXIsXG4gIGlzQXN5bmNEaXNwb3NhYmxlLFxuICBpc0FzeW5jRGlzcG9zYWJsZUV4LFxuICBpc0Rpc3Bvc2FibGUsXG4gIGlzRGlzcG9zYWJsZUV4LFxuICBNdWx0aXBsZURpc3Bvc2VCZWhhdmlvcixcbiAgdG9Bc3luY0Rpc3Bvc2FibGVFeCxcbiAgdG9EaXNwb3NhYmxlRXhcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Rpc3Bvc2FibGUnO1xuZXhwb3J0IHtcbiAgZ2V0RW51bUtleSxcbiAgZ2V0RW51bVZhbHVlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9lbnVtJztcbmV4cG9ydCB7XG4gIEFTWU5DX1dSQVBQRVJfRVJST1JfTUVTU0FHRSxcbiAgQ3VzdG9tU3RhY2tUcmFjZUVycm9yLFxuICBkcmFpbkNvbGxlY3RlZFVuaGFuZGxlZEFzeW5jRXJyb3JzLFxuICBlbWl0QXN5bmNFcnJvckV2ZW50LFxuICBlcnJvclRvU3RyaW5nLFxuICBFcnJvcldyYXBwZXIsXG4gIGdldFN0YWNrVHJhY2UsXG4gIGlzQXN5bmNFcnJvcklnbm9yZUNvbnRleHRBY3RpdmUsXG4gIHByaW50RXJyb3IsXG4gIHJlZ2lzdGVyQXN5bmNFcnJvckV2ZW50SGFuZGxlcixcbiAgU2lsZW50RXJyb3IsXG4gIHN0YXJ0QXN5bmNFcnJvcklnbm9yZUNvbnRleHQsXG4gIHN0YXJ0Q29sbGVjdGluZ1VuaGFuZGxlZEFzeW5jRXJyb3JzLFxuICBzdG9wQ29sbGVjdGluZ1VuaGFuZGxlZEFzeW5jRXJyb3JzLFxuICB0aHJvd0V4cHJlc3Npb25cbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmV4cG9ydCB7XG4gIGNsb25lRnVuY3Rpb24sXG4gIGNyZWF0ZUZ1bmN0aW9uLFxuICBnZXRGdW5jdGlvbkV4cHJlc3Npb25TdHJpbmcsXG4gIG5vb3AsXG4gIG5vb3BBc3luYyxcbiAgbm9vcEFzeW5jU2luZ2xldG9uUHJvbWlzZSxcbiAgb21pdEFzeW5jUmV0dXJuVHlwZSxcbiAgb21pdFJldHVyblR5cGVcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Z1bmN0aW9uJztcbmV4cG9ydCB7XG4gIGNyZWF0ZURpdkFzeW5jLFxuICBjcmVhdGVFbEFzeW5jLFxuICBjcmVhdGVGcmFnbWVudEFzeW5jLFxuICBjcmVhdGVTcGFuQXN5bmMsXG4gIGNyZWF0ZVN2Z0FzeW5jLFxuICBlbnN1cmVMb2FkZWQsXG4gIGdldERvY3VtZW50V2luZG93LFxuICBnZXRaSW5kZXgsXG4gIGlzRWxlbWVudFZpc2libGVJbk9mZnNldFBhcmVudCxcbiAgaXNMb2FkZWQsXG4gIG9uQW5jZXN0b3JTY3JvbGxPclJlc2l6ZSxcbiAgdG9QeCxcbiAgd2FpdFVudGlsQ29ubmVjdGVkXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9odG1sLWVsZW1lbnQnO1xuZXhwb3J0IHtcbiAgZXh0cmFjdEpwZWdNZXRhZGF0YVNlZ21lbnRzLFxuICBpbmplY3RKcGVnTWV0YWRhdGFTZWdtZW50c1xufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvanBlZy1tZXRhZGF0YSc7XG5leHBvcnQge1xuICBERUZBVUxUX0RFQlVHX05BTUVTUEFDRSxcbiAgTGlicmFyeSxcbiAgTElCUkFSWV9OQU1FXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9saWJyYXJ5JztcbmV4cG9ydCB7XG4gIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyxcbiAgY2FzdFRvLFxuICBjbG9uZVdpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyxcbiAgZGVsZXRlUHJvcGVydGllcyxcbiAgZGVsZXRlUHJvcGVydHksXG4gIGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcCxcbiAgRnVuY3Rpb25IYW5kbGluZ01vZGUsXG4gIGdldEFsbEVudHJpZXMsXG4gIGdldEFsbEtleXMsXG4gIGdldE5lc3RlZFByb3BlcnR5VmFsdWUsXG4gIGdldFByb3RvdHlwZU9mLFxuICBpc0RlZXBFcXVhbCxcbiAgbmFtZW9mLFxuICBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMsXG4gIHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMsXG4gIHNldE5lc3RlZFByb3BlcnR5VmFsdWUsXG4gIHRvSnNvblxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvb2JqZWN0LXV0aWxzJztcbmV4cG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkZWxpbWl0ZXIsXG4gIGRpcm5hbWUsXG4gIGV4dG5hbWUsXG4gIGZvcm1hdCxcbiAgZ2V0RmlsZU5hbWUsXG4gIGdldEZvbGRlck5hbWUsXG4gIGlzQWJzb2x1dGUsXG4gIGpvaW4sXG4gIG1ha2VGaWxlTmFtZSxcbiAgbm9ybWFsaXplSWZSZWxhdGl2ZSxcbiAgbm9ybWFsaXplUGF0aCxcbiAgcGFyc2UsXG4gIHBvc2l4LFxuICByZWxhdGl2ZSxcbiAgcmVzb2x2ZSxcbiAgc2VwYXJhdG9yLFxuICB0b1Bvc2l4QnVmZmVyLFxuICB0b1Bvc2l4UGF0aFxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5leHBvcnQge1xuICBBTFdBWVNfTUFUQ0hfUkVHX0VYUCxcbiAgZXNjYXBlUmVnRXhwLFxuICBnZXRNYW5kYXRvcnlOYW1lZEdyb3VwLFxuICBnZXRPcHRpb25hbE5hbWVkR3JvdXAsXG4gIGlzVmFsaWRSZWdFeHAsXG4gIE5FVkVSX01BVENIX1JFR19FWFAsXG4gIG9uZU9mLFxuICBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcmVnLWV4cCc7XG5leHBvcnQge1xuICBFTVBUWSxcbiAgZW5zdXJlRW5kc1dpdGgsXG4gIGVuc3VyZUxmRW5kaW5ncyxcbiAgZW5zdXJlU3RhcnRzV2l0aCxcbiAgZXNjYXBlLFxuICBnZXRMZk5vcm1hbGl6ZWRPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwcGVyLFxuICBoYXNTaW5nbGVPY2N1cnJlbmNlLFxuICBpbmRlbnQsXG4gIGluc2VydEF0LFxuICBtYWtlVmFsaWRWYXJpYWJsZU5hbWUsXG4gIG5vcm1hbGl6ZVN0cmluZyxcbiAgcmVwbGFjZSxcbiAgcmVwbGFjZUFsbCxcbiAgcmVwbGFjZUFsbEFzeW5jLFxuICB0cmltRW5kLFxuICB0cmltU3RhcnQsXG4gIHVuZXNjYXBlLFxuICB1bmluZGVudFxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvc3RyaW5nJztcbmV4cG9ydCB7IERhdGVUcmFuc2Zvcm1lciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90cmFuc2Zvcm1lcnMvZGF0ZS10cmFuc2Zvcm1lcic7XG5leHBvcnQgeyBHcm91cFRyYW5zZm9ybWVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3RyYW5zZm9ybWVycy9ncm91cC10cmFuc2Zvcm1lcic7XG5leHBvcnQgeyBNYXBUcmFuc2Zvcm1lciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90cmFuc2Zvcm1lcnMvbWFwLXRyYW5zZm9ybWVyJztcbmV4cG9ydCB7IFNldFRyYW5zZm9ybWVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3RyYW5zZm9ybWVycy9zZXQtdHJhbnNmb3JtZXInO1xuZXhwb3J0IHsgU2tpcFByaXZhdGVQcm9wZXJ0eVRyYW5zZm9ybWVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3RyYW5zZm9ybWVycy9za2lwLXByaXZhdGUtcHJvcGVydHktdHJhbnNmb3JtZXInO1xuZXhwb3J0IHsgVHJhbnNmb3JtZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHJhbnNmb3JtZXJzL3RyYW5zZm9ybWVyJztcbmV4cG9ydCB7IFR3b1dheU1hcFRyYW5zZm9ybWVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3RyYW5zZm9ybWVycy90d28td2F5LW1hcC10cmFuc2Zvcm1lcic7XG5leHBvcnQgeyBUeXBlZFRyYW5zZm9ybWVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3RyYW5zZm9ybWVycy90eXBlZC10cmFuc2Zvcm1lcic7XG5leHBvcnQgeyBUd29XYXlNYXAgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHdvLXdheS1tYXAnO1xuZXhwb3J0IHsgVHlwZUFzc2VydGVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUnO1xuZXhwb3J0IHtcbiAgYXNzZXJ0LFxuICBhc3NlcnRHZW5lcmljT2JqZWN0LFxuICBhc3NlcnROZXZlcixcbiAgYXNzZXJ0Tm9uTnVsbGFibGUsXG4gIGVuc3VyZUdlbmVyaWNPYmplY3QsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5leHBvcnQge1xuICBnZXRUeXBlc2NyaXB0TGliU3RhdGUsXG4gIGdldFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3QsXG4gIHJlc2V0VHlwZXNjcmlwdExpYlN0YXRlLFxuICBUWVBFU0NSSVBUX0xJQl9TVEFURV9LRVksXG4gIFRZUEVTQ1JJUFRfTElCX1NUQVRFX1ZFUlNJT05cbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGVzY3JpcHQtbGliLXN0YXRlJztcbmV4cG9ydCB7XG4gIGVuY29kZVVybCxcbiAgaXNGaWxlVXJsLFxuICBpc1VybCxcbiAgbm9ybWFsaXplRmlsZVVybCxcbiAgcGF0aFRvRmlsZVVybFxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdXJsJztcbmV4cG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS1wcm92aWRlcic7XG5leHBvcnQgeyBWYWx1ZVdyYXBwZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdmFsdWUtd3JhcHBlcic7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFB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QzlCLHdCQUdPO0FBQ1AsOEJBQStCO0FBQy9CLHVDQUE2QztBQUM3Qyx1QkFXTztBQUNQLGtDQUFvQztBQUNwQywyQkFRTztBQUNQLHdCQVVPO0FBQ1AsMEJBR087QUFDUCwrQkFBaUM7QUFDakMsbUJBOEJPO0FBQ1AsNEJBQW9DO0FBQ3BDLHVCQU9PO0FBQ1AsOEJBVU87QUFDUCw2QkFBcUM7QUFDckMsbUJBS087QUFDUCwwQkFBOEI7QUFDOUIsbUJBNEJPO0FBQ1AsMEJBTU87QUFDUCxrQ0FNTztBQUNQLG9CQUF1QjtBQUN2QixrQkFNTztBQUNQLG1CQUE0QjtBQUM1QixJQUFBQSxnQkFPTztBQUNQLG1DQUFrQztBQUNsQyx3QkFrQk87QUFDUCxrQkFHTztBQUNQLG1CQWdCTztBQUNQLHNCQVNPO0FBQ1AsSUFBQUMsdUJBY087QUFDUCwyQkFHTztBQUNQLElBQUFDLGtCQUlPO0FBQ1AsMEJBa0JPO0FBQ1Asa0JBb0JPO0FBQ1AscUJBU087QUFDUCxvQkFtQk87QUFDUCw4QkFBZ0M7QUFDaEMsK0JBQWlDO0FBQ2pDLDZCQUErQjtBQUMvQiw2QkFBK0I7QUFDL0IsK0NBQStDO0FBQy9DLHlCQUE0QjtBQUM1QixxQ0FBcUM7QUFDckMsK0JBQWlDO0FBQ2pDLHlCQUEwQjtBQUMxQixrQkFBNkI7QUFDN0IseUJBT087QUFDUCxrQ0FNTztBQUNQLGlCQU1PO0FBQ1AsNEJBQTZCO0FBQzdCLDJCQUE2QjsiLAogICJuYW1lcyI6IFsiaW1wb3J0X2RlYnVnIiwgImltcG9ydF9odG1sX2VsZW1lbnQiLCAiaW1wb3J0X2xpYnJhcnkiXQp9Cg==
@@ -76,7 +76,7 @@ export { isFrontmatterLinkCacheWithOffsets, toFrontmatterLinkCacheWithOffsets }
76
76
  export { checkIsPlainObject, parseFrontmatter, registerFrontmatterFormattingPreserver, removeEmptyFrontmatterValues, setFrontmatter } from './frontmatter.cjs';
77
77
  export { LIBRARY_STYLES, LIBRARY_VERSION } from './generated-during-build.cjs';
78
78
  export { PluginHoverLinkSourceRegistrar } from './hover-link-source-registrar.cjs';
79
- export { appendCodeBlock, applySpellcheckMode, asCodeBlock, createFragmentWithCodeBlocks } from './html-element.cjs';
79
+ export { appendCodeBlock, appendTextOrFragmentClone, applySpellcheckMode, asCodeBlock, createFragmentWithCodeBlocks } from './html-element.cjs';
80
80
  export { DEFAULT_NS, initI18N, t } from './i18n/i18n.cjs';
81
81
  export { en } from './i18n/locales/en.cjs';
82
82
  export { DEFAULT_LANGUAGE, defaultTranslationsMap } from './i18n/locales/translations-map.cjs';
@@ -161,14 +161,14 @@ const CUSTOM_ATTACHMENT_LOCATION_ATTACHMENT_PATH_API_VERSION_RANGE = "^1.3.0";
161
161
  const CUSTOM_ATTACHMENT_LOCATION_ATTACHMENT_PATH_API_CONTRACT = {
162
162
  getAvailablePathForAttachments: {
163
163
  input: (0, import_plugin_api_schema.createArgumentsSchema)([{
164
- expected: "the attachment-path parameters",
164
+ expected: "available-path-for-attachments params",
165
165
  typeGuard: isGetAvailablePathForAttachmentsExtendedFunctionParams
166
166
  }]),
167
- output: (0, import_plugin_api_schema.createTypeGuardSchema)({ expected: "a string", typeGuard: isString })
167
+ output: (0, import_plugin_api_schema.createTypeGuardSchema)({ expected: "an attachment path", typeGuard: isString })
168
168
  },
169
169
  isAttachmentUnitFolder: {
170
170
  input: (0, import_plugin_api_schema.createArgumentsSchema)([{
171
- expected: "an object with a string folderPath",
171
+ expected: "attachment-unit-folder params: { folderPath: string }",
172
172
  typeGuard: isCustomAttachmentLocationIsAttachmentUnitFolderParams
173
173
  }]),
174
174
  output: (0, import_plugin_api_schema.createTypeGuardSchema)({ expected: "a boolean", typeGuard: isBoolean })
@@ -355,6 +355,9 @@ function isBoolean(value) {
355
355
  function isCustomAttachmentLocationIsAttachmentUnitFolderParams(value) {
356
356
  return typeof value === "object" && value !== null && typeof Reflect.get(value, "folderPath") === "string";
357
357
  }
358
+ function isFileStats(value) {
359
+ return typeof value === "object" && value !== null && typeof Reflect.get(value, "ctime") === "number" && typeof Reflect.get(value, "mtime") === "number" && typeof Reflect.get(value, "size") === "number";
360
+ }
358
361
  function isGetAvailablePathForAttachmentsExtendedFunctionParams(value) {
359
362
  if (typeof value !== "object" || value === null) {
360
363
  return false;
@@ -367,7 +370,7 @@ function isGetAvailablePathForAttachmentsExtendedFunctionParams(value) {
367
370
  const notePathOrFile = read("notePathOrFile");
368
371
  const oldNotePathOrFile = read("oldNotePathOrFile");
369
372
  const readAttachmentFileContent = read("readAttachmentFileContent");
370
- return typeof read("attachmentFileBaseName") === "string" && typeof read("attachmentFileExtension") === "string" && (attachmentFileStats === void 0 || typeof attachmentFileStats === "object" && attachmentFileStats !== null) && Object.values(AttachmentPathContext).includes(context) && (notePathOrFile === null || (0, import_file_system.isPathOrFile)(notePathOrFile)) && (0, import_file_system.isPathOrFile)(read("oldAttachmentPathOrFile")) && (oldNotePathOrFile === void 0 || (0, import_file_system.isPathOrFile)(oldNotePathOrFile)) && (readAttachmentFileContent === null || typeof readAttachmentFileContent === "function") && isOptionalBoolean(read("shouldSkipDuplicateCheck")) && isOptionalBoolean(read("shouldSkipGeneratedAttachmentFileName")) && isOptionalBoolean(read("shouldSkipMissingAttachmentFolderCreation"));
373
+ return typeof read("attachmentFileBaseName") === "string" && typeof read("attachmentFileExtension") === "string" && (attachmentFileStats === void 0 || isFileStats(attachmentFileStats)) && Object.values(AttachmentPathContext).includes(context) && (notePathOrFile === null || (0, import_file_system.isPathOrFile)(notePathOrFile)) && (0, import_file_system.isPathOrFile)(read("oldAttachmentPathOrFile")) && (oldNotePathOrFile === void 0 || (0, import_file_system.isPathOrFile)(oldNotePathOrFile)) && (readAttachmentFileContent === null || typeof readAttachmentFileContent === "function") && isOptionalBoolean(read("shouldSkipDuplicateCheck")) && isOptionalBoolean(read("shouldSkipGeneratedAttachmentFileName")) && isOptionalBoolean(read("shouldSkipMissingAttachmentFolderCreation"));
371
374
  }
372
375
  function isOptionalBoolean(value) {
373
376
  return value === void 0 || isBoolean(value);
@@ -429,4 +432,4 @@ function resolveAttachmentFolder(params) {
429
432
  hasOwnAttachmentFolder,
430
433
  isAtProperAttachmentPath
431
434
  });
432
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2F0dGFjaG1lbnQtcGF0aC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggYXR0YWNobWVudCBwYXRocy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRmlsZVN0YXRzLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgYmFzZW5hbWUsXG4gIGRpcm5hbWUsXG4gIGV4dG5hbWUsXG4gIGpvaW4sXG4gIG1ha2VGaWxlTmFtZVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQge1xuICBub3JtYWxpemVTdHJpbmcsXG4gIHJlcGxhY2VBbGwsXG4gIHRyaW1TdGFydFxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvc3RyaW5nJztcbmltcG9ydCB7XG4gIGdldERhdGFBZGFwdGVyRXgsXG4gIHBhcmVudEZvbGRlclBhdGhcbn0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdC9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luQXBpQ29udHJhY3QgfSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcblxuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgZ2V0RmlsZU9yTnVsbCxcbiAgZ2V0Rm9sZGVyLFxuICBnZXRGb2xkZXJPck51bGwsXG4gIGdldFBhdGgsXG4gIGlzUGF0aE9yRmlsZSxcbiAgTUFSS0RPV05fRklMRV9FWFRFTlNJT05cbn0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBjcmVhdGVBcmd1bWVudHNTY2hlbWEsXG4gIGNyZWF0ZVR5cGVHdWFyZFNjaGVtYVxufSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLXNjaGVtYS50cyc7XG5pbXBvcnQgeyBmaW5kUGx1Z2luQXBpIH0gZnJvbSAnLi9wbHVnaW4vcGx1Z2luLWFwaS50cyc7XG5cbi8qKlxuICogQSBjb250ZXh0IGZvciBhbiBhdHRhY2htZW50IHBhdGguXG4gKi9cbmV4cG9ydCBlbnVtIEF0dGFjaG1lbnRQYXRoQ29udGV4dCB7XG4gIC8qKlxuICAgKiBBIGNvbnRleHQgZm9yIGEgZGVsZXRlIG5vdGUuXG4gICAqL1xuICBEZWxldGVOb3RlID0gJ0RlbGV0ZU5vdGUnLFxuXG4gIC8qKlxuICAgKiBBIGNvbnRleHQgZm9yIGEgcmVuYW1lIG5vdGUuXG4gICAqL1xuICBSZW5hbWVOb3RlID0gJ1JlbmFtZU5vdGUnLFxuXG4gIC8qKlxuICAgKiBBbiB1bmtub3duIGNvbnRleHQuXG4gICAqL1xuICBVbmtub3duID0gJ1Vua25vd24nXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMgZXh0ZW5kZWQgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtcyB7XG4gIC8qKlxuICAgKiBBIGJhc2UgbmFtZSBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQW4gZXh0ZW5zaW9uIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVFeHRlbnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdGF0cyBvZiB0aGUgYXR0YWNobWVudCBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVTdGF0cz86IEZpbGVTdGF0cyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogQXR0YWNobWVudFBhdGhDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb3IgZmlsZSBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9yIGZpbGUgb2YgdGhlIG9sZCBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvciBmaWxlIG9mIHRoZSBvbGQgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG9sZE5vdGVQYXRoT3JGaWxlPzogUGF0aE9yRmlsZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogTGF6aWx5IHJlYWRzIHRoZSBjb250ZW50IG9mIHRoZSBhdHRhY2htZW50IGZpbGUuXG4gICAqXG4gICAqIFRoZSBjb250ZW50IGlzIHJlYWQgb24gZGVtYW5kIG9ubHkgd2hlbiBhIGNvbnN1bWVyIGFjdHVhbGx5IG5lZWRzIHRoZSBieXRlcyAoZS5nLiBhIHRlbXBsYXRlXG4gICAqIHRva2VuIHRoYXQgZW1iZWRzIHRoZW0pLiBGb3IgdGhlIGRlZmF1bHQgdGVtcGxhdGVzIG5vdGhpbmcgcHVsbHMgdGhlIGJ5dGVzLCBzbyB0aGUgcG90ZW50aWFsbHlcbiAgICogZXhwZW5zaXZlIChzaXplLXByb3BvcnRpb25hbCkgYHJlYWRCaW5hcnlgIG5ldmVyIHJ1bnMuIENvbnN1bWVycyB0aGF0IG1heSBjYWxsIHRoaXMgbW9yZSB0aGFuXG4gICAqIG9uY2Ugc2hvdWxkIG1lbW9pemUgdGhlIGZpcnN0IGNhbGwuIGBudWxsYCB3aGVuIHRoZXJlIGlzIG5vIGF0dGFjaG1lbnQgZmlsZSB0byByZWFkLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZW50IG9mIHRoZSBhdHRhY2htZW50IGZpbGUuXG4gICAqL1xuICByZWFkb25seSByZWFkQXR0YWNobWVudEZpbGVDb250ZW50OiAoKCkgPT4gUHJvbWlzZTxBcnJheUJ1ZmZlcj4pIHwgbnVsbDtcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBkdXBsaWNhdGUgY2hlY2sgYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBEdXBsaWNhdGVDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgZ2VuZXJhdGVkIGF0dGFjaG1lbnQgZmlsZSBuYW1lIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwR2VuZXJhdGVkQXR0YWNobWVudEZpbGVOYW1lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdWxkIG1pc3NpbmcgYXR0YWNobWVudCBmb2xkZXIgY3JlYXRpb24gYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uOiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFRoZSBzbGljZSBvZiBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbidzIHJlZ2lzdHJ5IEFQSSB0aGlzIG1vZHVsZSBjYWxscywgZGVjbGFyZWQgaGVyZSByYXRoZXIgdGhhbiBpbXBvcnRlZDpcbiAqIHRoYXQgcGx1Z2luIHNoaXBzIGl0cyBzdXJmYWNlIGFzIGEgaGFuZC13cml0dGVuIGBhcGkuZC50c2AsIG5vdCBhcyBhIHBhY2thZ2UgKHNlZSBydWxlIEw5IGluIGBBR0VOVFMubWRgKS5cbiAqL1xuaW50ZXJmYWNlIEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkF0dGFjaG1lbnRQYXRoQXBpIHtcbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4ncyBmdWxsIGF0dGFjaG1lbnQtcGF0aCByZXNvbHZlci5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBzYW1lIGZpZWxkcyBhcyB7QGxpbmsgR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtc30sIHdoaWNoIHRoZVxuICAgKiAgIHBsdWdpbiBkZWNsYXJlcyBmaWVsZCBmb3IgZmllbGQuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGF0dGFjaG1lbnQncyBwYXRoIGZyb20gdGhlIHZhdWx0IHJvb3QuXG4gICAqL1xuICBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHM6IChwYXJhbXM6IEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRnVuY3Rpb25QYXJhbXMpID0+IFByb21pc2U8c3RyaW5nPjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdXNlciBkZXNpZ25hdGVkIGEgZm9sZGVyIGFuIGF0dGFjaG1lbnQgdW5pdCBmb2xkZXIuIFN5bmNocm9ub3VzIG9uIHB1cnBvc2UuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZm9sZGVyLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBmb2xkZXIgaXMgZGVzaWduYXRlZC5cbiAgICovXG4gIGlzQXR0YWNobWVudFVuaXRGb2xkZXI6IChwYXJhbXM6IEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbklzQXR0YWNobWVudFVuaXRGb2xkZXJQYXJhbXMpID0+IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkF0dGFjaG1lbnRQYXRoQXBpLmlzQXR0YWNobWVudFVuaXRGb2xkZXJ9LlxuICovXG5pbnRlcmZhY2UgQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uSXNBdHRhY2htZW50VW5pdEZvbGRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyLCBhcyBhIHZhdWx0LXJlbGF0aXZlIHBhdGguXG4gICAqL1xuICByZWFkb25seSBmb2xkZXJQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHBsdWdpbiBpZCBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbiBwdWJsaXNoZXMgaXRzIEFQSSB1bmRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IENVU1RPTV9BVFRBQ0hNRU5UX0xPQ0FUSU9OX1BMVUdJTl9JRCA9ICdvYnNpZGlhbi1jdXN0b20tYXR0YWNobWVudC1sb2NhdGlvbic7XG5cbi8qKlxuICogVGhlIGNvbnRyYWN0IHZlcnNpb25zIG9mIEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uJ3MgQVBJIHRoaXMgbW9kdWxlIGNvbXBpbGVkIGFnYWluc3QuIGAxLjMuMGAgaXMgdGhlIGZpcnN0XG4gKiB0byBjYXJyeSB0aGUgdHdvIGF0dGFjaG1lbnQtcGF0aCBtZXRob2RzLlxuICovXG5jb25zdCBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9BVFRBQ0hNRU5UX1BBVEhfQVBJX1ZFUlNJT05fUkFOR0UgPSAnXjEuMy4wJztcblxuLyoqXG4gKiBUaGUgY29udHJhY3Qgb2YgdGhlIG1lbWJlcnMgb2YgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb24ncyBBUEkgdGhpcyBtb2R1bGUgY2FsbHMsIHNvIGEgcmVjb3JkIHRoYXQgbGFja3NcbiAqIGVpdGhlciBpcyBwYXNzZWQgb3ZlciwgYW5kIGEgcGF5bG9hZCB0aGF0IGJyZWFrcyBpdHMgc2lnbmF0dXJlIGlzIHJlcG9ydGVkIHdoaWxlIHRoZSBgUGx1Z2luQXBpYCBkZWJ1Z2dlciBpcyBvbi5cbiAqL1xuY29uc3QgQ1VTVE9NX0FUVEFDSE1FTlRfTE9DQVRJT05fQVRUQUNITUVOVF9QQVRIX0FQSV9DT05UUkFDVDogUGx1Z2luQXBpQ29udHJhY3Q8Q3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXR0YWNobWVudFBhdGhBcGk+ID0ge1xuICBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHM6IHtcbiAgICBpbnB1dDogY3JlYXRlQXJndW1lbnRzU2NoZW1hPFtwYXJhbXM6IEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRnVuY3Rpb25QYXJhbXNdPihbe1xuICAgICAgZXhwZWN0ZWQ6ICd0aGUgYXR0YWNobWVudC1wYXRoIHBhcmFtZXRlcnMnLFxuICAgICAgdHlwZUd1YXJkOiBpc0dldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRnVuY3Rpb25QYXJhbXNcbiAgICB9XSksXG4gICAgb3V0cHV0OiBjcmVhdGVUeXBlR3VhcmRTY2hlbWEoeyBleHBlY3RlZDogJ2Egc3RyaW5nJywgdHlwZUd1YXJkOiBpc1N0cmluZyB9KVxuICB9LFxuICBpc0F0dGFjaG1lbnRVbml0Rm9sZGVyOiB7XG4gICAgaW5wdXQ6IGNyZWF0ZUFyZ3VtZW50c1NjaGVtYTxbcGFyYW1zOiBDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zXT4oW3tcbiAgICAgIGV4cGVjdGVkOiAnYW4gb2JqZWN0IHdpdGggYSBzdHJpbmcgZm9sZGVyUGF0aCcsXG4gICAgICB0eXBlR3VhcmQ6IGlzQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uSXNBdHRhY2htZW50VW5pdEZvbGRlclBhcmFtc1xuICAgIH1dKSxcbiAgICBvdXRwdXQ6IGNyZWF0ZVR5cGVHdWFyZFNjaGVtYSh7IGV4cGVjdGVkOiAnYSBib29sZWFuJywgdHlwZUd1YXJkOiBpc0Jvb2xlYW4gfSlcbiAgfVxufTtcblxuLyoqXG4gKiBEdW1teSBwYXRoLlxuICovXG5leHBvcnQgY29uc3QgRFVNTVlfUEFUSCA9ICdfX0RVTU1ZX18nO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBnZXRBdHRhY2htZW50RmlsZVBhdGggZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QXR0YWNobWVudEZpbGVQYXRoUGFyYW1zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IEF0dGFjaG1lbnRQYXRoQ29udGV4dDtcblxuICAvKipcbiAgICogQSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb2YgdGhlIG9sZCBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkTm90ZVBhdGhPckZpbGU/OiBQYXRoT3JGaWxlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QXR0YWNobWVudEZvbGRlclBhdGhQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZXh0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB7QGxpbmsgQXR0YWNobWVudFBhdGhDb250ZXh0LlVua25vd259XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0PzogQXR0YWNobWVudFBhdGhDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aFN5bmNPck51bGx9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEF0dGFjaG1lbnRGb2xkZXJQYXRoU3luY09yTnVsbFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c1BhcmFtcyB7XG4gIC8qKlxuICAgKiBBbiBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuICAvKipcbiAgICogQSBiYXNlIG5hbWUgb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZUJhc2VOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbiBleHRlbnNpb24gb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogc3RyaW5nO1xuICAvKipcbiAgICogQSBmaWxlIHRvIGF0dGFjaCB0by5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yRmlsZTtcbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgZHVwbGljYXRlIGNoZWNrIGJlIHNraXBwZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBEdXBsaWNhdGVDaGVjaz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTaG91bGQgbWlzc2luZyBhdHRhY2htZW50IGZvbGRlciBjcmVhdGlvbiBiZSBza2lwcGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGhhc093bkF0dGFjaG1lbnRGb2xkZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhhc093bkF0dGFjaG1lbnRGb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZXh0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB7QGxpbmsgQXR0YWNobWVudFBhdGhDb250ZXh0LlVua25vd259XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0PzogQXR0YWNobWVudFBhdGhDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaXNBdFByb3BlckF0dGFjaG1lbnRQYXRofS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJc0F0UHJvcGVyQXR0YWNobWVudFBhdGhQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZpbGUgb2YgdGhlIGF0dGFjaG1lbnQgdG8gY2hlY2suXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50UGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogVGhlIGNvbnRleHQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bn1cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBBdHRhY2htZW50UGF0aENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIGZpbGUgb2YgdGhlIG5vdGUgdGhhdCByZWZlcmVuY2VzIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmN9LlxuICovXG5pbnRlcmZhY2UgR2V0QXR0YWNobWVudEZpbGVQYXRoU3luY1BhcmFtcyB7XG4gIC8qKlxuICAgKiBBbiBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb2YgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgZHVwbGljYXRlIGNoZWNrIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c1N5bmN9LlxuICovXG5pbnRlcmZhY2UgR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzU3luY1BhcmFtcyB7XG4gIC8qKlxuICAgKiBBbiBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIGJhc2UgbmFtZSBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQW4gZXh0ZW5zaW9uIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVFeHRlbnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogQSBmaWxlIHRvIGF0dGFjaCB0by5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBkdXBsaWNhdGUgY2hlY2sgYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBEdXBsaWNhdGVDaGVjaz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlc29sdmVBdHRhY2htZW50Rm9sZGVyfS5cbiAqL1xuaW50ZXJmYWNlIFJlc29sdmVBdHRhY2htZW50Rm9sZGVyUGFyYW1zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEgZmlsZSB0byBhdHRhY2ggdG8uXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogVGhlIGF0dGFjaG1lbnQgZm9sZGVyIGEgbm90ZSByZXNvbHZlcyB0bywgYmVmb3JlIHRoZSBhdHRhY2htZW50IGZpbGUgbmFtZSBpcyBhcHBlbmRlZC5cbiAqL1xuaW50ZXJmYWNlIFJlc29sdmVBdHRhY2htZW50Rm9sZGVyUmVzdWx0IHtcbiAgLyoqXG4gICAqIFRoZSBhdHRhY2htZW50IGZvbGRlciwgb3IgYG51bGxgIHdoZW4gaXQgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHZhdWx0IHlldC5cbiAgICovXG4gIHJlYWRvbmx5IGZvbGRlcjogbnVsbCB8IFRGb2xkZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBub3JtYWxpemVkIGF0dGFjaG1lbnQgZm9sZGVyIHBhdGgsIHdoZXRoZXIgb3Igbm90IHRoZSBmb2xkZXIgZXhpc3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFydCBvZiB0aGUgYGF0dGFjaG1lbnRGb2xkZXJQYXRoYCBzZXR0aW5nIHRoYXQgZm9sbG93cyBgLi9gLCBvciBgbnVsbGAgd2hlbiB0aGUgc2V0dGluZyBpcyBub3RcbiAgICogcmVsYXRpdmUgdG8gdGhlIG5vdGUuIE9ubHkgYSByZWxhdGl2ZSBzZXR0aW5nIG1heSBoYXZlIGl0cyBtaXNzaW5nIGZvbGRlciBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsYXRpdmVQYXRoOiBudWxsIHwgc3RyaW5nO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZmlsZSBwYXRoIGZvciBhbiBhdHRhY2htZW50IHdpdGhpbiBhIG5vdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBnZXQgYXR0YWNobWVudCBmaWxlIHBhdGggZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBmaWxlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdHRhY2htZW50RmlsZVBhdGgocGFyYW1zOiBHZXRBdHRhY2htZW50RmlsZVBhdGhQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVja1xuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSA9IGZpbmRDdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkoKTtcbiAgaWYgKCFjdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkpIHtcbiAgICAvLyBOb2JvZHkgb3ZlcnJpZGVzIHRoZSByZXNvbHV0aW9uLCBzbyBpdCBpcyBlbnRpcmVseSBzeW5jaHJvbm91cy5cbiAgICAvLyBUaGUgc2FtZSBjb3JlIGFuc3dlcnMgYGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoU3luY09yTnVsbGAsIHdoaWNoIGlzIHdoYXQga2VlcHMgdGhlIHR3byBpbiBzdGVwLlxuICAgIHJldHVybiBnZXRBdHRhY2htZW50RmlsZVBhdGhTeW5jKHtcbiAgICAgIGFwcCxcbiAgICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgICAgb2xkQXR0YWNobWVudFBhdGhPckZpbGUsXG4gICAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2tcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGF0dGFjaG1lbnRQYXRoID0gZ2V0UGF0aChhcHAsIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlKTtcbiAgY29uc3QgYXR0YWNobWVudEZpbGVFeHRlbnNpb24gPSBleHRuYW1lKGF0dGFjaG1lbnRQYXRoKTtcbiAgY29uc3QgYXR0YWNobWVudEZpbGVCYXNlTmFtZSA9IGJhc2VuYW1lKGF0dGFjaG1lbnRQYXRoLCBhdHRhY2htZW50RmlsZUV4dGVuc2lvbik7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlID0gZ2V0RmlsZU9yTnVsbCh7IGFwcCwgcGF0aE9yRmlsZTogYXR0YWNobWVudFBhdGggfSk7XG5cbiAgcmV0dXJuIGF3YWl0IGN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaS5nZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMoe1xuICAgIGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUsXG4gICAgYXR0YWNobWVudEZpbGVFeHRlbnNpb246IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uLnNsaWNlKDEpLFxuICAgIGF0dGFjaG1lbnRGaWxlU3RhdHM6IGF0dGFjaG1lbnRGaWxlPy5zdGF0LFxuICAgIGNvbnRleHQ6IHBhcmFtcy5jb250ZXh0LFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgIG9sZE5vdGVQYXRoT3JGaWxlOiBwYXJhbXMub2xkTm90ZVBhdGhPckZpbGUsXG4gICAgcmVhZEF0dGFjaG1lbnRGaWxlQ29udGVudDogYXR0YWNobWVudEZpbGUgPyAoKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4gPT4gYXBwLnZhdWx0LnJlYWRCaW5hcnkoYXR0YWNobWVudEZpbGUpIDogbnVsbCxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2ssXG4gICAgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb246IHRydWVcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhdHRhY2htZW50IGZvbGRlciBwYXRoIGZvciBhIGdpdmVuIG5vdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBnZXQgYXR0YWNobWVudCBmb2xkZXIgcGF0aCBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGF0dGFjaG1lbnQgZm9sZGVyIHBhdGguXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChwYXJhbXM6IEdldEF0dGFjaG1lbnRGb2xkZXJQYXRoUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBjb250ZXh0ID0gQXR0YWNobWVudFBhdGhDb250ZXh0LlVua25vd24sXG4gICAgbm90ZVBhdGhPckZpbGVcbiAgfSA9IHBhcmFtcztcbiAgcmV0dXJuIHBhcmVudEZvbGRlclBhdGgoXG4gICAgYXdhaXQgZ2V0QXR0YWNobWVudEZpbGVQYXRoKHtcbiAgICAgIGFwcCxcbiAgICAgIGNvbnRleHQsXG4gICAgICBub3RlUGF0aE9yRmlsZSxcbiAgICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBEVU1NWV9QQVRILFxuICAgICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrOiB0cnVlXG4gICAgfSlcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGF0dGFjaG1lbnQgZm9sZGVyIHBhdGggZm9yIGEgZ2l2ZW4gbm90ZSAqKnN5bmNocm9ub3VzbHkqKiwgd2hlbiB0aGF0IGlzIHBvc3NpYmxlIGF0IGFsbC5cbiAqXG4gKiBPYnNpZGlhbiBidWlsZHMgaXRzIGZpbGUvZm9sZGVyIGNvbnRleHQgbWVudXMgYW5kIGV2YWx1YXRlcyBhIGNvbW1hbmQncyBgY2hlY2tDYWxsYmFja2Agc3luY2hyb25vdXNseSwgc28gYVxuICogY2FsbGVyIGRlY2lkaW5nIHdoZXRoZXIgdG8gbWVyZWx5ICpvZmZlciogYSBjb21tYW5kIGNhbm5vdCBhd2FpdCB7QGxpbmsgZ2V0QXR0YWNobWVudEZvbGRlclBhdGh9LiBUaGlzIGlzXG4gKiB0aGUgc3luY2hyb25vdXMgdHdpbiBzdWNoIGEgY2FsbGVyIGNhbiB1c2UgaW5zdGVhZC5cbiAqXG4gKiBUaGUgYW5zd2VyIGlzIGBudWxsYCB3aGVuIGl0IGlzIG5vdCBrbm93YWJsZSBzeW5jaHJvbm91c2x5IFx1MjAxNCB0aGF0IGlzLCB3aGVuIEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uIHB1Ymxpc2hlc1xuICogaXRzIGF0dGFjaG1lbnQtcGF0aCBBUEkgYW5kIHRoZXJlZm9yZSBvd25zIHRoZSByZXNvbHV0aW9uLCB3aGljaCBpcyBnZW51aW5lbHkgYXN5bmNocm9ub3VzLiBgbnVsbGAgbWVhbnMgXCJhc2sge0BsaW5rIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRofVwiLCBuZXZlciBcInRoZXJlIGlzIG5vIGF0dGFjaG1lbnRcbiAqIGZvbGRlclwiLiBPdGhlcndpc2UgdGhlIGFuc3dlciBpcyBleGFjdCByYXRoZXIgdGhhbiBhIGd1ZXNzOiBpdCBpcyBwcm9kdWNlZCBieSB0aGUgdmVyeSBzYW1lIGNvZGVcbiAqIHtAbGluayBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aH0gcnVucywgd2hvc2Ugb25seSBhc3luY2hyb25vdXMgc3RlcCBcdTIwMTQgY3JlYXRpbmcgYSBtaXNzaW5nIGF0dGFjaG1lbnQgZm9sZGVyIFx1MjAxNFxuICogaXMgdW5yZWFjaGFibGUgb24gdGhpcyBwYXRoLlxuICpcbiAqIFRoZXJlIGlzIGRlbGliZXJhdGVseSBubyBgY29udGV4dGAgcGFyYW1ldGVyOiB7QGxpbmsgQXR0YWNobWVudFBhdGhDb250ZXh0fSBvbmx5IGV2ZXIgcmVhY2hlcyB0aGF0IHBsdWdpbidzXG4gKiByZXNvbHZlciwgYW5kIHRoaXMgZnVuY3Rpb24gYW5zd2VycyBgbnVsbGAgd2hlbmV2ZXIgaXQgaXMgcHVibGlzaGVkLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgZ2V0IGF0dGFjaG1lbnQgZm9sZGVyIHBhdGggc3luYyBvciBudWxsIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIGF0dGFjaG1lbnQgZm9sZGVyIHBhdGgsIG9yIGBudWxsYCB3aGVuIGl0IGNhbiBvbmx5IGJlIHJlc29sdmVkIGFzeW5jaHJvbm91c2x5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsKHBhcmFtczogR2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsUGFyYW1zKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbm90ZVBhdGhPckZpbGVcbiAgfSA9IHBhcmFtcztcblxuICByZXR1cm4gZmluZEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSgpXG4gICAgPyBudWxsXG4gICAgOiBwYXJlbnRGb2xkZXJQYXRoKGdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmMoe1xuICAgICAgYXBwLFxuICAgICAgbm90ZVBhdGhPckZpbGUsXG4gICAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogRFVNTVlfUEFUSCxcbiAgICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogdHJ1ZVxuICAgIH0pKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMocGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uXG4gIH0gPSBwYXJhbXM7XG5cbiAgLy8gTWF0ZXJpYWxpemluZyBhIG1pc3NpbmcgYXR0YWNobWVudCBmb2xkZXIgaXMgdGhlIE9ORSBnZW51aW5lbHkgYXN5bmNocm9ub3VzIHN0ZXAgaW4gdGhpcyBmdW5jdGlvbi5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGxpdmVzIGluIHRoZSBzeW5jaHJvbm91cyBjb3JlLCB3aGljaCB0aGUgc3luY2hyb25vdXMgZW50cnkgcG9pbnRzIHJldXNlIHZlcmJhdGltLlxuICBjb25zdCBhdHRhY2htZW50Rm9sZGVyID0gcmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXIoeyBhcHAsIG5vdGVQYXRoT3JGaWxlIH0pO1xuICBpZiAoIWF0dGFjaG1lbnRGb2xkZXIuZm9sZGVyICYmIGF0dGFjaG1lbnRGb2xkZXIucmVsYXRpdmVQYXRoICYmICFzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvbikge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGVGb2xkZXIoYXR0YWNobWVudEZvbGRlci5wYXRoKTtcbiAgfVxuXG4gIHJldHVybiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jKHBhcmFtcyk7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGF0dGFjaG1lbnQtdW5pdC1mb2xkZXIgZGVzaWduYXRpb24gQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb24gcHVibGlzaGVzIHRocm91Z2ggaXRzIHBsdWdpbiBBUEkuXG4gKlxuICogVGhlIGRlc2lnbmF0aW9uIGlzIG9uZSBwbHVnaW4ncyBzZXR0aW5nIGJ1dCBldmVyeSByZWxvY2F0aW5nIHBsdWdpbidzIGJ1c2luZXNzLCBzbyBpdCBpcyByZWFkIGZyb20gdGhlIHNhbWVcbiAqIEFQSSB0aGF0IGFuc3dlcnMgdGhlIGF0dGFjaG1lbnQgcGF0aCBpdHNlbGYuIFJlYWRpbmcgaXQgaGVyZSByYXRoZXIgdGhhbiBoYXZpbmcgZWFjaCBjYWxsZXIgbG9vayBmb3IgdGhlXG4gKiBwbHVnaW4gaXMgdGhlIHBvaW50IFx1MjAxNCBhIGZvbGRlciBrZXB0IHdob2xlIGJ5IG9uZSBwbHVnaW4gYW5kIHRvcm4gYXBhcnQgYnkgYW5vdGhlciBpcyBleGFjdGx5IHRoZSBmYWlsdXJlXG4gKiBgZmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aGAgZXhpc3RzIHRvIHByZXZlbnQuXG4gKlxuICogYHVuZGVmaW5lZGAgbWVhbnMgbm9ib2R5IHB1Ymxpc2hlZCBhIGRlc2lnbmF0aW9uLCB0aGUgc2FtZSBcIm5vYm9keSBvd25zIHRoaXMgcG9saWN5XCIgYW5zd2VyIHRoYXQgc2VuZHNcbiAqIHtAbGluayBnZXRBdHRhY2htZW50RmlsZVBhdGh9IHRvIE9ic2lkaWFuJ3Mgb3duIHJlc29sdXRpb24uIEl0IGlzIGRpc3RpbmN0IGZyb20gYSBkZXNpZ25hdGlvbiB0aGF0IGFuc3dlcnNcbiAqIGBmYWxzZWAgZm9yIGV2ZXJ5IGZvbGRlci5cbiAqXG4gKiBUaGUgcmVnaXN0cnkgaXMgbG9va2VkIHVwIG9uY2UsIHdoZW4gdGhpcyBpcyBjYWxsZWQsIHNvIGEgY2FsbGVyIHdhbGtpbmcgYSBmb2xkZXIncyBhbmNlc3RvcnMgYXNrcyB0aGUgc2FtZVxuICogQVBJIGFsbCB0aGUgd2F5IHVwLlxuICpcbiAqIEBwYXJhbSBfYXBwIC0gQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuIFVudXNlZCBzaW5jZSB0aGUgYW5zd2VyIGNvbWVzIGZyb20gdGhlIHBsdWdpbiBBUEkgcmVnaXN0cnk7XG4gKiAgIGtlcHQgc28gZXhpc3RpbmcgY2FsbGVycyBjb21waWxlIHVuY2hhbmdlZC5cbiAqIEByZXR1cm5zIFRoZSBkZXNpZ25hdGlvbiBwcmVkaWNhdGUsIG9yIGB1bmRlZmluZWRgIHdoZW4gbm9ib2R5IHB1Ymxpc2hlZCBvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXJGdW5jdGlvbihfYXBwOiBBcHApOiAoKGZvbGRlclBhdGg6IHN0cmluZykgPT4gYm9vbGVhbikgfCB1bmRlZmluZWQge1xuICBjb25zdCBjdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkgPSBmaW5kQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpKCk7XG4gIHJldHVybiBjdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGlcbiAgICA/IChmb2xkZXJQYXRoOiBzdHJpbmcpOiBib29sZWFuID0+IGN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaS5pc0F0dGFjaG1lbnRVbml0Rm9sZGVyKHsgZm9sZGVyUGF0aCB9KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgbm90ZSdzIGF0dGFjaG1lbnQgZm9sZGVyIGlzIHNwZWNpZmljIHRvIHRoYXQgbm90ZSByYXRoZXIgdGhhbiBzaGFyZWQgd2l0aCBpdHMgc2libGluZ3MuXG4gKlxuICogVGhlIGFuc3dlciBpcyBkZXJpdmVkIGJ5IGNvbXBhcmluZyB0aGUgbm90ZSdzIGF0dGFjaG1lbnQgZm9sZGVyIHdpdGggdGhlIG9uZSBhIHNhbWUtZm9sZGVyIHNpYmxpbmcgbm90ZVxuICogd291bGQgZ2V0OiB0aGV5IGRpZmZlciBvbmx5IHdoZW4gdGhlIGZvbGRlciBkZXBlbmRzIG9uIHRoZSBub3RlJ3MgTkFNRS4gRXZlcnkgYnVpbHQtaW5cbiAqIGBhdHRhY2htZW50Rm9sZGVyUGF0aGAgbW9kZSBcdTIwMTQgdGhlIHZhdWx0IHJvb3QsIGEgZml4ZWQgZm9sZGVyLCB0aGUgbm90ZSdzIG93biBmb2xkZXIgKGAuL2ApLCBhIHN1YmZvbGRlciBvZlxuICogdGhlIG5vdGUncyBmb2xkZXIgKGAuL3N1YmApIFx1MjAxNCBpcyBzaGFyZWQgYnkgZXZlcnkgbm90ZSBpbiB0aGF0IGZvbGRlciwgc28gaXQgYW5zd2VycyBgZmFsc2VgOyBgdHJ1ZWAgYXJpc2VzXG4gKiBmcm9tIEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uJ3MgcmVzb2x2ZXIgZGVyaXZpbmcgdGhlIGZvbGRlciBmcm9tIHRoZSBub3RlJ3MgbmFtZS5cbiAqXG4gKiBUaGlzIGlzIHRoZSBkaXN0aW5jdGlvbiBhIGNhbGxlciBuZWVkcyBiZWZvcmUgc3dlZXBpbmcgYW4gYXR0YWNobWVudCBmb2xkZXIgd2hvbGVzYWxlOiBvbmx5IGFcbiAqIG5vdGUtc3BlY2lmaWMgZm9sZGVyIGNhbiBiZSB0cmVhdGVkIGFzIGJlbG9uZ2luZyB0byB0aGUgbm90ZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGhhcyBvd24gYXR0YWNobWVudCBmb2xkZXIgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG5vdGUgaGFzIGl0cyBvd24gYXR0YWNobWVudCBmb2xkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYXNPd25BdHRhY2htZW50Rm9sZGVyKHBhcmFtczogSGFzT3duQXR0YWNobWVudEZvbGRlclBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGNvbnRleHQgPSBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bixcbiAgICBwYXRoXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgoe1xuICAgIGFwcCxcbiAgICBjb250ZXh0LFxuICAgIG5vdGVQYXRoT3JGaWxlOiBwYXRoXG4gIH0pO1xuICBjb25zdCBkdW1teUF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgoe1xuICAgIGFwcCxcbiAgICBjb250ZXh0LFxuICAgIG5vdGVQYXRoT3JGaWxlOiBqb2luKGRpcm5hbWUocGF0aCksIGAke0RVTU1ZX1BBVEh9LiR7TUFSS0RPV05fRklMRV9FWFRFTlNJT059YClcbiAgfSk7XG4gIHJldHVybiBhdHRhY2htZW50Rm9sZGVyUGF0aCAhPT0gZHVtbXlBdHRhY2htZW50Rm9sZGVyUGF0aDtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiBhdHRhY2htZW50IGFscmVhZHkgc2l0cyBhdCBpdHMgcHJvcGVyIGF0dGFjaG1lbnQgcGF0aC5cbiAqXG4gKiBSZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBhdHRhY2htZW50J3MgY3VycmVudCBwYXRoIGlzLCB3aXRoaW4gaXRzIHByb3BlciBhdHRhY2htZW50IGZvbGRlciwgZWl0aGVyIHRoZSBwcm9wZXJcbiAqIGJhc2UgbmFtZSBvciB0aGUgcHJvcGVyIGJhc2UgbmFtZSBwbHVzIGFuIE9ic2lkaWFuIGRlZHVwbGljYXRpb24gc3VmZml4IChhIHNwYWNlIGZvbGxvd2VkIGJ5IGRpZ2l0cywgZS5nLlxuICogYGltZyAxYCkgd2l0aCB0aGUgc2FtZSBleHRlbnNpb24uIFRoZSBwcm9wZXIgcGF0aCBpcyBjb21wdXRlZCB2aWEge0BsaW5rIGdldEF0dGFjaG1lbnRGaWxlUGF0aH0gd2l0aFxuICoge0BsaW5rIEdldEF0dGFjaG1lbnRGaWxlUGF0aFBhcmFtcy5zaG91bGRTa2lwRHVwbGljYXRlQ2hlY2t9IHNldCB0byBgdHJ1ZWAgKHRoZSB0YXJnZXQgYmVmb3JlIGFueVxuICogZGVkdXBsaWNhdGlvbiBzdWZmaXgpLCBhbmQgdGhlIGNvbXBhcmlzb24gcmVzcGVjdHMgdGhlIGZpbGUgc3lzdGVtIGNhc2Utc2Vuc2l0aXZpdHkgZmxhZ1xuICogKGBnZXREYXRhQWRhcHRlckV4KGFwcCkuaW5zZW5zaXRpdmVgKSB0aGF0IGBnZXRTYWZlUmVuYW1lUGF0aGAgdXNlcy5cbiAqXG4gKiBUaGlzIGxldHMgYSBjYWxsZXIgcmVjb2duaXplIGEgZGVkdXBsaWNhdGlvbi1wYXJrZWQgYXR0YWNobWVudCBhcyBhbHJlYWR5LWNvbGxlY3RlZCwgc28gYSBcIm5lZWRzIG1vdmU/XCJcbiAqIGRlY2lzaW9uIG1hZGUgYWdhaW5zdCB0aGUgZGVkdXBsaWNhdGlvbi1mcmVlIHByb3BlciBwYXRoIGNvbnZlcmdlcyBpbnN0ZWFkIG9mIHJlLXNjaGVkdWxpbmcgdGhlIGZpbGUgZm9yZXZlci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGlzIGF0IHByb3BlciBhdHRhY2htZW50IHBhdGggZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGB0cnVlYCB3aGVuIHRoZSBhdHRhY2htZW50IGlzIGFscmVhZHkgYXQgaXRzIHByb3BlciBwYXRoLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNBdFByb3BlckF0dGFjaG1lbnRQYXRoKHBhcmFtczogSXNBdFByb3BlckF0dGFjaG1lbnRQYXRoUGFyYW1zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgYXR0YWNobWVudFBhdGhPckZpbGUsXG4gICAgY29udGV4dCA9IEF0dGFjaG1lbnRQYXRoQ29udGV4dC5Vbmtub3duLFxuICAgIG5vdGVQYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgY3VycmVudFBhdGggPSBnZXRQYXRoKGFwcCwgYXR0YWNobWVudFBhdGhPckZpbGUpO1xuICBjb25zdCBwcm9wZXJQYXRoID0gYXdhaXQgZ2V0QXR0YWNobWVudEZpbGVQYXRoKHtcbiAgICBhcHAsXG4gICAgY29udGV4dCxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogYXR0YWNobWVudFBhdGhPckZpbGUsXG4gICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrOiB0cnVlXG4gIH0pO1xuXG4gIGNvbnN0IGlzSW5zZW5zaXRpdmUgPSBnZXREYXRhQWRhcHRlckV4KGFwcCkuaW5zZW5zaXRpdmU7XG5cbiAgZnVuY3Rpb24gZm9sZCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXNJbnNlbnNpdGl2ZSA/IHZhbHVlLnRvTG93ZXJDYXNlKCkgOiB2YWx1ZTtcbiAgfVxuXG4gIGlmIChmb2xkKGRpcm5hbWUoY3VycmVudFBhdGgpKSAhPT0gZm9sZChkaXJuYW1lKHByb3BlclBhdGgpKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRFeHRlbnNpb24gPSBleHRuYW1lKGN1cnJlbnRQYXRoKTtcbiAgY29uc3QgcHJvcGVyRXh0ZW5zaW9uID0gZXh0bmFtZShwcm9wZXJQYXRoKTtcbiAgaWYgKGZvbGQoY3VycmVudEV4dGVuc2lvbikgIT09IGZvbGQocHJvcGVyRXh0ZW5zaW9uKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRCYXNlTmFtZSA9IGJhc2VuYW1lKGN1cnJlbnRQYXRoLCBjdXJyZW50RXh0ZW5zaW9uKTtcbiAgY29uc3QgcHJvcGVyQmFzZU5hbWUgPSBiYXNlbmFtZShwcm9wZXJQYXRoLCBwcm9wZXJFeHRlbnNpb24pO1xuXG4gIGlmIChmb2xkKGN1cnJlbnRCYXNlTmFtZSkgPT09IGZvbGQocHJvcGVyQmFzZU5hbWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCBkZWR1cGxpY2F0aW9uUHJlZml4ID0gYCR7cHJvcGVyQmFzZU5hbWV9IGA7XG4gIGlmICghZm9sZChjdXJyZW50QmFzZU5hbWUpLnN0YXJ0c1dpdGgoZm9sZChkZWR1cGxpY2F0aW9uUHJlZml4KSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBkZWR1cGxpY2F0aW9uU3VmZml4ID0gY3VycmVudEJhc2VOYW1lLnNsaWNlKGRlZHVwbGljYXRpb25QcmVmaXgubGVuZ3RoKTtcbiAgcmV0dXJuIC9eXFxkKyQvLnRlc3QoZGVkdXBsaWNhdGlvblN1ZmZpeCk7XG59XG5cbi8qKlxuICogRmluZHMgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb24ncyBhdHRhY2htZW50LXBhdGggQVBJIGluIHRoZSBwbHVnaW4gQVBJIHJlZ2lzdHJ5LiBJdHMgcHJlc2VuY2UgaXMgdGhlXG4gKiBzeW5jaHJvbm91cyBwcm9iZSBmb3IgXCJzb21lYm9keSBlbHNlIG93bnMgdGhlIHJlc29sdXRpb25cIi5cbiAqXG4gKiBAcmV0dXJucyBUaGUgQVBJLCBvciBgbnVsbGAgd2hlbiB0aGF0IHBsdWdpbiBwdWJsaXNoZXMgbm8gcmVjb3JkIHNhdGlzZnlpbmcgdGhlIHJhbmdlIGFuZCBjb250cmFjdC5cbiAqL1xuZnVuY3Rpb24gZmluZEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSgpOiBDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaSB8IG51bGwge1xuICByZXR1cm4gZmluZFBsdWdpbkFwaTxDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaT4oe1xuICAgIGFwaVZlcnNpb25SYW5nZTogQ1VTVE9NX0FUVEFDSE1FTlRfTE9DQVRJT05fQVRUQUNITUVOVF9QQVRIX0FQSV9WRVJTSU9OX1JBTkdFLFxuICAgIGNvbnRyYWN0OiBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9BVFRBQ0hNRU5UX1BBVEhfQVBJX0NPTlRSQUNULFxuICAgIHBsdWdpbklkOiBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9QTFVHSU5fSURcbiAgfSk7XG59XG5cbi8qKlxuICogVGhlIHN5bmNocm9ub3VzIGNvcmUgb2Yge0BsaW5rIGdldEF0dGFjaG1lbnRGaWxlUGF0aH0sIHJlYWNoZWQgd2hlbiBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbiBwdWJsaXNoZXMgbm9cbiAqIGF0dGFjaG1lbnQtcGF0aCBBUEkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBnZXQgYXR0YWNobWVudCBmaWxlIHBhdGggc3luYyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gKi9cbmZ1bmN0aW9uIGdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmMocGFyYW1zOiBHZXRBdHRhY2htZW50RmlsZVBhdGhTeW5jUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2tcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgYXR0YWNobWVudFBhdGggPSBnZXRQYXRoKGFwcCwgb2xkQXR0YWNobWVudFBhdGhPckZpbGUpO1xuICBjb25zdCBhdHRhY2htZW50RmlsZUV4dGVuc2lvbiA9IGV4dG5hbWUoYXR0YWNobWVudFBhdGgpO1xuXG4gIHJldHVybiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jKHtcbiAgICBhcHAsXG4gICAgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogYmFzZW5hbWUoYXR0YWNobWVudFBhdGgsIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uKSxcbiAgICBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogYXR0YWNobWVudEZpbGVFeHRlbnNpb24uc2xpY2UoMSksXG4gICAgbm90ZVBhdGhPckZpbGUsXG4gICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gIH0pO1xufVxuXG4vKipcbiAqIFRoZSBzeW5jaHJvbm91cyBjb3JlIG9mIHtAbGluayBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHN9LCB3aGljaCBjYW5ub3QgY3JlYXRlIGEgbWlzc2luZyBhdHRhY2htZW50XG4gKiBmb2xkZXIuIEl0cyBjYWxsZXIgY3JlYXRlcyB0aGUgZm9sZGVyIGZpcnN0IHdoZW4gdGhhdCBpcyB3YW50ZWQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBnZXQgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzIHN5bmMgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzLlxuICovXG5mdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jKHBhcmFtczogR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzU3luY1BhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgYXR0YWNobWVudEZpbGVFeHRlbnNpb24sXG4gICAgbm90ZVBhdGhPckZpbGUsXG4gICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGF0dGFjaG1lbnRGb2xkZXIgPSByZXNvbHZlQXR0YWNobWVudEZvbGRlcih7IGFwcCwgbm90ZVBhdGhPckZpbGUgfSk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUgPSBub3JtYWxpemVTdHJpbmcobm9ybWFsaXplU2xhc2hlcyhwYXJhbXMuYXR0YWNobWVudEZpbGVCYXNlTmFtZSkpO1xuXG4gIC8vIEEgZm9sZGVyIHRoYXQgZG9lcyBub3QgZXhpc3QgeWV0IHN0aWxsIG93bnMgdGhlIGF0dGFjaG1lbnQgcGF0aC5cbiAgLy8gUmVzb2x2aW5nIGl0IGFzIGEgbm9uLWV4aXN0aW5nIGZvbGRlciBzdG9wcyB0aGUgYW5zd2VyIGZyb20gY29sbGFwc2luZyB0byB0aGUgdmF1bHQgcm9vdC5cbiAgY29uc3QgZm9sZGVyID0gYXR0YWNobWVudEZvbGRlci5mb2xkZXIgPz8gZ2V0Rm9sZGVyKHsgYXBwLCBwYXRoT3JGb2xkZXI6IGF0dGFjaG1lbnRGb2xkZXIucGF0aCwgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHByZWZpeCA9IGZvbGRlci5nZXRQYXJlbnRQcmVmaXgoKTtcbiAgcmV0dXJuIHNob3VsZFNraXBEdXBsaWNhdGVDaGVja1xuICAgID8gbWFrZUZpbGVOYW1lKHtcbiAgICAgIGZpbGVCYXNlTmFtZTogcHJlZml4ICsgYXR0YWNobWVudEZpbGVCYXNlTmFtZSxcbiAgICAgIGZpbGVFeHRlbnNpb246IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uXG4gICAgfSlcbiAgICA6IGFwcC52YXVsdC5nZXRBdmFpbGFibGVQYXRoKHByZWZpeCArIGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUsIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uKTtcbn1cblxuZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJztcbn1cblxuZnVuY3Rpb24gaXNDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uSXNBdHRhY2htZW50VW5pdEZvbGRlclBhcmFtcyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiBSZWZsZWN0LmdldCh2YWx1ZSwgJ2ZvbGRlclBhdGgnKSA9PT0gJ3N0cmluZyc7XG59XG5cbmZ1bmN0aW9uIGlzR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtcyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRnVuY3Rpb25QYXJhbXMge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWQoa2V5OiBrZXlvZiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zKTogdW5rbm93biB7XG4gICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHZhbHVlIGFzIG9iamVjdCwga2V5KTtcbiAgfVxuXG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlU3RhdHMgPSByZWFkKCdhdHRhY2htZW50RmlsZVN0YXRzJyk7XG4gIGNvbnN0IGNvbnRleHQgPSByZWFkKCdjb250ZXh0Jyk7XG4gIGNvbnN0IG5vdGVQYXRoT3JGaWxlID0gcmVhZCgnbm90ZVBhdGhPckZpbGUnKTtcbiAgY29uc3Qgb2xkTm90ZVBhdGhPckZpbGUgPSByZWFkKCdvbGROb3RlUGF0aE9yRmlsZScpO1xuICBjb25zdCByZWFkQXR0YWNobWVudEZpbGVDb250ZW50ID0gcmVhZCgncmVhZEF0dGFjaG1lbnRGaWxlQ29udGVudCcpO1xuICByZXR1cm4gdHlwZW9mIHJlYWQoJ2F0dGFjaG1lbnRGaWxlQmFzZU5hbWUnKSA9PT0gJ3N0cmluZydcbiAgICAmJiB0eXBlb2YgcmVhZCgnYXR0YWNobWVudEZpbGVFeHRlbnNpb24nKSA9PT0gJ3N0cmluZydcbiAgICAmJiAoYXR0YWNobWVudEZpbGVTdGF0cyA9PT0gdW5kZWZpbmVkIHx8ICh0eXBlb2YgYXR0YWNobWVudEZpbGVTdGF0cyA9PT0gJ29iamVjdCcgJiYgYXR0YWNobWVudEZpbGVTdGF0cyAhPT0gbnVsbCkpXG4gICAgJiYgT2JqZWN0LnZhbHVlcyhBdHRhY2htZW50UGF0aENvbnRleHQpLmluY2x1ZGVzKGNvbnRleHQpXG4gICAgJiYgKG5vdGVQYXRoT3JGaWxlID09PSBudWxsIHx8IGlzUGF0aE9yRmlsZShub3RlUGF0aE9yRmlsZSkpXG4gICAgJiYgaXNQYXRoT3JGaWxlKHJlYWQoJ29sZEF0dGFjaG1lbnRQYXRoT3JGaWxlJykpXG4gICAgJiYgKG9sZE5vdGVQYXRoT3JGaWxlID09PSB1bmRlZmluZWQgfHwgaXNQYXRoT3JGaWxlKG9sZE5vdGVQYXRoT3JGaWxlKSlcbiAgICAmJiAocmVhZEF0dGFjaG1lbnRGaWxlQ29udGVudCA9PT0gbnVsbCB8fCB0eXBlb2YgcmVhZEF0dGFjaG1lbnRGaWxlQ29udGVudCA9PT0gJ2Z1bmN0aW9uJylcbiAgICAmJiBpc09wdGlvbmFsQm9vbGVhbihyZWFkKCdzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2snKSlcbiAgICAmJiBpc09wdGlvbmFsQm9vbGVhbihyZWFkKCdzaG91bGRTa2lwR2VuZXJhdGVkQXR0YWNobWVudEZpbGVOYW1lJykpXG4gICAgJiYgaXNPcHRpb25hbEJvb2xlYW4ocmVhZCgnc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb24nKSk7XG59XG5mdW5jdGlvbiBpc09wdGlvbmFsQm9vbGVhbih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCBpc0Jvb2xlYW4odmFsdWUpO1xufVxuXG5mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBwYXRoIGJ5IGNvbWJpbmluZyBtdWx0aXBsZSBzbGFzaGVzIGludG8gYSBzaW5nbGUgc2xhc2ggYW5kIHJlbW92aW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNsYXNoZXMuXG4gKlxuICogQHBhcmFtIHBhdGggLSBQYXRoIHRvIG5vcm1hbGl6ZS5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHBhdGguXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNsYXNoZXMocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcGF0aCA9IHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmc6IHBhdGgsXG4gICAgcmVwbGFjZXI6ICcvJyxcbiAgICBzZWFyY2hWYWx1ZTogLyg/OltcXFxcL10pKy9nXG4gIH0pO1xuICBwYXRoID0gcmVwbGFjZUFsbCh7XG4gICAgJHN0cmluZzogcGF0aCxcbiAgICByZXBsYWNlcjogJycsXG4gICAgc2VhcmNoVmFsdWU6IC9eXFwvK3xcXC8rJC9nXG4gIH0pO1xuICByZXR1cm4gcGF0aCB8fCAnLyc7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGBhdHRhY2htZW50Rm9sZGVyUGF0aGAgc2V0dGluZyBhZ2FpbnN0IGEgbm90ZSBpbnRvIGEgY29uY3JldGUgYXR0YWNobWVudCBmb2xkZXIuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSByZXNvbHZlIGF0dGFjaG1lbnQgZm9sZGVyIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIHJlc29sdmVkIGF0dGFjaG1lbnQgZm9sZGVyLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQXR0YWNobWVudEZvbGRlcihwYXJhbXM6IFJlc29sdmVBdHRhY2htZW50Rm9sZGVyUGFyYW1zKTogUmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXJSZXN1bHQge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5vdGVQYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIGxldCBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IGFwcC52YXVsdC5nZXRDb25maWcoJ2F0dGFjaG1lbnRGb2xkZXJQYXRoJykgYXMgc3RyaW5nO1xuICBjb25zdCBpc0N1cnJlbnRGb2xkZXIgPSBhdHRhY2htZW50Rm9sZGVyUGF0aCA9PT0gJy4nIHx8IGF0dGFjaG1lbnRGb2xkZXJQYXRoID09PSAnLi8nO1xuICBjb25zdCByZWxhdGl2ZVBhdGggPSBhdHRhY2htZW50Rm9sZGVyUGF0aC5zdGFydHNXaXRoKCcuLycpXG4gICAgPyB0cmltU3RhcnQoe1xuICAgICAgJHN0cmluZzogYXR0YWNobWVudEZvbGRlclBhdGgsXG4gICAgICBwcmVmaXg6ICcuLydcbiAgICB9KVxuICAgIDogbnVsbDtcblxuICAvLyBBIG5vdGUgdGhhdCBkb2VzIG5vdCBleGlzdCB5ZXQgKGEgcmVuYW1lIHRhcmdldCwgYSBkdW1teSBzaWJsaW5nKSBzdGlsbCBiZWxvbmdzIHRvIGl0cyBvd24gZm9sZGVyLlxuICAvLyBNYXRlcmlhbGl6aW5nIGl0IGZyb20gaXRzIHBhdGgga2VlcHMgdGhhdCBmb2xkZXIsIHdoZXJlIGEgdmF1bHQgbG9va3VwIHdvdWxkIGZhbGwgYmFjayB0byB0aGUgcm9vdC5cbiAgLy8gT25seSBhbiBleHBsaWNpdGx5IG5vdGUtbGVzcyBhdHRhY2htZW50IHJlc29sdmVzIHRvIHRoZSB2YXVsdCByb290LlxuICBjb25zdCBub3RlRmlsZU9yTnVsbCA9IG5vdGVQYXRoT3JGaWxlID09PSBudWxsXG4gICAgPyBudWxsXG4gICAgOiBnZXRGaWxlKHtcbiAgICAgIGFwcCxcbiAgICAgIHBhdGhPckZpbGU6IG5vdGVQYXRoT3JGaWxlLFxuICAgICAgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nOiB0cnVlXG4gICAgfSk7XG5cbiAgaWYgKGlzQ3VycmVudEZvbGRlcikge1xuICAgIGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gbm90ZUZpbGVPck51bGwgPyBub3RlRmlsZU9yTnVsbC5wYXJlbnQ/LnBhdGggPz8gJycgOiAnJztcbiAgfSBlbHNlIGlmIChyZWxhdGl2ZVBhdGgpIHtcbiAgICBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IChub3RlRmlsZU9yTnVsbCA/IG5vdGVGaWxlT3JOdWxsLnBhcmVudD8uZ2V0UGFyZW50UHJlZml4KCkgPz8gJycgOiAnJykgKyByZWxhdGl2ZVBhdGg7XG4gIH1cblxuICBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IG5vcm1hbGl6ZVN0cmluZyhub3JtYWxpemVTbGFzaGVzKGF0dGFjaG1lbnRGb2xkZXJQYXRoKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBmb2xkZXI6IGdldEZvbGRlck9yTnVsbCh7IGFwcCwgaXNDYXNlSW5zZW5zaXRpdmU6IHRydWUsIHBhdGhPckZvbGRlcjogYXR0YWNobWVudEZvbGRlclBhdGggfSksXG4gICAgcGF0aDogYXR0YWNobWVudEZvbGRlclBhdGgsXG4gICAgcmVsYXRpdmVQYXRoXG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBWUEsa0JBTU87QUFDUCxvQkFJTztBQUNQLDZCQUdPO0FBS1AseUJBUU87QUFDUCwrQkFHTztBQUNQLHdCQUE4QjtBQUt2QixJQUFLLHdCQUFMLGtCQUFLQSwyQkFBTDtBQUlMLEVBQUFBLHVCQUFBLGdCQUFhO0FBS2IsRUFBQUEsdUJBQUEsZ0JBQWE7QUFLYixFQUFBQSx1QkFBQSxhQUFVO0FBZEEsU0FBQUE7QUFBQSxHQUFBO0FBd0hMLE1BQU0sdUNBQXVDO0FBTXBELE1BQU0sK0RBQStEO0FBTXJFLE1BQU0sMERBQXdIO0FBQUEsRUFDNUgsZ0NBQWdDO0FBQUEsSUFDOUIsV0FBTyxnREFBc0YsQ0FBQztBQUFBLE1BQzVGLFVBQVU7QUFBQSxNQUNWLFdBQVc7QUFBQSxJQUNiLENBQUMsQ0FBQztBQUFBLElBQ0YsWUFBUSxnREFBc0IsRUFBRSxVQUFVLFlBQVksV0FBVyxTQUFTLENBQUM7QUFBQSxFQUM3RTtBQUFBLEVBQ0Esd0JBQXdCO0FBQUEsSUFDdEIsV0FBTyxnREFBc0YsQ0FBQztBQUFBLE1BQzVGLFVBQVU7QUFBQSxNQUNWLFdBQVc7QUFBQSxJQUNiLENBQUMsQ0FBQztBQUFBLElBQ0YsWUFBUSxnREFBc0IsRUFBRSxVQUFVLGFBQWEsV0FBVyxVQUFVLENBQUM7QUFBQSxFQUMvRTtBQUNGO0FBS08sTUFBTSxhQUFhO0FBOFAxQixlQUFzQixzQkFBc0IsUUFBc0Q7QUFDaEcsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFFSixRQUFNLDhCQUE4QixnQ0FBZ0M7QUFDcEUsTUFBSSxDQUFDLDZCQUE2QjtBQUdoQyxXQUFPLDBCQUEwQjtBQUFBLE1BQy9CO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUVBLFFBQU0scUJBQWlCLDRCQUFRLEtBQUssdUJBQXVCO0FBQzNELFFBQU0sOEJBQTBCLHFCQUFRLGNBQWM7QUFDdEQsUUFBTSw2QkFBeUIsc0JBQVMsZ0JBQWdCLHVCQUF1QjtBQUMvRSxRQUFNLHFCQUFpQixrQ0FBYyxFQUFFLEtBQUssWUFBWSxlQUFlLENBQUM7QUFFeEUsU0FBTyxNQUFNLDRCQUE0QiwrQkFBK0I7QUFBQSxJQUN0RTtBQUFBLElBQ0EseUJBQXlCLHdCQUF3QixNQUFNLENBQUM7QUFBQSxJQUN4RCxxQkFBcUIsZ0JBQWdCO0FBQUEsSUFDckMsU0FBUyxPQUFPO0FBQUEsSUFDaEI7QUFBQSxJQUNBO0FBQUEsSUFDQSxtQkFBbUIsT0FBTztBQUFBLElBQzFCLDJCQUEyQixpQkFBaUIsTUFBNEIsSUFBSSxNQUFNLFdBQVcsY0FBYyxJQUFJO0FBQUEsSUFDL0c7QUFBQSxJQUNBLDJDQUEyQztBQUFBLEVBQzdDLENBQUM7QUFDSDtBQVFBLGVBQXNCLHdCQUF3QixRQUF3RDtBQUNwRyxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0EsVUFBVTtBQUFBLElBQ1Y7QUFBQSxFQUNGLElBQUk7QUFDSixhQUFPO0FBQUEsSUFDTCxNQUFNLHNCQUFzQjtBQUFBLE1BQzFCO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBLHlCQUF5QjtBQUFBLE1BQ3pCLDBCQUEwQjtBQUFBLElBQzVCLENBQUM7QUFBQSxFQUNIO0FBQ0Y7QUFxQk8sU0FBUyxrQ0FBa0MsUUFBZ0U7QUFDaEgsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBRUosU0FBTyxnQ0FBZ0MsSUFDbkMsV0FDQSx5Q0FBaUIsMEJBQTBCO0FBQUEsSUFDM0M7QUFBQSxJQUNBO0FBQUEsSUFDQSx5QkFBeUI7QUFBQSxJQUN6QiwwQkFBMEI7QUFBQSxFQUM1QixDQUFDLENBQUM7QUFDTjtBQVFBLGVBQXNCLCtCQUErQixRQUErRDtBQUNsSCxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBSUosUUFBTSxtQkFBbUIsd0JBQXdCLEVBQUUsS0FBSyxlQUFlLENBQUM7QUFDeEUsTUFBSSxDQUFDLGlCQUFpQixVQUFVLGlCQUFpQixnQkFBZ0IsQ0FBQywyQ0FBMkM7QUFDM0csVUFBTSxJQUFJLE1BQU0sYUFBYSxpQkFBaUIsSUFBSTtBQUFBLEVBQ3BEO0FBRUEsU0FBTyxtQ0FBbUMsTUFBTTtBQUNsRDtBQXFCTyxTQUFTLHVDQUF1QyxNQUEwRDtBQUMvRyxRQUFNLDhCQUE4QixnQ0FBZ0M7QUFDcEUsU0FBTyw4QkFDSCxDQUFDLGVBQWdDLDRCQUE0Qix1QkFBdUIsRUFBRSxXQUFXLENBQUMsSUFDbEc7QUFDTjtBQWlCQSxlQUFzQix1QkFBdUIsUUFBd0Q7QUFDbkcsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBLFVBQVU7QUFBQSxJQUNWO0FBQUEsRUFDRixJQUFJO0FBQ0osUUFBTSx1QkFBdUIsTUFBTSx3QkFBd0I7QUFBQSxJQUN6RDtBQUFBLElBQ0E7QUFBQSxJQUNBLGdCQUFnQjtBQUFBLEVBQ2xCLENBQUM7QUFDRCxRQUFNLDRCQUE0QixNQUFNLHdCQUF3QjtBQUFBLElBQzlEO0FBQUEsSUFDQTtBQUFBLElBQ0Esb0JBQWdCLHNCQUFLLHFCQUFRLElBQUksR0FBRyxHQUFHLFVBQVUsSUFBSSwwQ0FBdUIsRUFBRTtBQUFBLEVBQ2hGLENBQUM7QUFDRCxTQUFPLHlCQUF5QjtBQUNsQztBQWtCQSxlQUFzQix5QkFBeUIsUUFBMEQ7QUFDdkcsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQSxVQUFVO0FBQUEsSUFDVjtBQUFBLEVBQ0YsSUFBSTtBQUVKLFFBQU0sa0JBQWMsNEJBQVEsS0FBSyxvQkFBb0I7QUFDckQsUUFBTSxhQUFhLE1BQU0sc0JBQXNCO0FBQUEsSUFDN0M7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EseUJBQXlCO0FBQUEsSUFDekIsMEJBQTBCO0FBQUEsRUFDNUIsQ0FBQztBQUVELFFBQU0sb0JBQWdCLHlDQUFpQixHQUFHLEVBQUU7QUFFNUMsV0FBUyxLQUFLLE9BQXVCO0FBQ25DLFdBQU8sZ0JBQWdCLE1BQU0sWUFBWSxJQUFJO0FBQUEsRUFDL0M7QUFFQSxNQUFJLFNBQUsscUJBQVEsV0FBVyxDQUFDLE1BQU0sU0FBSyxxQkFBUSxVQUFVLENBQUMsR0FBRztBQUM1RCxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sdUJBQW1CLHFCQUFRLFdBQVc7QUFDNUMsUUFBTSxzQkFBa0IscUJBQVEsVUFBVTtBQUMxQyxNQUFJLEtBQUssZ0JBQWdCLE1BQU0sS0FBSyxlQUFlLEdBQUc7QUFDcEQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLHNCQUFrQixzQkFBUyxhQUFhLGdCQUFnQjtBQUM5RCxRQUFNLHFCQUFpQixzQkFBUyxZQUFZLGVBQWU7QUFFM0QsTUFBSSxLQUFLLGVBQWUsTUFBTSxLQUFLLGNBQWMsR0FBRztBQUNsRCxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sc0JBQXNCLEdBQUcsY0FBYztBQUM3QyxNQUFJLENBQUMsS0FBSyxlQUFlLEVBQUUsV0FBVyxLQUFLLG1CQUFtQixDQUFDLEdBQUc7QUFDaEUsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLHNCQUFzQixnQkFBZ0IsTUFBTSxvQkFBb0IsTUFBTTtBQUM1RSxTQUFPLFFBQVEsS0FBSyxtQkFBbUI7QUFDekM7QUFRQSxTQUFTLGtDQUFvRjtBQUMzRixhQUFPLGlDQUF5RDtBQUFBLElBQzlELGlCQUFpQjtBQUFBLElBQ2pCLFVBQVU7QUFBQSxJQUNWLFVBQVU7QUFBQSxFQUNaLENBQUM7QUFDSDtBQVNBLFNBQVMsMEJBQTBCLFFBQWlEO0FBQ2xGLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBQ0osUUFBTSxxQkFBaUIsNEJBQVEsS0FBSyx1QkFBdUI7QUFDM0QsUUFBTSw4QkFBMEIscUJBQVEsY0FBYztBQUV0RCxTQUFPLG1DQUFtQztBQUFBLElBQ3hDO0FBQUEsSUFDQSw0QkFBd0Isc0JBQVMsZ0JBQWdCLHVCQUF1QjtBQUFBLElBQ3hFLHlCQUF5Qix3QkFBd0IsTUFBTSxDQUFDO0FBQUEsSUFDeEQ7QUFBQSxJQUNBO0FBQUEsRUFDRixDQUFDO0FBQ0g7QUFTQSxTQUFTLG1DQUFtQyxRQUEwRDtBQUNwRyxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUNKLFFBQU0sbUJBQW1CLHdCQUF3QixFQUFFLEtBQUssZUFBZSxDQUFDO0FBQ3hFLFFBQU0sNkJBQXlCLCtCQUFnQixpQkFBaUIsT0FBTyxzQkFBc0IsQ0FBQztBQUk5RixRQUFNLFNBQVMsaUJBQWlCLGNBQVUsOEJBQVUsRUFBRSxLQUFLLGNBQWMsaUJBQWlCLE1BQU0sMEJBQTBCLEtBQUssQ0FBQztBQUVoSSxRQUFNLFNBQVMsT0FBTyxnQkFBZ0I7QUFDdEMsU0FBTywrQkFDSCwwQkFBYTtBQUFBLElBQ2IsY0FBYyxTQUFTO0FBQUEsSUFDdkIsZUFBZTtBQUFBLEVBQ2pCLENBQUMsSUFDQyxJQUFJLE1BQU0saUJBQWlCLFNBQVMsd0JBQXdCLHVCQUF1QjtBQUN6RjtBQUVBLFNBQVMsVUFBVSxPQUFrQztBQUNuRCxTQUFPLE9BQU8sVUFBVTtBQUMxQjtBQUVBLFNBQVMsdURBQXVELE9BQStFO0FBQzdJLFNBQU8sT0FBTyxVQUFVLFlBQVksVUFBVSxRQUFRLE9BQU8sUUFBUSxJQUFJLE9BQU8sWUFBWSxNQUFNO0FBQ3BHO0FBRUEsU0FBUyx1REFBdUQsT0FBK0U7QUFDN0ksTUFBSSxPQUFPLFVBQVUsWUFBWSxVQUFVLE1BQU07QUFDL0MsV0FBTztBQUFBLEVBQ1Q7QUFFQSxXQUFTLEtBQUssS0FBMEU7QUFDdEYsV0FBTyxRQUFRLElBQUksT0FBaUIsR0FBRztBQUFBLEVBQ3pDO0FBRUEsUUFBTSxzQkFBc0IsS0FBSyxxQkFBcUI7QUFDdEQsUUFBTSxVQUFVLEtBQUssU0FBUztBQUM5QixRQUFNLGlCQUFpQixLQUFLLGdCQUFnQjtBQUM1QyxRQUFNLG9CQUFvQixLQUFLLG1CQUFtQjtBQUNsRCxRQUFNLDRCQUE0QixLQUFLLDJCQUEyQjtBQUNsRSxTQUFPLE9BQU8sS0FBSyx3QkFBd0IsTUFBTSxZQUM1QyxPQUFPLEtBQUsseUJBQXlCLE1BQU0sYUFDMUMsd0JBQXdCLFVBQWMsT0FBTyx3QkFBd0IsWUFBWSx3QkFBd0IsU0FDMUcsT0FBTyxPQUFPLHFCQUFxQixFQUFFLFNBQVMsT0FBTyxNQUNwRCxtQkFBbUIsWUFBUSxpQ0FBYSxjQUFjLFVBQ3ZELGlDQUFhLEtBQUsseUJBQXlCLENBQUMsTUFDM0Msc0JBQXNCLGNBQWEsaUNBQWEsaUJBQWlCLE9BQ2pFLDhCQUE4QixRQUFRLE9BQU8sOEJBQThCLGVBQzVFLGtCQUFrQixLQUFLLDBCQUEwQixDQUFDLEtBQ2xELGtCQUFrQixLQUFLLHVDQUF1QyxDQUFDLEtBQy9ELGtCQUFrQixLQUFLLDJDQUEyQyxDQUFDO0FBQzFFO0FBQ0EsU0FBUyxrQkFBa0IsT0FBOEM7QUFDdkUsU0FBTyxVQUFVLFVBQWEsVUFBVSxLQUFLO0FBQy9DO0FBRUEsU0FBUyxTQUFTLE9BQWlDO0FBQ2pELFNBQU8sT0FBTyxVQUFVO0FBQzFCO0FBUUEsU0FBUyxpQkFBaUIsTUFBc0I7QUFDOUMsYUFBTywwQkFBVztBQUFBLElBQ2hCLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxJQUNWLGFBQWE7QUFBQSxFQUNmLENBQUM7QUFDRCxhQUFPLDBCQUFXO0FBQUEsSUFDaEIsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLElBQ1YsYUFBYTtBQUFBLEVBQ2YsQ0FBQztBQUNELFNBQU8sUUFBUTtBQUNqQjtBQVFBLFNBQVMsd0JBQXdCLFFBQXNFO0FBQ3JHLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUNKLE1BQUksdUJBQXVCLElBQUksTUFBTSxVQUFVLHNCQUFzQjtBQUNyRSxRQUFNLGtCQUFrQix5QkFBeUIsT0FBTyx5QkFBeUI7QUFDakYsUUFBTSxlQUFlLHFCQUFxQixXQUFXLElBQUksUUFDckQseUJBQVU7QUFBQSxJQUNWLFNBQVM7QUFBQSxJQUNULFFBQVE7QUFBQSxFQUNWLENBQUMsSUFDQztBQUtKLFFBQU0saUJBQWlCLG1CQUFtQixPQUN0QyxXQUNBLDRCQUFRO0FBQUEsSUFDUjtBQUFBLElBQ0EsWUFBWTtBQUFBLElBQ1osMEJBQTBCO0FBQUEsRUFDNUIsQ0FBQztBQUVILE1BQUksaUJBQWlCO0FBQ25CLDJCQUF1QixpQkFBaUIsZUFBZSxRQUFRLFFBQVEsS0FBSztBQUFBLEVBQzlFLFdBQVcsY0FBYztBQUN2Qiw0QkFBd0IsaUJBQWlCLGVBQWUsUUFBUSxnQkFBZ0IsS0FBSyxLQUFLLE1BQU07QUFBQSxFQUNsRztBQUVBLDZCQUF1QiwrQkFBZ0IsaUJBQWlCLG9CQUFvQixDQUFDO0FBRTdFLFNBQU87QUFBQSxJQUNMLFlBQVEsb0NBQWdCLEVBQUUsS0FBSyxtQkFBbUIsTUFBTSxjQUFjLHFCQUFxQixDQUFDO0FBQUEsSUFDNUYsTUFBTTtBQUFBLElBQ047QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbIkF0dGFjaG1lbnRQYXRoQ29udGV4dCJdCn0K
435
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2F0dGFjaG1lbnQtcGF0aC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggYXR0YWNobWVudCBwYXRocy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRmlsZVN0YXRzLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgYmFzZW5hbWUsXG4gIGRpcm5hbWUsXG4gIGV4dG5hbWUsXG4gIGpvaW4sXG4gIG1ha2VGaWxlTmFtZVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQge1xuICBub3JtYWxpemVTdHJpbmcsXG4gIHJlcGxhY2VBbGwsXG4gIHRyaW1TdGFydFxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvc3RyaW5nJztcbmltcG9ydCB7XG4gIGdldERhdGFBZGFwdGVyRXgsXG4gIHBhcmVudEZvbGRlclBhdGhcbn0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdC9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luQXBpQ29udHJhY3QgfSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcblxuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgZ2V0RmlsZU9yTnVsbCxcbiAgZ2V0Rm9sZGVyLFxuICBnZXRGb2xkZXJPck51bGwsXG4gIGdldFBhdGgsXG4gIGlzUGF0aE9yRmlsZSxcbiAgTUFSS0RPV05fRklMRV9FWFRFTlNJT05cbn0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBjcmVhdGVBcmd1bWVudHNTY2hlbWEsXG4gIGNyZWF0ZVR5cGVHdWFyZFNjaGVtYVxufSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLXNjaGVtYS50cyc7XG5pbXBvcnQgeyBmaW5kUGx1Z2luQXBpIH0gZnJvbSAnLi9wbHVnaW4vcGx1Z2luLWFwaS50cyc7XG5cbi8qKlxuICogQSBjb250ZXh0IGZvciBhbiBhdHRhY2htZW50IHBhdGguXG4gKi9cbmV4cG9ydCBlbnVtIEF0dGFjaG1lbnRQYXRoQ29udGV4dCB7XG4gIC8qKlxuICAgKiBBIGNvbnRleHQgZm9yIGEgZGVsZXRlIG5vdGUuXG4gICAqL1xuICBEZWxldGVOb3RlID0gJ0RlbGV0ZU5vdGUnLFxuXG4gIC8qKlxuICAgKiBBIGNvbnRleHQgZm9yIGEgcmVuYW1lIG5vdGUuXG4gICAqL1xuICBSZW5hbWVOb3RlID0gJ1JlbmFtZU5vdGUnLFxuXG4gIC8qKlxuICAgKiBBbiB1bmtub3duIGNvbnRleHQuXG4gICAqL1xuICBVbmtub3duID0gJ1Vua25vd24nXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMgZXh0ZW5kZWQgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtcyB7XG4gIC8qKlxuICAgKiBBIGJhc2UgbmFtZSBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQW4gZXh0ZW5zaW9uIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVFeHRlbnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdGF0cyBvZiB0aGUgYXR0YWNobWVudCBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVTdGF0cz86IEZpbGVTdGF0cyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogQXR0YWNobWVudFBhdGhDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb3IgZmlsZSBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9yIGZpbGUgb2YgdGhlIG9sZCBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvciBmaWxlIG9mIHRoZSBvbGQgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG9sZE5vdGVQYXRoT3JGaWxlPzogUGF0aE9yRmlsZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogTGF6aWx5IHJlYWRzIHRoZSBjb250ZW50IG9mIHRoZSBhdHRhY2htZW50IGZpbGUuXG4gICAqXG4gICAqIFRoZSBjb250ZW50IGlzIHJlYWQgb24gZGVtYW5kIG9ubHkgd2hlbiBhIGNvbnN1bWVyIGFjdHVhbGx5IG5lZWRzIHRoZSBieXRlcyAoZS5nLiBhIHRlbXBsYXRlXG4gICAqIHRva2VuIHRoYXQgZW1iZWRzIHRoZW0pLiBGb3IgdGhlIGRlZmF1bHQgdGVtcGxhdGVzIG5vdGhpbmcgcHVsbHMgdGhlIGJ5dGVzLCBzbyB0aGUgcG90ZW50aWFsbHlcbiAgICogZXhwZW5zaXZlIChzaXplLXByb3BvcnRpb25hbCkgYHJlYWRCaW5hcnlgIG5ldmVyIHJ1bnMuIENvbnN1bWVycyB0aGF0IG1heSBjYWxsIHRoaXMgbW9yZSB0aGFuXG4gICAqIG9uY2Ugc2hvdWxkIG1lbW9pemUgdGhlIGZpcnN0IGNhbGwuIGBudWxsYCB3aGVuIHRoZXJlIGlzIG5vIGF0dGFjaG1lbnQgZmlsZSB0byByZWFkLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZW50IG9mIHRoZSBhdHRhY2htZW50IGZpbGUuXG4gICAqL1xuICByZWFkb25seSByZWFkQXR0YWNobWVudEZpbGVDb250ZW50OiAoKCkgPT4gUHJvbWlzZTxBcnJheUJ1ZmZlcj4pIHwgbnVsbDtcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBkdXBsaWNhdGUgY2hlY2sgYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBEdXBsaWNhdGVDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgZ2VuZXJhdGVkIGF0dGFjaG1lbnQgZmlsZSBuYW1lIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwR2VuZXJhdGVkQXR0YWNobWVudEZpbGVOYW1lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdWxkIG1pc3NpbmcgYXR0YWNobWVudCBmb2xkZXIgY3JlYXRpb24gYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uOiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFRoZSBzbGljZSBvZiBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gJ3MgcmVnaXN0cnkgQVBJIHRoaXMgbW9kdWxlIGNhbGxzLCBkZWNsYXJlZCBoZXJlIHJhdGhlciB0aGFuIGltcG9ydGVkOlxuICogdGhhdCBwbHVnaW4gc2hpcHMgaXRzIHN1cmZhY2UgYXMgYSBoYW5kLXdyaXR0ZW4gYGFwaS5kLnRzYCwgbm90IGFzIGEgcGFja2FnZSAoc2VlIHJ1bGUgTDkgaW4gYEFHRU5UUy5tZGApLlxuICovXG5pbnRlcmZhY2UgQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXR0YWNobWVudFBhdGhBcGkge1xuICAvKipcbiAgICogVGhlIHBsdWdpbidzIGZ1bGwgYXR0YWNobWVudC1wYXRoIHJlc29sdmVyLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHNhbWUgZmllbGRzIGFzIHtAbGluayBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zfSwgd2hpY2ggdGhlXG4gICAqICAgcGx1Z2luIGRlY2xhcmVzIGZpZWxkIGZvciBmaWVsZC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYXR0YWNobWVudCdzIHBhdGggZnJvbSB0aGUgdmF1bHQgcm9vdC5cbiAgICovXG4gIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50czogKHBhcmFtczogR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtcykgPT4gUHJvbWlzZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB1c2VyIGRlc2lnbmF0ZWQgYSBmb2xkZXIgYW4gYXR0YWNobWVudCB1bml0IGZvbGRlci4gU3luY2hyb25vdXMgb24gcHVycG9zZS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBmb2xkZXIuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZvbGRlciBpcyBkZXNpZ25hdGVkLlxuICAgKi9cbiAgaXNBdHRhY2htZW50VW5pdEZvbGRlcjogKHBhcmFtczogQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uSXNBdHRhY2htZW50VW5pdEZvbGRlclBhcmFtcykgPT4gYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXR0YWNobWVudFBhdGhBcGkuaXNBdHRhY2htZW50VW5pdEZvbGRlcn0uXG4gKi9cbmludGVyZmFjZSBDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIsIGFzIGEgdmF1bHQtcmVsYXRpdmUgcGF0aC5cbiAgICovXG4gIHJlYWRvbmx5IGZvbGRlclBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcGx1Z2luIGlkIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAgcHVibGlzaGVzIGl0cyBBUEkgdW5kZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9QTFVHSU5fSUQgPSAnb2JzaWRpYW4tY3VzdG9tLWF0dGFjaG1lbnQtbG9jYXRpb24nO1xuXG4vKipcbiAqIFRoZSBjb250cmFjdCB2ZXJzaW9ucyBvZiBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gJ3MgQVBJIHRoaXMgbW9kdWxlIGNvbXBpbGVkIGFnYWluc3QuIGAxLjMuMGAgaXMgdGhlIGZpcnN0XG4gKiB0byBjYXJyeSB0aGUgdHdvIGF0dGFjaG1lbnQtcGF0aCBtZXRob2RzLlxuICovXG5jb25zdCBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9BVFRBQ0hNRU5UX1BBVEhfQVBJX1ZFUlNJT05fUkFOR0UgPSAnXjEuMy4wJztcblxuLyoqXG4gKiBUaGUgY29udHJhY3Qgb2YgdGhlIG1lbWJlcnMgb2YgYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCdzIEFQSSB0aGlzIG1vZHVsZSBjYWxscywgc28gYSByZWNvcmQgdGhhdCBsYWNrc1xuICogZWl0aGVyIGlzIHBhc3NlZCBvdmVyLCBhbmQgYSBwYXlsb2FkIHRoYXQgYnJlYWtzIGl0cyBzaWduYXR1cmUgaXMgcmVwb3J0ZWQgd2hpbGUgdGhlIGBQbHVnaW5BcGlgIGRlYnVnZ2VyIGlzIG9uLlxuICpcbiAqIEEgY29weSBvZiB0aG9zZSB0d28gZW50cmllcyBvZiBgQ1VTVE9NX0FUVEFDSE1FTlRfTE9DQVRJT05fQVBJX0NPTlRSQUNUYCwgd2hpY2ggYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCBzaGlwcyBhcyBpdHMgcm9vdCBgYXBpLWNvbnRyYWN0LnRzYFxuICogYW5kIHB1Ymxpc2hlcy4gS2VlcCB0aGUgZ3VhcmRzIGluIGFncmVlbWVudCB3aXRoIHRoYXQgZmlsZSwgc28gdGhlIHByb3ZpZGVyIGFuZCB0aGlzIGNvbnN1bWVyIGNoZWNrIG9uZSBkZWZpbml0aW9uLlxuICovXG5jb25zdCBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9BVFRBQ0hNRU5UX1BBVEhfQVBJX0NPTlRSQUNUOiBQbHVnaW5BcGlDb250cmFjdDxDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaT4gPSB7XG4gIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50czoge1xuICAgIGlucHV0OiBjcmVhdGVBcmd1bWVudHNTY2hlbWE8W3BhcmFtczogR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtc10+KFt7XG4gICAgICBleHBlY3RlZDogJ2F2YWlsYWJsZS1wYXRoLWZvci1hdHRhY2htZW50cyBwYXJhbXMnLFxuICAgICAgdHlwZUd1YXJkOiBpc0dldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRnVuY3Rpb25QYXJhbXNcbiAgICB9XSksXG4gICAgb3V0cHV0OiBjcmVhdGVUeXBlR3VhcmRTY2hlbWEoeyBleHBlY3RlZDogJ2FuIGF0dGFjaG1lbnQgcGF0aCcsIHR5cGVHdWFyZDogaXNTdHJpbmcgfSlcbiAgfSxcbiAgaXNBdHRhY2htZW50VW5pdEZvbGRlcjoge1xuICAgIGlucHV0OiBjcmVhdGVBcmd1bWVudHNTY2hlbWE8W3BhcmFtczogQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uSXNBdHRhY2htZW50VW5pdEZvbGRlclBhcmFtc10+KFt7XG4gICAgICBleHBlY3RlZDogJ2F0dGFjaG1lbnQtdW5pdC1mb2xkZXIgcGFyYW1zOiB7IGZvbGRlclBhdGg6IHN0cmluZyB9JyxcbiAgICAgIHR5cGVHdWFyZDogaXNDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zXG4gICAgfV0pLFxuICAgIG91dHB1dDogY3JlYXRlVHlwZUd1YXJkU2NoZW1hKHsgZXhwZWN0ZWQ6ICdhIGJvb2xlYW4nLCB0eXBlR3VhcmQ6IGlzQm9vbGVhbiB9KVxuICB9XG59O1xuXG4vKipcbiAqIER1bW15IHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBEVU1NWV9QQVRIID0gJ19fRFVNTVlfXyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGdldEF0dGFjaG1lbnRGaWxlUGF0aCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdHRhY2htZW50RmlsZVBhdGhQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogQXR0YWNobWVudFBhdGhDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb2YgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvZiB0aGUgb2xkIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBvbGROb3RlUGF0aE9yRmlsZT86IFBhdGhPckZpbGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgZHVwbGljYXRlIGNoZWNrIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRofS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdHRhY2htZW50Rm9sZGVyUGF0aFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGNvbnRleHQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bn1cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBBdHRhY2htZW50UGF0aENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoU3luY09yTnVsbH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzUGFyYW1zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIC8qKlxuICAgKiBBIGJhc2UgbmFtZSBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEFuIGV4dGVuc2lvbiBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGZpbGUgdG8gYXR0YWNoIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JGaWxlO1xuICAvKipcbiAgICogU2hvdWxkIHRoZSBkdXBsaWNhdGUgY2hlY2sgYmUgc2tpcHBlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNob3VsZCBtaXNzaW5nIGF0dGFjaG1lbnQgZm9sZGVyIGNyZWF0aW9uIGJlIHNraXBwZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaGFzT3duQXR0YWNobWVudEZvbGRlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGFzT3duQXR0YWNobWVudEZvbGRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGNvbnRleHQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bn1cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBBdHRhY2htZW50UGF0aENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpc0F0UHJvcGVyQXR0YWNobWVudFBhdGh9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElzQXRQcm9wZXJBdHRhY2htZW50UGF0aFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSBvZiB0aGUgYXR0YWNobWVudCB0byBjaGVjay5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGV4dC5cbiAgICpcbiAgICogQGRlZmF1bHQge0BsaW5rIEF0dGFjaG1lbnRQYXRoQ29udGV4dC5Vbmtub3dufVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IEF0dGFjaG1lbnRQYXRoQ29udGV4dDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSBvZiB0aGUgbm90ZSB0aGF0IHJlZmVyZW5jZXMgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QXR0YWNobWVudEZpbGVQYXRoU3luY30uXG4gKi9cbmludGVyZmFjZSBHZXRBdHRhY2htZW50RmlsZVBhdGhTeW5jUGFyYW1zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBkdXBsaWNhdGUgY2hlY2sgYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzU3luY30uXG4gKi9cbmludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jUGFyYW1zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEgYmFzZSBuYW1lIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBleHRlbnNpb24gb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGZpbGUgdG8gYXR0YWNoIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXJ9LlxuICovXG5pbnRlcmZhY2UgUmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSBmaWxlIHRvIGF0dGFjaCB0by5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yRmlsZTtcbn1cblxuLyoqXG4gKiBUaGUgYXR0YWNobWVudCBmb2xkZXIgYSBub3RlIHJlc29sdmVzIHRvLCBiZWZvcmUgdGhlIGF0dGFjaG1lbnQgZmlsZSBuYW1lIGlzIGFwcGVuZGVkLlxuICovXG5pbnRlcmZhY2UgUmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXJSZXN1bHQge1xuICAvKipcbiAgICogVGhlIGF0dGFjaG1lbnQgZm9sZGVyLCBvciBgbnVsbGAgd2hlbiBpdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgdmF1bHQgeWV0LlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyOiBudWxsIHwgVEZvbGRlcjtcblxuICAvKipcbiAgICogVGhlIG5vcm1hbGl6ZWQgYXR0YWNobWVudCBmb2xkZXIgcGF0aCwgd2hldGhlciBvciBub3QgdGhlIGZvbGRlciBleGlzdHMuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJ0IG9mIHRoZSBgYXR0YWNobWVudEZvbGRlclBhdGhgIHNldHRpbmcgdGhhdCBmb2xsb3dzIGAuL2AsIG9yIGBudWxsYCB3aGVuIHRoZSBzZXR0aW5nIGlzIG5vdFxuICAgKiByZWxhdGl2ZSB0byB0aGUgbm90ZS4gT25seSBhIHJlbGF0aXZlIHNldHRpbmcgbWF5IGhhdmUgaXRzIG1pc3NpbmcgZm9sZGVyIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSByZWxhdGl2ZVBhdGg6IG51bGwgfCBzdHJpbmc7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBmaWxlIHBhdGggZm9yIGFuIGF0dGFjaG1lbnQgd2l0aGluIGEgbm90ZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdHRhY2htZW50IGZpbGUgcGF0aCBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGZpbGUgcGF0aCBvZiB0aGUgYXR0YWNobWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEF0dGFjaG1lbnRGaWxlUGF0aChwYXJhbXM6IEdldEF0dGFjaG1lbnRGaWxlUGF0aFBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbm90ZVBhdGhPckZpbGUsXG4gICAgb2xkQXR0YWNobWVudFBhdGhPckZpbGUsXG4gICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgY3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpID0gZmluZEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSgpO1xuICBpZiAoIWN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSkge1xuICAgIC8vIE5vYm9keSBvdmVycmlkZXMgdGhlIHJlc29sdXRpb24sIHNvIGl0IGlzIGVudGlyZWx5IHN5bmNocm9ub3VzLlxuICAgIC8vIFRoZSBzYW1lIGNvcmUgYW5zd2VycyBgZ2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsYCwgd2hpY2ggaXMgd2hhdCBrZWVwcyB0aGUgdHdvIGluIHN0ZXAuXG4gICAgcmV0dXJuIGdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmMoe1xuICAgICAgYXBwLFxuICAgICAgbm90ZVBhdGhPckZpbGUsXG4gICAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVja1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgYXR0YWNobWVudFBhdGggPSBnZXRQYXRoKGFwcCwgb2xkQXR0YWNobWVudFBhdGhPckZpbGUpO1xuICBjb25zdCBhdHRhY2htZW50RmlsZUV4dGVuc2lvbiA9IGV4dG5hbWUoYXR0YWNobWVudFBhdGgpO1xuICBjb25zdCBhdHRhY2htZW50RmlsZUJhc2VOYW1lID0gYmFzZW5hbWUoYXR0YWNobWVudFBhdGgsIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uKTtcbiAgY29uc3QgYXR0YWNobWVudEZpbGUgPSBnZXRGaWxlT3JOdWxsKHsgYXBwLCBwYXRoT3JGaWxlOiBhdHRhY2htZW50UGF0aCB9KTtcblxuICByZXR1cm4gYXdhaXQgY3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpLmdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyh7XG4gICAgYXR0YWNobWVudEZpbGVCYXNlTmFtZSxcbiAgICBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogYXR0YWNobWVudEZpbGVFeHRlbnNpb24uc2xpY2UoMSksXG4gICAgYXR0YWNobWVudEZpbGVTdGF0czogYXR0YWNobWVudEZpbGU/LnN0YXQsXG4gICAgY29udGV4dDogcGFyYW1zLmNvbnRleHQsXG4gICAgbm90ZVBhdGhPckZpbGUsXG4gICAgb2xkQXR0YWNobWVudFBhdGhPckZpbGUsXG4gICAgb2xkTm90ZVBhdGhPckZpbGU6IHBhcmFtcy5vbGROb3RlUGF0aE9yRmlsZSxcbiAgICByZWFkQXR0YWNobWVudEZpbGVDb250ZW50OiBhdHRhY2htZW50RmlsZSA/ICgpOiBQcm9taXNlPEFycmF5QnVmZmVyPiA9PiBhcHAudmF1bHQucmVhZEJpbmFyeShhdHRhY2htZW50RmlsZSkgOiBudWxsLFxuICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjayxcbiAgICBzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvbjogdHJ1ZVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGF0dGFjaG1lbnQgZm9sZGVyIHBhdGggZm9yIGEgZ2l2ZW4gbm90ZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdHRhY2htZW50IGZvbGRlciBwYXRoIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYXR0YWNobWVudCBmb2xkZXIgcGF0aC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKHBhcmFtczogR2V0QXR0YWNobWVudEZvbGRlclBhdGhQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGNvbnRleHQgPSBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bixcbiAgICBub3RlUGF0aE9yRmlsZVxuICB9ID0gcGFyYW1zO1xuICByZXR1cm4gcGFyZW50Rm9sZGVyUGF0aChcbiAgICBhd2FpdCBnZXRBdHRhY2htZW50RmlsZVBhdGgoe1xuICAgICAgYXBwLFxuICAgICAgY29udGV4dCxcbiAgICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgICAgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IERVTU1ZX1BBVEgsXG4gICAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s6IHRydWVcbiAgICB9KVxuICApO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgYXR0YWNobWVudCBmb2xkZXIgcGF0aCBmb3IgYSBnaXZlbiBub3RlICoqc3luY2hyb25vdXNseSoqLCB3aGVuIHRoYXQgaXMgcG9zc2libGUgYXQgYWxsLlxuICpcbiAqIE9ic2lkaWFuIGJ1aWxkcyBpdHMgZmlsZS9mb2xkZXIgY29udGV4dCBtZW51cyBhbmQgZXZhbHVhdGVzIGEgY29tbWFuZCdzIGBjaGVja0NhbGxiYWNrYCBzeW5jaHJvbm91c2x5LCBzbyBhXG4gKiBjYWxsZXIgZGVjaWRpbmcgd2hldGhlciB0byBtZXJlbHkgKm9mZmVyKiBhIGNvbW1hbmQgY2Fubm90IGF3YWl0IHtAbGluayBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aH0uIFRoaXMgaXNcbiAqIHRoZSBzeW5jaHJvbm91cyB0d2luIHN1Y2ggYSBjYWxsZXIgY2FuIHVzZSBpbnN0ZWFkLlxuICpcbiAqIFRoZSBhbnN3ZXIgaXMgYG51bGxgIHdoZW4gaXQgaXMgbm90IGtub3dhYmxlIHN5bmNocm9ub3VzbHkgXHUyMDE0IHRoYXQgaXMsIHdoZW4gYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCBwdWJsaXNoZXNcbiAqIGl0cyBhdHRhY2htZW50LXBhdGggQVBJIGFuZCB0aGVyZWZvcmUgb3ducyB0aGUgcmVzb2x1dGlvbiwgd2hpY2ggaXMgZ2VudWluZWx5IGFzeW5jaHJvbm91cy4gYG51bGxgIG1lYW5zIFwiYXNrIHtAbGluayBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aH1cIiwgbmV2ZXIgXCJ0aGVyZSBpcyBubyBhdHRhY2htZW50XG4gKiBmb2xkZXJcIi4gT3RoZXJ3aXNlIHRoZSBhbnN3ZXIgaXMgZXhhY3QgcmF0aGVyIHRoYW4gYSBndWVzczogaXQgaXMgcHJvZHVjZWQgYnkgdGhlIHZlcnkgc2FtZSBjb2RlXG4gKiB7QGxpbmsgZ2V0QXR0YWNobWVudEZvbGRlclBhdGh9IHJ1bnMsIHdob3NlIG9ubHkgYXN5bmNocm9ub3VzIHN0ZXAgXHUyMDE0IGNyZWF0aW5nIGEgbWlzc2luZyBhdHRhY2htZW50IGZvbGRlciBcdTIwMTRcbiAqIGlzIHVucmVhY2hhYmxlIG9uIHRoaXMgcGF0aC5cbiAqXG4gKiBUaGVyZSBpcyBkZWxpYmVyYXRlbHkgbm8gYGNvbnRleHRgIHBhcmFtZXRlcjoge0BsaW5rIEF0dGFjaG1lbnRQYXRoQ29udGV4dH0gb25seSBldmVyIHJlYWNoZXMgdGhhdCBwbHVnaW4nc1xuICogcmVzb2x2ZXIsIGFuZCB0aGlzIGZ1bmN0aW9uIGFuc3dlcnMgYG51bGxgIHdoZW5ldmVyIGl0IGlzIHB1Ymxpc2hlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdHRhY2htZW50IGZvbGRlciBwYXRoIHN5bmMgb3IgbnVsbCBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBhdHRhY2htZW50IGZvbGRlciBwYXRoLCBvciBgbnVsbGAgd2hlbiBpdCBjYW4gb25seSBiZSByZXNvbHZlZCBhc3luY2hyb25vdXNseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoU3luY09yTnVsbChwYXJhbXM6IEdldEF0dGFjaG1lbnRGb2xkZXJQYXRoU3luY09yTnVsbFBhcmFtcyk6IG51bGwgfCBzdHJpbmcge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5vdGVQYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG5cbiAgcmV0dXJuIGZpbmRDdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkoKVxuICAgID8gbnVsbFxuICAgIDogcGFyZW50Rm9sZGVyUGF0aChnZXRBdHRhY2htZW50RmlsZVBhdGhTeW5jKHtcbiAgICAgIGFwcCxcbiAgICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgICAgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IERVTU1ZX1BBVEgsXG4gICAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s6IHRydWVcbiAgICB9KSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBnZXQgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzKHBhcmFtczogR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvblxuICB9ID0gcGFyYW1zO1xuXG4gIC8vIE1hdGVyaWFsaXppbmcgYSBtaXNzaW5nIGF0dGFjaG1lbnQgZm9sZGVyIGlzIHRoZSBPTkUgZ2VudWluZWx5IGFzeW5jaHJvbm91cyBzdGVwIGluIHRoaXMgZnVuY3Rpb24uXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBsaXZlcyBpbiB0aGUgc3luY2hyb25vdXMgY29yZSwgd2hpY2ggdGhlIHN5bmNocm9ub3VzIGVudHJ5IHBvaW50cyByZXVzZSB2ZXJiYXRpbS5cbiAgY29uc3QgYXR0YWNobWVudEZvbGRlciA9IHJlc29sdmVBdHRhY2htZW50Rm9sZGVyKHsgYXBwLCBub3RlUGF0aE9yRmlsZSB9KTtcbiAgaWYgKCFhdHRhY2htZW50Rm9sZGVyLmZvbGRlciAmJiBhdHRhY2htZW50Rm9sZGVyLnJlbGF0aXZlUGF0aCAmJiAhc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb24pIHtcbiAgICBhd2FpdCBhcHAudmF1bHQuY3JlYXRlRm9sZGVyKGF0dGFjaG1lbnRGb2xkZXIucGF0aCk7XG4gIH1cblxuICByZXR1cm4gZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzU3luYyhwYXJhbXMpO1xufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBhdHRhY2htZW50LXVuaXQtZm9sZGVyIGRlc2lnbmF0aW9uIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAgcHVibGlzaGVzIHRocm91Z2ggaXRzIHBsdWdpbiBBUEkuXG4gKlxuICogVGhlIGRlc2lnbmF0aW9uIGlzIG9uZSBwbHVnaW4ncyBzZXR0aW5nIGJ1dCBldmVyeSByZWxvY2F0aW5nIHBsdWdpbidzIGJ1c2luZXNzLCBzbyBpdCBpcyByZWFkIGZyb20gdGhlIHNhbWVcbiAqIEFQSSB0aGF0IGFuc3dlcnMgdGhlIGF0dGFjaG1lbnQgcGF0aCBpdHNlbGYuIFJlYWRpbmcgaXQgaGVyZSByYXRoZXIgdGhhbiBoYXZpbmcgZWFjaCBjYWxsZXIgbG9vayBmb3IgdGhlXG4gKiBwbHVnaW4gaXMgdGhlIHBvaW50IFx1MjAxNCBhIGZvbGRlciBrZXB0IHdob2xlIGJ5IG9uZSBwbHVnaW4gYW5kIHRvcm4gYXBhcnQgYnkgYW5vdGhlciBpcyBleGFjdGx5IHRoZSBmYWlsdXJlXG4gKiBgZmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aGAgZXhpc3RzIHRvIHByZXZlbnQuXG4gKlxuICogYHVuZGVmaW5lZGAgbWVhbnMgbm9ib2R5IHB1Ymxpc2hlZCBhIGRlc2lnbmF0aW9uLCB0aGUgc2FtZSBcIm5vYm9keSBvd25zIHRoaXMgcG9saWN5XCIgYW5zd2VyIHRoYXQgc2VuZHNcbiAqIHtAbGluayBnZXRBdHRhY2htZW50RmlsZVBhdGh9IHRvIE9ic2lkaWFuJ3Mgb3duIHJlc29sdXRpb24uIEl0IGlzIGRpc3RpbmN0IGZyb20gYSBkZXNpZ25hdGlvbiB0aGF0IGFuc3dlcnNcbiAqIGBmYWxzZWAgZm9yIGV2ZXJ5IGZvbGRlci5cbiAqXG4gKiBUaGUgcmVnaXN0cnkgaXMgbG9va2VkIHVwIG9uY2UsIHdoZW4gdGhpcyBpcyBjYWxsZWQsIHNvIGEgY2FsbGVyIHdhbGtpbmcgYSBmb2xkZXIncyBhbmNlc3RvcnMgYXNrcyB0aGUgc2FtZVxuICogQVBJIGFsbCB0aGUgd2F5IHVwLlxuICpcbiAqIEBwYXJhbSBfYXBwIC0gQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuIFVudXNlZCBzaW5jZSB0aGUgYW5zd2VyIGNvbWVzIGZyb20gdGhlIHBsdWdpbiBBUEkgcmVnaXN0cnk7XG4gKiAgIGtlcHQgc28gZXhpc3RpbmcgY2FsbGVycyBjb21waWxlIHVuY2hhbmdlZC5cbiAqIEByZXR1cm5zIFRoZSBkZXNpZ25hdGlvbiBwcmVkaWNhdGUsIG9yIGB1bmRlZmluZWRgIHdoZW4gbm9ib2R5IHB1Ymxpc2hlZCBvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXJGdW5jdGlvbihfYXBwOiBBcHApOiAoKGZvbGRlclBhdGg6IHN0cmluZykgPT4gYm9vbGVhbikgfCB1bmRlZmluZWQge1xuICBjb25zdCBjdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkgPSBmaW5kQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpKCk7XG4gIHJldHVybiBjdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGlcbiAgICA/IChmb2xkZXJQYXRoOiBzdHJpbmcpOiBib29sZWFuID0+IGN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaS5pc0F0dGFjaG1lbnRVbml0Rm9sZGVyKHsgZm9sZGVyUGF0aCB9KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgbm90ZSdzIGF0dGFjaG1lbnQgZm9sZGVyIGlzIHNwZWNpZmljIHRvIHRoYXQgbm90ZSByYXRoZXIgdGhhbiBzaGFyZWQgd2l0aCBpdHMgc2libGluZ3MuXG4gKlxuICogVGhlIGFuc3dlciBpcyBkZXJpdmVkIGJ5IGNvbXBhcmluZyB0aGUgbm90ZSdzIGF0dGFjaG1lbnQgZm9sZGVyIHdpdGggdGhlIG9uZSBhIHNhbWUtZm9sZGVyIHNpYmxpbmcgbm90ZVxuICogd291bGQgZ2V0OiB0aGV5IGRpZmZlciBvbmx5IHdoZW4gdGhlIGZvbGRlciBkZXBlbmRzIG9uIHRoZSBub3RlJ3MgTkFNRS4gRXZlcnkgYnVpbHQtaW5cbiAqIGBhdHRhY2htZW50Rm9sZGVyUGF0aGAgbW9kZSBcdTIwMTQgdGhlIHZhdWx0IHJvb3QsIGEgZml4ZWQgZm9sZGVyLCB0aGUgbm90ZSdzIG93biBmb2xkZXIgKGAuL2ApLCBhIHN1YmZvbGRlciBvZlxuICogdGhlIG5vdGUncyBmb2xkZXIgKGAuL3N1YmApIFx1MjAxNCBpcyBzaGFyZWQgYnkgZXZlcnkgbm90ZSBpbiB0aGF0IGZvbGRlciwgc28gaXQgYW5zd2VycyBgZmFsc2VgOyBgdHJ1ZWAgYXJpc2VzXG4gKiBmcm9tIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAncyByZXNvbHZlciBkZXJpdmluZyB0aGUgZm9sZGVyIGZyb20gdGhlIG5vdGUncyBuYW1lLlxuICpcbiAqIFRoaXMgaXMgdGhlIGRpc3RpbmN0aW9uIGEgY2FsbGVyIG5lZWRzIGJlZm9yZSBzd2VlcGluZyBhbiBhdHRhY2htZW50IGZvbGRlciB3aG9sZXNhbGU6IG9ubHkgYVxuICogbm90ZS1zcGVjaWZpYyBmb2xkZXIgY2FuIGJlIHRyZWF0ZWQgYXMgYmVsb25naW5nIHRvIHRoZSBub3RlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgaGFzIG93biBhdHRhY2htZW50IGZvbGRlciBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgbm90ZSBoYXMgaXRzIG93biBhdHRhY2htZW50IGZvbGRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhc093bkF0dGFjaG1lbnRGb2xkZXIocGFyYW1zOiBIYXNPd25BdHRhY2htZW50Rm9sZGVyUGFyYW1zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgY29udGV4dCA9IEF0dGFjaG1lbnRQYXRoQ29udGV4dC5Vbmtub3duLFxuICAgIHBhdGhcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgYXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCh7XG4gICAgYXBwLFxuICAgIGNvbnRleHQsXG4gICAgbm90ZVBhdGhPckZpbGU6IHBhdGhcbiAgfSk7XG4gIGNvbnN0IGR1bW15QXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCh7XG4gICAgYXBwLFxuICAgIGNvbnRleHQsXG4gICAgbm90ZVBhdGhPckZpbGU6IGpvaW4oZGlybmFtZShwYXRoKSwgYCR7RFVNTVlfUEFUSH0uJHtNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTn1gKVxuICB9KTtcbiAgcmV0dXJuIGF0dGFjaG1lbnRGb2xkZXJQYXRoICE9PSBkdW1teUF0dGFjaG1lbnRGb2xkZXJQYXRoO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGF0dGFjaG1lbnQgYWxyZWFkeSBzaXRzIGF0IGl0cyBwcm9wZXIgYXR0YWNobWVudCBwYXRoLlxuICpcbiAqIFJldHVybnMgYHRydWVgIHdoZW4gdGhlIGF0dGFjaG1lbnQncyBjdXJyZW50IHBhdGggaXMsIHdpdGhpbiBpdHMgcHJvcGVyIGF0dGFjaG1lbnQgZm9sZGVyLCBlaXRoZXIgdGhlIHByb3BlclxuICogYmFzZSBuYW1lIG9yIHRoZSBwcm9wZXIgYmFzZSBuYW1lIHBsdXMgYW4gT2JzaWRpYW4gZGVkdXBsaWNhdGlvbiBzdWZmaXggKGEgc3BhY2UgZm9sbG93ZWQgYnkgZGlnaXRzLCBlLmcuXG4gKiBgaW1nIDFgKSB3aXRoIHRoZSBzYW1lIGV4dGVuc2lvbi4gVGhlIHByb3BlciBwYXRoIGlzIGNvbXB1dGVkIHZpYSB7QGxpbmsgZ2V0QXR0YWNobWVudEZpbGVQYXRofSB3aXRoXG4gKiB7QGxpbmsgR2V0QXR0YWNobWVudEZpbGVQYXRoUGFyYW1zLnNob3VsZFNraXBEdXBsaWNhdGVDaGVja30gc2V0IHRvIGB0cnVlYCAodGhlIHRhcmdldCBiZWZvcmUgYW55XG4gKiBkZWR1cGxpY2F0aW9uIHN1ZmZpeCksIGFuZCB0aGUgY29tcGFyaXNvbiByZXNwZWN0cyB0aGUgZmlsZSBzeXN0ZW0gY2FzZS1zZW5zaXRpdml0eSBmbGFnXG4gKiAoYGdldERhdGFBZGFwdGVyRXgoYXBwKS5pbnNlbnNpdGl2ZWApIHRoYXQgYGdldFNhZmVSZW5hbWVQYXRoYCB1c2VzLlxuICpcbiAqIFRoaXMgbGV0cyBhIGNhbGxlciByZWNvZ25pemUgYSBkZWR1cGxpY2F0aW9uLXBhcmtlZCBhdHRhY2htZW50IGFzIGFscmVhZHktY29sbGVjdGVkLCBzbyBhIFwibmVlZHMgbW92ZT9cIlxuICogZGVjaXNpb24gbWFkZSBhZ2FpbnN0IHRoZSBkZWR1cGxpY2F0aW9uLWZyZWUgcHJvcGVyIHBhdGggY29udmVyZ2VzIGluc3RlYWQgb2YgcmUtc2NoZWR1bGluZyB0aGUgZmlsZSBmb3JldmVyLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgaXMgYXQgcHJvcGVyIGF0dGFjaG1lbnQgcGF0aCBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYHRydWVgIHdoZW4gdGhlIGF0dGFjaG1lbnQgaXMgYWxyZWFkeSBhdCBpdHMgcHJvcGVyIHBhdGguXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0F0UHJvcGVyQXR0YWNobWVudFBhdGgocGFyYW1zOiBJc0F0UHJvcGVyQXR0YWNobWVudFBhdGhQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBhdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICBjb250ZXh0ID0gQXR0YWNobWVudFBhdGhDb250ZXh0LlVua25vd24sXG4gICAgbm90ZVBhdGhPckZpbGVcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBjdXJyZW50UGF0aCA9IGdldFBhdGgoYXBwLCBhdHRhY2htZW50UGF0aE9yRmlsZSk7XG4gIGNvbnN0IHByb3BlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50RmlsZVBhdGgoe1xuICAgIGFwcCxcbiAgICBjb250ZXh0LFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBhdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s6IHRydWVcbiAgfSk7XG5cbiAgY29uc3QgaXNJbnNlbnNpdGl2ZSA9IGdldERhdGFBZGFwdGVyRXgoYXBwKS5pbnNlbnNpdGl2ZTtcblxuICBmdW5jdGlvbiBmb2xkKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBpc0luc2Vuc2l0aXZlID8gdmFsdWUudG9Mb3dlckNhc2UoKSA6IHZhbHVlO1xuICB9XG5cbiAgaWYgKGZvbGQoZGlybmFtZShjdXJyZW50UGF0aCkpICE9PSBmb2xkKGRpcm5hbWUocHJvcGVyUGF0aCkpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgY3VycmVudEV4dGVuc2lvbiA9IGV4dG5hbWUoY3VycmVudFBhdGgpO1xuICBjb25zdCBwcm9wZXJFeHRlbnNpb24gPSBleHRuYW1lKHByb3BlclBhdGgpO1xuICBpZiAoZm9sZChjdXJyZW50RXh0ZW5zaW9uKSAhPT0gZm9sZChwcm9wZXJFeHRlbnNpb24pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgY3VycmVudEJhc2VOYW1lID0gYmFzZW5hbWUoY3VycmVudFBhdGgsIGN1cnJlbnRFeHRlbnNpb24pO1xuICBjb25zdCBwcm9wZXJCYXNlTmFtZSA9IGJhc2VuYW1lKHByb3BlclBhdGgsIHByb3BlckV4dGVuc2lvbik7XG5cbiAgaWYgKGZvbGQoY3VycmVudEJhc2VOYW1lKSA9PT0gZm9sZChwcm9wZXJCYXNlTmFtZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGRlZHVwbGljYXRpb25QcmVmaXggPSBgJHtwcm9wZXJCYXNlTmFtZX0gYDtcbiAgaWYgKCFmb2xkKGN1cnJlbnRCYXNlTmFtZSkuc3RhcnRzV2l0aChmb2xkKGRlZHVwbGljYXRpb25QcmVmaXgpKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGRlZHVwbGljYXRpb25TdWZmaXggPSBjdXJyZW50QmFzZU5hbWUuc2xpY2UoZGVkdXBsaWNhdGlvblByZWZpeC5sZW5ndGgpO1xuICByZXR1cm4gL15cXGQrJC8udGVzdChkZWR1cGxpY2F0aW9uU3VmZml4KTtcbn1cblxuLyoqXG4gKiBGaW5kcyBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gJ3MgYXR0YWNobWVudC1wYXRoIEFQSSBpbiB0aGUgcGx1Z2luIEFQSSByZWdpc3RyeS4gSXRzIHByZXNlbmNlIGlzIHRoZVxuICogc3luY2hyb25vdXMgcHJvYmUgZm9yIFwic29tZWJvZHkgZWxzZSBvd25zIHRoZSByZXNvbHV0aW9uXCIuXG4gKlxuICogQHJldHVybnMgVGhlIEFQSSwgb3IgYG51bGxgIHdoZW4gdGhhdCBwbHVnaW4gcHVibGlzaGVzIG5vIHJlY29yZCBzYXRpc2Z5aW5nIHRoZSByYW5nZSBhbmQgY29udHJhY3QuXG4gKi9cbmZ1bmN0aW9uIGZpbmRDdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkoKTogQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXR0YWNobWVudFBhdGhBcGkgfCBudWxsIHtcbiAgcmV0dXJuIGZpbmRQbHVnaW5BcGk8Q3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXR0YWNobWVudFBhdGhBcGk+KHtcbiAgICBhcGlWZXJzaW9uUmFuZ2U6IENVU1RPTV9BVFRBQ0hNRU5UX0xPQ0FUSU9OX0FUVEFDSE1FTlRfUEFUSF9BUElfVkVSU0lPTl9SQU5HRSxcbiAgICBjb250cmFjdDogQ1VTVE9NX0FUVEFDSE1FTlRfTE9DQVRJT05fQVRUQUNITUVOVF9QQVRIX0FQSV9DT05UUkFDVCxcbiAgICBwbHVnaW5JZDogQ1VTVE9NX0FUVEFDSE1FTlRfTE9DQVRJT05fUExVR0lOX0lEXG4gIH0pO1xufVxuXG4vKipcbiAqIFRoZSBzeW5jaHJvbm91cyBjb3JlIG9mIHtAbGluayBnZXRBdHRhY2htZW50RmlsZVBhdGh9LCByZWFjaGVkIHdoZW4gYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCBwdWJsaXNoZXMgbm9cbiAqIGF0dGFjaG1lbnQtcGF0aCBBUEkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBnZXQgYXR0YWNobWVudCBmaWxlIHBhdGggc3luYyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gKi9cbmZ1bmN0aW9uIGdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmMocGFyYW1zOiBHZXRBdHRhY2htZW50RmlsZVBhdGhTeW5jUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2tcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgYXR0YWNobWVudFBhdGggPSBnZXRQYXRoKGFwcCwgb2xkQXR0YWNobWVudFBhdGhPckZpbGUpO1xuICBjb25zdCBhdHRhY2htZW50RmlsZUV4dGVuc2lvbiA9IGV4dG5hbWUoYXR0YWNobWVudFBhdGgpO1xuXG4gIHJldHVybiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jKHtcbiAgICBhcHAsXG4gICAgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogYmFzZW5hbWUoYXR0YWNobWVudFBhdGgsIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uKSxcbiAgICBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogYXR0YWNobWVudEZpbGVFeHRlbnNpb24uc2xpY2UoMSksXG4gICAgbm90ZVBhdGhPckZpbGUsXG4gICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gIH0pO1xufVxuXG4vKipcbiAqIFRoZSBzeW5jaHJvbm91cyBjb3JlIG9mIHtAbGluayBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHN9LCB3aGljaCBjYW5ub3QgY3JlYXRlIGEgbWlzc2luZyBhdHRhY2htZW50XG4gKiBmb2xkZXIuIEl0cyBjYWxsZXIgY3JlYXRlcyB0aGUgZm9sZGVyIGZpcnN0IHdoZW4gdGhhdCBpcyB3YW50ZWQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBnZXQgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzIHN5bmMgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzLlxuICovXG5mdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jKHBhcmFtczogR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzU3luY1BhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgYXR0YWNobWVudEZpbGVFeHRlbnNpb24sXG4gICAgbm90ZVBhdGhPckZpbGUsXG4gICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGF0dGFjaG1lbnRGb2xkZXIgPSByZXNvbHZlQXR0YWNobWVudEZvbGRlcih7IGFwcCwgbm90ZVBhdGhPckZpbGUgfSk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUgPSBub3JtYWxpemVTdHJpbmcobm9ybWFsaXplU2xhc2hlcyhwYXJhbXMuYXR0YWNobWVudEZpbGVCYXNlTmFtZSkpO1xuXG4gIC8vIEEgZm9sZGVyIHRoYXQgZG9lcyBub3QgZXhpc3QgeWV0IHN0aWxsIG93bnMgdGhlIGF0dGFjaG1lbnQgcGF0aC5cbiAgLy8gUmVzb2x2aW5nIGl0IGFzIGEgbm9uLWV4aXN0aW5nIGZvbGRlciBzdG9wcyB0aGUgYW5zd2VyIGZyb20gY29sbGFwc2luZyB0byB0aGUgdmF1bHQgcm9vdC5cbiAgY29uc3QgZm9sZGVyID0gYXR0YWNobWVudEZvbGRlci5mb2xkZXIgPz8gZ2V0Rm9sZGVyKHsgYXBwLCBwYXRoT3JGb2xkZXI6IGF0dGFjaG1lbnRGb2xkZXIucGF0aCwgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHByZWZpeCA9IGZvbGRlci5nZXRQYXJlbnRQcmVmaXgoKTtcbiAgcmV0dXJuIHNob3VsZFNraXBEdXBsaWNhdGVDaGVja1xuICAgID8gbWFrZUZpbGVOYW1lKHtcbiAgICAgIGZpbGVCYXNlTmFtZTogcHJlZml4ICsgYXR0YWNobWVudEZpbGVCYXNlTmFtZSxcbiAgICAgIGZpbGVFeHRlbnNpb246IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uXG4gICAgfSlcbiAgICA6IGFwcC52YXVsdC5nZXRBdmFpbGFibGVQYXRoKHByZWZpeCArIGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUsIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uKTtcbn1cblxuZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJztcbn1cblxuZnVuY3Rpb24gaXNDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uSXNBdHRhY2htZW50VW5pdEZvbGRlclBhcmFtcyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiBSZWZsZWN0LmdldCh2YWx1ZSwgJ2ZvbGRlclBhdGgnKSA9PT0gJ3N0cmluZyc7XG59XG5cbmZ1bmN0aW9uIGlzRmlsZVN0YXRzKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRmlsZVN0YXRzIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAmJiB2YWx1ZSAhPT0gbnVsbFxuICAgICYmIHR5cGVvZiBSZWZsZWN0LmdldCh2YWx1ZSwgJ2N0aW1lJykgPT09ICdudW1iZXInXG4gICAgJiYgdHlwZW9mIFJlZmxlY3QuZ2V0KHZhbHVlLCAnbXRpbWUnKSA9PT0gJ251bWJlcidcbiAgICAmJiB0eXBlb2YgUmVmbGVjdC5nZXQodmFsdWUsICdzaXplJykgPT09ICdudW1iZXInO1xufVxuXG5mdW5jdGlvbiBpc0dldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRnVuY3Rpb25QYXJhbXModmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmdW5jdGlvbiByZWFkKGtleToga2V5b2YgR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtcyk6IHVua25vd24ge1xuICAgIHJldHVybiBSZWZsZWN0LmdldCh2YWx1ZSBhcyBvYmplY3QsIGtleSk7XG4gIH1cblxuICBjb25zdCBhdHRhY2htZW50RmlsZVN0YXRzID0gcmVhZCgnYXR0YWNobWVudEZpbGVTdGF0cycpO1xuICBjb25zdCBjb250ZXh0ID0gcmVhZCgnY29udGV4dCcpO1xuICBjb25zdCBub3RlUGF0aE9yRmlsZSA9IHJlYWQoJ25vdGVQYXRoT3JGaWxlJyk7XG4gIGNvbnN0IG9sZE5vdGVQYXRoT3JGaWxlID0gcmVhZCgnb2xkTm90ZVBhdGhPckZpbGUnKTtcbiAgY29uc3QgcmVhZEF0dGFjaG1lbnRGaWxlQ29udGVudCA9IHJlYWQoJ3JlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQnKTtcbiAgcmV0dXJuIHR5cGVvZiByZWFkKCdhdHRhY2htZW50RmlsZUJhc2VOYW1lJykgPT09ICdzdHJpbmcnXG4gICAgJiYgdHlwZW9mIHJlYWQoJ2F0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uJykgPT09ICdzdHJpbmcnXG4gICAgJiYgKGF0dGFjaG1lbnRGaWxlU3RhdHMgPT09IHVuZGVmaW5lZCB8fCBpc0ZpbGVTdGF0cyhhdHRhY2htZW50RmlsZVN0YXRzKSlcbiAgICAmJiBPYmplY3QudmFsdWVzKEF0dGFjaG1lbnRQYXRoQ29udGV4dCkuaW5jbHVkZXMoY29udGV4dClcbiAgICAmJiAobm90ZVBhdGhPckZpbGUgPT09IG51bGwgfHwgaXNQYXRoT3JGaWxlKG5vdGVQYXRoT3JGaWxlKSlcbiAgICAmJiBpc1BhdGhPckZpbGUocmVhZCgnb2xkQXR0YWNobWVudFBhdGhPckZpbGUnKSlcbiAgICAmJiAob2xkTm90ZVBhdGhPckZpbGUgPT09IHVuZGVmaW5lZCB8fCBpc1BhdGhPckZpbGUob2xkTm90ZVBhdGhPckZpbGUpKVxuICAgICYmIChyZWFkQXR0YWNobWVudEZpbGVDb250ZW50ID09PSBudWxsIHx8IHR5cGVvZiByZWFkQXR0YWNobWVudEZpbGVDb250ZW50ID09PSAnZnVuY3Rpb24nKVxuICAgICYmIGlzT3B0aW9uYWxCb29sZWFuKHJlYWQoJ3Nob3VsZFNraXBEdXBsaWNhdGVDaGVjaycpKVxuICAgICYmIGlzT3B0aW9uYWxCb29sZWFuKHJlYWQoJ3Nob3VsZFNraXBHZW5lcmF0ZWRBdHRhY2htZW50RmlsZU5hbWUnKSlcbiAgICAmJiBpc09wdGlvbmFsQm9vbGVhbihyZWFkKCdzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvbicpKTtcbn1cbmZ1bmN0aW9uIGlzT3B0aW9uYWxCb29sZWFuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGlzQm9vbGVhbih2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGggYnkgY29tYmluaW5nIG11bHRpcGxlIHNsYXNoZXMgaW50byBhIHNpbmdsZSBzbGFzaCBhbmQgcmVtb3ZpbmcgbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcy5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFBhdGggdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgcGF0aC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplU2xhc2hlcyhwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBwYXRoID0gcmVwbGFjZUFsbCh7XG4gICAgJHN0cmluZzogcGF0aCxcbiAgICByZXBsYWNlcjogJy8nLFxuICAgIHNlYXJjaFZhbHVlOiAvKD86W1xcXFwvXSkrL2dcbiAgfSk7XG4gIHBhdGggPSByZXBsYWNlQWxsKHtcbiAgICAkc3RyaW5nOiBwYXRoLFxuICAgIHJlcGxhY2VyOiAnJyxcbiAgICBzZWFyY2hWYWx1ZTogL15cXC8rfFxcLyskL2dcbiAgfSk7XG4gIHJldHVybiBwYXRoIHx8ICcvJztcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgYGF0dGFjaG1lbnRGb2xkZXJQYXRoYCBzZXR0aW5nIGFnYWluc3QgYSBub3RlIGludG8gYSBjb25jcmV0ZSBhdHRhY2htZW50IGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIHJlc29sdmUgYXR0YWNobWVudCBmb2xkZXIgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgYXR0YWNobWVudCBmb2xkZXIuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVBdHRhY2htZW50Rm9sZGVyKHBhcmFtczogUmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXJQYXJhbXMpOiBSZXNvbHZlQXR0YWNobWVudEZvbGRlclJlc3VsdCB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbm90ZVBhdGhPckZpbGVcbiAgfSA9IHBhcmFtcztcbiAgbGV0IGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXBwLnZhdWx0LmdldENvbmZpZygnYXR0YWNobWVudEZvbGRlclBhdGgnKSBhcyBzdHJpbmc7XG4gIGNvbnN0IGlzQ3VycmVudEZvbGRlciA9IGF0dGFjaG1lbnRGb2xkZXJQYXRoID09PSAnLicgfHwgYXR0YWNobWVudEZvbGRlclBhdGggPT09ICcuLyc7XG4gIGNvbnN0IHJlbGF0aXZlUGF0aCA9IGF0dGFjaG1lbnRGb2xkZXJQYXRoLnN0YXJ0c1dpdGgoJy4vJylcbiAgICA/IHRyaW1TdGFydCh7XG4gICAgICAkc3RyaW5nOiBhdHRhY2htZW50Rm9sZGVyUGF0aCxcbiAgICAgIHByZWZpeDogJy4vJ1xuICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIC8vIEEgbm90ZSB0aGF0IGRvZXMgbm90IGV4aXN0IHlldCAoYSByZW5hbWUgdGFyZ2V0LCBhIGR1bW15IHNpYmxpbmcpIHN0aWxsIGJlbG9uZ3MgdG8gaXRzIG93biBmb2xkZXIuXG4gIC8vIE1hdGVyaWFsaXppbmcgaXQgZnJvbSBpdHMgcGF0aCBrZWVwcyB0aGF0IGZvbGRlciwgd2hlcmUgYSB2YXVsdCBsb29rdXAgd291bGQgZmFsbCBiYWNrIHRvIHRoZSByb290LlxuICAvLyBPbmx5IGFuIGV4cGxpY2l0bHkgbm90ZS1sZXNzIGF0dGFjaG1lbnQgcmVzb2x2ZXMgdG8gdGhlIHZhdWx0IHJvb3QuXG4gIGNvbnN0IG5vdGVGaWxlT3JOdWxsID0gbm90ZVBhdGhPckZpbGUgPT09IG51bGxcbiAgICA/IG51bGxcbiAgICA6IGdldEZpbGUoe1xuICAgICAgYXBwLFxuICAgICAgcGF0aE9yRmlsZTogbm90ZVBhdGhPckZpbGUsXG4gICAgICBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWVcbiAgICB9KTtcblxuICBpZiAoaXNDdXJyZW50Rm9sZGVyKSB7XG4gICAgYXR0YWNobWVudEZvbGRlclBhdGggPSBub3RlRmlsZU9yTnVsbCA/IG5vdGVGaWxlT3JOdWxsLnBhcmVudD8ucGF0aCA/PyAnJyA6ICcnO1xuICB9IGVsc2UgaWYgKHJlbGF0aXZlUGF0aCkge1xuICAgIGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gKG5vdGVGaWxlT3JOdWxsID8gbm90ZUZpbGVPck51bGwucGFyZW50Py5nZXRQYXJlbnRQcmVmaXgoKSA/PyAnJyA6ICcnKSArIHJlbGF0aXZlUGF0aDtcbiAgfVxuXG4gIGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gbm9ybWFsaXplU3RyaW5nKG5vcm1hbGl6ZVNsYXNoZXMoYXR0YWNobWVudEZvbGRlclBhdGgpKTtcblxuICByZXR1cm4ge1xuICAgIGZvbGRlcjogZ2V0Rm9sZGVyT3JOdWxsKHsgYXBwLCBpc0Nhc2VJbnNlbnNpdGl2ZTogdHJ1ZSwgcGF0aE9yRm9sZGVyOiBhdHRhY2htZW50Rm9sZGVyUGF0aCB9KSxcbiAgICBwYXRoOiBhdHRhY2htZW50Rm9sZGVyUGF0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
@@ -80,7 +80,7 @@ export interface GetAvailablePathForAttachmentsExtendedFunctionParams {
80
80
  readonly shouldSkipMissingAttachmentFolderCreation: boolean | undefined;
81
81
  }
82
82
  /**
83
- * The plugin id Custom Attachment Location publishes its API under.
83
+ * The plugin id `Custom Attachment Location` publishes its API under.
84
84
  */
85
85
  export declare const CUSTOM_ATTACHMENT_LOCATION_PLUGIN_ID = "obsidian-custom-attachment-location";
86
86
  /**
@@ -244,7 +244,7 @@ export declare function getAttachmentFolderPath(params: GetAttachmentFolderPathP
244
244
  * caller deciding whether to merely *offer* a command cannot await {@link getAttachmentFolderPath}. This is
245
245
  * the synchronous twin such a caller can use instead.
246
246
  *
247
- * The answer is `null` when it is not knowable synchronously — that is, when Custom Attachment Location publishes
247
+ * The answer is `null` when it is not knowable synchronously — that is, when `Custom Attachment Location` publishes
248
248
  * its attachment-path API and therefore owns the resolution, which is genuinely asynchronous. `null` means "ask {@link getAttachmentFolderPath}", never "there is no attachment
249
249
  * folder". Otherwise the answer is exact rather than a guess: it is produced by the very same code
250
250
  * {@link getAttachmentFolderPath} runs, whose only asynchronous step — creating a missing attachment folder —
@@ -265,7 +265,7 @@ export declare function getAttachmentFolderPathSyncOrNull(params: GetAttachmentF
265
265
  */
266
266
  export declare function getAvailablePathForAttachments(params: GetAvailablePathForAttachmentsParams): Promise<string>;
267
267
  /**
268
- * Reads the attachment-unit-folder designation Custom Attachment Location publishes through its plugin API.
268
+ * Reads the attachment-unit-folder designation `Custom Attachment Location` publishes through its plugin API.
269
269
  *
270
270
  * The designation is one plugin's setting but every relocating plugin's business, so it is read from the same
271
271
  * API that answers the attachment path itself. Reading it here rather than having each caller look for the
@@ -291,7 +291,7 @@ export declare function getCheckIsAttachmentUnitFolderFunction(_app: App): ((fol
291
291
  * would get: they differ only when the folder depends on the note's NAME. Every built-in
292
292
  * `attachmentFolderPath` mode — the vault root, a fixed folder, the note's own folder (`./`), a subfolder of
293
293
  * the note's folder (`./sub`) — is shared by every note in that folder, so it answers `false`; `true` arises
294
- * from Custom Attachment Location's resolver deriving the folder from the note's name.
294
+ * from `Custom Attachment Location`'s resolver deriving the folder from the note's name.
295
295
  *
296
296
  * This is the distinction a caller needs before sweeping an attachment folder wholesale: only a
297
297
  * note-specific folder can be treated as belonging to the note.
@@ -165,4 +165,4 @@ function rebasePathOntoFolder(params) {
165
165
  findAttachmentUnitFolderPath,
166
166
  rebasePathOntoFolder
167
167
  });
168
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2F0dGFjaG1lbnQtdW5pdC1mb2xkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBSZXNvbHZlcyB3aGljaCBmb2xkZXIgYW4gYXR0YWNobWVudCBiZWxvbmdzIHRvIHdoZW4gdGhlIHVzZXIgaGFzIGRlc2lnbmF0ZWQgZm9sZGVycyB0aGF0IG11c3RcbiAqIHRyYXZlbCBhcyBhIHNpbmdsZSB1bml0LlxuICpcbiAqIFNvbWUgZm9ybWF0cyBhcmUgcmVhbGx5IGEgZGlyZWN0b3J5IHRyZWUgcmF0aGVyIHRoYW4gYSBmaWxlOiBhIHBhZ2Ugc2F2ZWQgZnJvbSBhIGJyb3dzZXIgc2l0cyBuZXh0XG4gKiB0byBhIGBfZmlsZXMvYCBmb2xkZXIgaG9sZGluZyBpdHMgaW1hZ2VzIGFuZCBzdHlsZXNoZWV0cywgYW4gYC5leGNhbGlkcmF3YCBzaXRzIG5leHQgdG8gdGhlIGltYWdlc1xuICogaXQgcmVmZXJlbmNlcy4gUmVsb2NhdGluZyBvbmx5IHRoZSBsaW5rZWQgZmlsZSBsZWF2ZXMgdGhlIHJlc3QgYmVoaW5kIGFuZCB0aGUgYXR0YWNobWVudCBhcnJpdmVzXG4gKiBicm9rZW4uXG4gKlxuICogVGhpcyBsaXZlcyBpbiB0aGUgc2hhcmVkIGxpYnJhcnkgcmF0aGVyIHRoYW4gaW4gb25lIHBsdWdpbiBiZWNhdXNlIG1vcmUgdGhhbiBvbmUgcGx1Z2luIHJlbG9jYXRlc1xuICogYXR0YWNobWVudHMgb3ZlciB0aGUgc2FtZSB2YXVsdC4gSWYgdGhleSBlYWNoIGRlY2lkZWQgc2VwYXJhdGVseSB3aGF0IG9uZSBhdHRhY2htZW50IGlzLCBhIHVzZXJcbiAqIHdpdGggYm90aCBpbnN0YWxsZWQgd291bGQgZ2V0IGEgZm9sZGVyIGtlcHQgd2hvbGUgYnkgb25lIGFuZCB0b3JuIGFwYXJ0IGJ5IHRoZSBvdGhlci5cbiAqXG4gKiBXaGljaCBpcyB3aHkgdGhlIGRlc2lnbmF0aW9uIGl0c2VsZiBpcyByZWFkIGZyb20gb25lIHNoYXJlZCBzb3VyY2UgcmF0aGVyIHRoYW4gc3VwcGxpZWQgcGVyIGNhbGxlcjogcGFzc1xuICogYW4ge0BsaW5rIEFwcH0gYW5kIHtAbGluayBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRofSB3YWxrcyB3aXRoIHdoYXRldmVyIEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uXG4gKiBwdWJsaXNoZXMgdGhyb3VnaCBpdHMgcGx1Z2luIEFQSSwgc28gZXZlcnkgcGx1Z2luIGRlY2lkZXMgZnJvbSBvbmUgYW5zd2VyLiBUaGUgZXhwbGljaXQtcHJlZGljYXRlIGZvcm0gcmVtYWlucyBmb3IgYSBjYWxsZXIgdGhhdCBnZW51aW5lbHkgb3ducyBpdHMgb3duIHBhdHRlcm5zLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuXG5pbXBvcnQgeyBnZXRDaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXJGdW5jdGlvbiB9IGZyb20gJy4vYXR0YWNobWVudC1wYXRoLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aH0sIHJlYWRpbmcgdGhlIGRlc2lnbmF0aW9uIEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uXG4gKiBwdWJsaXNoZXMgdGhyb3VnaCBpdHMgcGx1Z2luIEFQSS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoRnJvbUFwcFBhcmFtcyB7XG4gIC8qKlxuICAgKiBBbiBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgdmF1bHQtcmVsYXRpdmUgcGF0aCBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGh9LlxuICpcbiAqIFByZWZlciB7QGxpbmsgRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aEZyb21BcHBQYXJhbXN9IFx1MjAxNCBpdCBpcyB0aGUgZm9ybSB0aGF0IG1ha2VzIGV2ZXJ5IHBsdWdpblxuICogZGVjaWRlIGZyb20gb25lIHB1Ymxpc2hlZCBhbnN3ZXIuXG4gKi9cbmV4cG9ydCB0eXBlIEZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGhQYXJhbXMgPSBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoRnJvbUFwcFBhcmFtcyB8IEZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGhXaXRoUHJlZGljYXRlUGFyYW1zO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRofSwgd2Fsa2luZyB3aXRoIGEgcHJlZGljYXRlIHRoZSBjYWxsZXIgb3ducy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoV2l0aFByZWRpY2F0ZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgdmF1bHQtcmVsYXRpdmUgcGF0aCBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBmb2xkZXIgcGF0aCBpcyBkZXNpZ25hdGVkIGFzIGFuIGF0dGFjaG1lbnQgdW5pdC5cbiAgICpcbiAgICogQHBhcmFtIGZvbGRlclBhdGggLSBUaGUgdmF1bHQtcmVsYXRpdmUgcGF0aCBvZiB0aGUgZm9sZGVyLlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGZvbGRlciBpcyBkZXNpZ25hdGVkIGFzIGFuIGF0dGFjaG1lbnQgdW5pdCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICByZWFkb25seSBjaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXI6IChmb2xkZXJQYXRoOiBzdHJpbmcpID0+IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlYmFzZVBhdGhPbnRvRm9sZGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWJhc2VQYXRoT250b0ZvbGRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyJ3MgbmV3IHBhdGguXG4gICAqL1xuICByZWFkb25seSBuZXdGb2xkZXJQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIncyBvbGQgcGF0aC5cbiAgICovXG4gIHJlYWRvbmx5IG9sZEZvbGRlclBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gcmViYXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBmb2xkZXIgdGhhdCBhbiBhdHRhY2htZW50IG11c3QgdHJhdmVsIHdpdGguXG4gKlxuICogUmV0dXJucyB0aGUgKipvdXRlcm1vc3QqKiBkZXNpZ25hdGVkIGFuY2VzdG9yLCBub3QgdGhlIG5lYXJlc3Qgb25lLiBXaXRoIG5lc3RlZCBkZXNpZ25hdGlvbnMsXG4gKiBtb3ZpbmcgdGhlIG5lYXJlc3Qgd291bGQgdGVhciB0aGUgb3V0ZXIgdHJlZSBpbiBoYWxmLCB3aGljaCBpcyB0aGUgZmFpbHVyZSB0aGUgd2hvbGUgZmVhdHVyZSBleGlzdHNcbiAqIHRvIHByZXZlbnQuXG4gKlxuICogVGhlIHZhdWx0IHJvb3QgaXMgbmV2ZXIgYSB1bml0LCBob3dldmVyIHRoZSBwYXR0ZXJucyBhcmUgd3JpdHRlbjogZGVzaWduYXRpbmcgaXQgd291bGQgbWFrZSBldmVyeVxuICogcmVsb2NhdGlvbiBhIG5vLW9wIGF0IGJlc3QgYW5kIGEgdmF1bHQtd2lkZSBtb3ZlIGF0IHdvcnN0LlxuICpcbiAqIFBhc3NpbmcgYW4ge0BsaW5rIEFwcH0gd2Fsa3Mgd2l0aCB0aGUgZGVzaWduYXRpb24gQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb24gcHVibGlzaGVzIHRocm91Z2ggaXRzIHBsdWdpblxuICogQVBJOyB3aGVuIG5vYm9keSBwdWJsaXNoZWQgb25lLCBub3RoaW5nIGlzIGRlc2lnbmF0ZWQgYW5kIHRoZSBhbnN3ZXIgaXMgYG51bGxgLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgZmluZGluZyB0aGUgYXR0YWNobWVudCB1bml0IGZvbGRlci5cbiAqIEByZXR1cm5zIFRoZSB1bml0IGZvbGRlcidzIHBhdGgsIG9yIGBudWxsYCB3aGVuIHRoZSBhdHRhY2htZW50IGJlbG9uZ3MgdG8gbm8gdW5pdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGgocGFyYW1zOiBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoUGFyYW1zKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IHBhcmVudEZvbGRlclBhdGggPSBkaXJuYW1lKHBhcmFtcy5hdHRhY2htZW50UGF0aCk7XG4gIGlmICghcGFyZW50Rm9sZGVyUGF0aCB8fCBwYXJlbnRGb2xkZXJQYXRoID09PSAnLicgfHwgcGFyZW50Rm9sZGVyUGF0aCA9PT0gJy8nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXIgPSAnY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyJyBpbiBwYXJhbXNcbiAgICA/IHBhcmFtcy5jaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXJcbiAgICA6IGdldENoZWNrSXNBdHRhY2htZW50VW5pdEZvbGRlckZ1bmN0aW9uKHBhcmFtcy5hcHApO1xuXG4gIGlmICghY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzZWdtZW50cyA9IHBhcmVudEZvbGRlclBhdGguc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbik7XG4gIGZvciAobGV0IGNvdW50ID0gMTsgY291bnQgPD0gc2VnbWVudHMubGVuZ3RoOyBjb3VudCsrKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gc2VnbWVudHMuc2xpY2UoMCwgY291bnQpLmpvaW4oJy8nKTtcbiAgICBpZiAoY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyKGNhbmRpZGF0ZSkpIHtcbiAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogUmViYXNlcyBhIHBhdGggZnJvbSBvbmUgZm9sZGVyIG9udG8gYW5vdGhlci5cbiAqXG4gKiBVc2VkIHRvIHdvcmsgb3V0IHdoZXJlIGEgbGlua2VkIGF0dGFjaG1lbnQgZW5kcyB1cCBvbmNlIGl0cyB3aG9sZSB1bml0IGZvbGRlciBoYXMgbW92ZWQsIHNvIHRoZVxuICogbGluayBjYW4gYmUgcG9pbnRlZCBhdCB0aGUgZmlsZSdzIG5ldyBob21lIHJhdGhlciB0aGFuIGF0IHdoZXJlIHRoZSBmb2xkZXIgdXNlZCB0byBiZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlYmFzaW5nIHRoZSBwYXRoLlxuICogQHJldHVybnMgVGhlIHJlYmFzZWQgcGF0aCwgb3IgYG51bGxgIHdoZW4gdGhlIHBhdGggZG9lcyBub3Qgc2l0IGluc2lkZSB0aGUgb2xkIGZvbGRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYmFzZVBhdGhPbnRvRm9sZGVyKHBhcmFtczogUmViYXNlUGF0aE9udG9Gb2xkZXJQYXJhbXMpOiBudWxsIHwgc3RyaW5nIHtcbiAgY29uc3QgcHJlZml4ID0gYCR7cGFyYW1zLm9sZEZvbGRlclBhdGh9L2A7XG4gIHJldHVybiBwYXJhbXMucGF0aC5zdGFydHNXaXRoKHByZWZpeCkgPyBgJHtwYXJhbXMubmV3Rm9sZGVyUGF0aH0vJHtwYXJhbXMucGF0aC5zbGljZShwcmVmaXgubGVuZ3RoKX1gIDogbnVsbDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXNCQSxrQkFBd0I7QUFFeEIsNkJBQXVEO0FBZ0ZoRCxTQUFTLDZCQUE2QixRQUEyRDtBQUN0RyxRQUFNLHVCQUFtQixxQkFBUSxPQUFPLGNBQWM7QUFDdEQsTUFBSSxDQUFDLG9CQUFvQixxQkFBcUIsT0FBTyxxQkFBcUIsS0FBSztBQUM3RSxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sOEJBQThCLGlDQUFpQyxTQUNqRSxPQUFPLGtDQUNQLCtEQUF1QyxPQUFPLEdBQUc7QUFFckQsTUFBSSxDQUFDLDZCQUE2QjtBQUNoQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sV0FBVyxpQkFBaUIsTUFBTSxHQUFHLEVBQUUsT0FBTyxPQUFPO0FBQzNELFdBQVMsUUFBUSxHQUFHLFNBQVMsU0FBUyxRQUFRLFNBQVM7QUFDckQsVUFBTSxZQUFZLFNBQVMsTUFBTSxHQUFHLEtBQUssRUFBRSxLQUFLLEdBQUc7QUFDbkQsUUFBSSw0QkFBNEIsU0FBUyxHQUFHO0FBQzFDLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQVdPLFNBQVMscUJBQXFCLFFBQW1EO0FBQ3RGLFFBQU0sU0FBUyxHQUFHLE9BQU8sYUFBYTtBQUN0QyxTQUFPLE9BQU8sS0FBSyxXQUFXLE1BQU0sSUFBSSxHQUFHLE9BQU8sYUFBYSxJQUFJLE9BQU8sS0FBSyxNQUFNLE9BQU8sTUFBTSxDQUFDLEtBQUs7QUFDMUc7IiwKICAibmFtZXMiOiBbXQp9Cg==
168
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2F0dGFjaG1lbnQtdW5pdC1mb2xkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBSZXNvbHZlcyB3aGljaCBmb2xkZXIgYW4gYXR0YWNobWVudCBiZWxvbmdzIHRvIHdoZW4gdGhlIHVzZXIgaGFzIGRlc2lnbmF0ZWQgZm9sZGVycyB0aGF0IG11c3RcbiAqIHRyYXZlbCBhcyBhIHNpbmdsZSB1bml0LlxuICpcbiAqIFNvbWUgZm9ybWF0cyBhcmUgcmVhbGx5IGEgZGlyZWN0b3J5IHRyZWUgcmF0aGVyIHRoYW4gYSBmaWxlOiBhIHBhZ2Ugc2F2ZWQgZnJvbSBhIGJyb3dzZXIgc2l0cyBuZXh0XG4gKiB0byBhIGBfZmlsZXMvYCBmb2xkZXIgaG9sZGluZyBpdHMgaW1hZ2VzIGFuZCBzdHlsZXNoZWV0cywgYW4gYC5leGNhbGlkcmF3YCBzaXRzIG5leHQgdG8gdGhlIGltYWdlc1xuICogaXQgcmVmZXJlbmNlcy4gUmVsb2NhdGluZyBvbmx5IHRoZSBsaW5rZWQgZmlsZSBsZWF2ZXMgdGhlIHJlc3QgYmVoaW5kIGFuZCB0aGUgYXR0YWNobWVudCBhcnJpdmVzXG4gKiBicm9rZW4uXG4gKlxuICogVGhpcyBsaXZlcyBpbiB0aGUgc2hhcmVkIGxpYnJhcnkgcmF0aGVyIHRoYW4gaW4gb25lIHBsdWdpbiBiZWNhdXNlIG1vcmUgdGhhbiBvbmUgcGx1Z2luIHJlbG9jYXRlc1xuICogYXR0YWNobWVudHMgb3ZlciB0aGUgc2FtZSB2YXVsdC4gSWYgdGhleSBlYWNoIGRlY2lkZWQgc2VwYXJhdGVseSB3aGF0IG9uZSBhdHRhY2htZW50IGlzLCBhIHVzZXJcbiAqIHdpdGggYm90aCBpbnN0YWxsZWQgd291bGQgZ2V0IGEgZm9sZGVyIGtlcHQgd2hvbGUgYnkgb25lIGFuZCB0b3JuIGFwYXJ0IGJ5IHRoZSBvdGhlci5cbiAqXG4gKiBXaGljaCBpcyB3aHkgdGhlIGRlc2lnbmF0aW9uIGl0c2VsZiBpcyByZWFkIGZyb20gb25lIHNoYXJlZCBzb3VyY2UgcmF0aGVyIHRoYW4gc3VwcGxpZWQgcGVyIGNhbGxlcjogcGFzc1xuICogYW4ge0BsaW5rIEFwcH0gYW5kIHtAbGluayBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRofSB3YWxrcyB3aXRoIHdoYXRldmVyIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmBcbiAqIHB1Ymxpc2hlcyB0aHJvdWdoIGl0cyBwbHVnaW4gQVBJLCBzbyBldmVyeSBwbHVnaW4gZGVjaWRlcyBmcm9tIG9uZSBhbnN3ZXIuIFRoZSBleHBsaWNpdC1wcmVkaWNhdGUgZm9ybSByZW1haW5zIGZvciBhIGNhbGxlciB0aGF0IGdlbnVpbmVseSBvd25zIGl0cyBvd24gcGF0dGVybnMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGRpcm5hbWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5cbmltcG9ydCB7IGdldENoZWNrSXNBdHRhY2htZW50VW5pdEZvbGRlckZ1bmN0aW9uIH0gZnJvbSAnLi9hdHRhY2htZW50LXBhdGgudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRofSwgcmVhZGluZyB0aGUgZGVzaWduYXRpb24gYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYFxuICogcHVibGlzaGVzIHRocm91Z2ggaXRzIHBsdWdpbiBBUEkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aEZyb21BcHBQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50UGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRofS5cbiAqXG4gKiBQcmVmZXIge0BsaW5rIEZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGhGcm9tQXBwUGFyYW1zfSBcdTIwMTQgaXQgaXMgdGhlIGZvcm0gdGhhdCBtYWtlcyBldmVyeSBwbHVnaW5cbiAqIGRlY2lkZSBmcm9tIG9uZSBwdWJsaXNoZWQgYW5zd2VyLlxuICovXG5leHBvcnQgdHlwZSBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoUGFyYW1zID0gRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aEZyb21BcHBQYXJhbXMgfCBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoV2l0aFByZWRpY2F0ZVBhcmFtcztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aH0sIHdhbGtpbmcgd2l0aCBhIHByZWRpY2F0ZSB0aGUgY2FsbGVyIG93bnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aFdpdGhQcmVkaWNhdGVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50UGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgZm9sZGVyIHBhdGggaXMgZGVzaWduYXRlZCBhcyBhbiBhdHRhY2htZW50IHVuaXQuXG4gICAqXG4gICAqIEBwYXJhbSBmb2xkZXJQYXRoIC0gVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGZvbGRlci5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBmb2xkZXIgaXMgZGVzaWduYXRlZCBhcyBhbiBhdHRhY2htZW50IHVuaXQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyOiAoZm9sZGVyUGF0aDogc3RyaW5nKSA9PiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZWJhc2VQYXRoT250b0ZvbGRlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmViYXNlUGF0aE9udG9Gb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZvbGRlcidzIG5ldyBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV3Rm9sZGVyUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyJ3Mgb2xkIHBhdGguXG4gICAqL1xuICByZWFkb25seSBvbGRGb2xkZXJQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHJlYmFzZS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgZm9sZGVyIHRoYXQgYW4gYXR0YWNobWVudCBtdXN0IHRyYXZlbCB3aXRoLlxuICpcbiAqIFJldHVybnMgdGhlICoqb3V0ZXJtb3N0KiogZGVzaWduYXRlZCBhbmNlc3Rvciwgbm90IHRoZSBuZWFyZXN0IG9uZS4gV2l0aCBuZXN0ZWQgZGVzaWduYXRpb25zLFxuICogbW92aW5nIHRoZSBuZWFyZXN0IHdvdWxkIHRlYXIgdGhlIG91dGVyIHRyZWUgaW4gaGFsZiwgd2hpY2ggaXMgdGhlIGZhaWx1cmUgdGhlIHdob2xlIGZlYXR1cmUgZXhpc3RzXG4gKiB0byBwcmV2ZW50LlxuICpcbiAqIFRoZSB2YXVsdCByb290IGlzIG5ldmVyIGEgdW5pdCwgaG93ZXZlciB0aGUgcGF0dGVybnMgYXJlIHdyaXR0ZW46IGRlc2lnbmF0aW5nIGl0IHdvdWxkIG1ha2UgZXZlcnlcbiAqIHJlbG9jYXRpb24gYSBuby1vcCBhdCBiZXN0IGFuZCBhIHZhdWx0LXdpZGUgbW92ZSBhdCB3b3JzdC5cbiAqXG4gKiBQYXNzaW5nIGFuIHtAbGluayBBcHB9IHdhbGtzIHdpdGggdGhlIGRlc2lnbmF0aW9uIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAgcHVibGlzaGVzIHRocm91Z2ggaXRzIHBsdWdpblxuICogQVBJOyB3aGVuIG5vYm9keSBwdWJsaXNoZWQgb25lLCBub3RoaW5nIGlzIGRlc2lnbmF0ZWQgYW5kIHRoZSBhbnN3ZXIgaXMgYG51bGxgLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgZmluZGluZyB0aGUgYXR0YWNobWVudCB1bml0IGZvbGRlci5cbiAqIEByZXR1cm5zIFRoZSB1bml0IGZvbGRlcidzIHBhdGgsIG9yIGBudWxsYCB3aGVuIHRoZSBhdHRhY2htZW50IGJlbG9uZ3MgdG8gbm8gdW5pdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGgocGFyYW1zOiBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoUGFyYW1zKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IHBhcmVudEZvbGRlclBhdGggPSBkaXJuYW1lKHBhcmFtcy5hdHRhY2htZW50UGF0aCk7XG4gIGlmICghcGFyZW50Rm9sZGVyUGF0aCB8fCBwYXJlbnRGb2xkZXJQYXRoID09PSAnLicgfHwgcGFyZW50Rm9sZGVyUGF0aCA9PT0gJy8nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXIgPSAnY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyJyBpbiBwYXJhbXNcbiAgICA/IHBhcmFtcy5jaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXJcbiAgICA6IGdldENoZWNrSXNBdHRhY2htZW50VW5pdEZvbGRlckZ1bmN0aW9uKHBhcmFtcy5hcHApO1xuXG4gIGlmICghY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzZWdtZW50cyA9IHBhcmVudEZvbGRlclBhdGguc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbik7XG4gIGZvciAobGV0IGNvdW50ID0gMTsgY291bnQgPD0gc2VnbWVudHMubGVuZ3RoOyBjb3VudCsrKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gc2VnbWVudHMuc2xpY2UoMCwgY291bnQpLmpvaW4oJy8nKTtcbiAgICBpZiAoY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyKGNhbmRpZGF0ZSkpIHtcbiAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogUmViYXNlcyBhIHBhdGggZnJvbSBvbmUgZm9sZGVyIG9udG8gYW5vdGhlci5cbiAqXG4gKiBVc2VkIHRvIHdvcmsgb3V0IHdoZXJlIGEgbGlua2VkIGF0dGFjaG1lbnQgZW5kcyB1cCBvbmNlIGl0cyB3aG9sZSB1bml0IGZvbGRlciBoYXMgbW92ZWQsIHNvIHRoZVxuICogbGluayBjYW4gYmUgcG9pbnRlZCBhdCB0aGUgZmlsZSdzIG5ldyBob21lIHJhdGhlciB0aGFuIGF0IHdoZXJlIHRoZSBmb2xkZXIgdXNlZCB0byBiZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlYmFzaW5nIHRoZSBwYXRoLlxuICogQHJldHVybnMgVGhlIHJlYmFzZWQgcGF0aCwgb3IgYG51bGxgIHdoZW4gdGhlIHBhdGggZG9lcyBub3Qgc2l0IGluc2lkZSB0aGUgb2xkIGZvbGRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYmFzZVBhdGhPbnRvRm9sZGVyKHBhcmFtczogUmViYXNlUGF0aE9udG9Gb2xkZXJQYXJhbXMpOiBudWxsIHwgc3RyaW5nIHtcbiAgY29uc3QgcHJlZml4ID0gYCR7cGFyYW1zLm9sZEZvbGRlclBhdGh9L2A7XG4gIHJldHVybiBwYXJhbXMucGF0aC5zdGFydHNXaXRoKHByZWZpeCkgPyBgJHtwYXJhbXMubmV3Rm9sZGVyUGF0aH0vJHtwYXJhbXMucGF0aC5zbGljZShwcmVmaXgubGVuZ3RoKX1gIDogbnVsbDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXNCQSxrQkFBd0I7QUFFeEIsNkJBQXVEO0FBZ0ZoRCxTQUFTLDZCQUE2QixRQUEyRDtBQUN0RyxRQUFNLHVCQUFtQixxQkFBUSxPQUFPLGNBQWM7QUFDdEQsTUFBSSxDQUFDLG9CQUFvQixxQkFBcUIsT0FBTyxxQkFBcUIsS0FBSztBQUM3RSxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sOEJBQThCLGlDQUFpQyxTQUNqRSxPQUFPLGtDQUNQLCtEQUF1QyxPQUFPLEdBQUc7QUFFckQsTUFBSSxDQUFDLDZCQUE2QjtBQUNoQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sV0FBVyxpQkFBaUIsTUFBTSxHQUFHLEVBQUUsT0FBTyxPQUFPO0FBQzNELFdBQVMsUUFBUSxHQUFHLFNBQVMsU0FBUyxRQUFRLFNBQVM7QUFDckQsVUFBTSxZQUFZLFNBQVMsTUFBTSxHQUFHLEtBQUssRUFBRSxLQUFLLEdBQUc7QUFDbkQsUUFBSSw0QkFBNEIsU0FBUyxHQUFHO0FBQzFDLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQVdPLFNBQVMscUJBQXFCLFFBQW1EO0FBQ3RGLFFBQU0sU0FBUyxHQUFHLE9BQU8sYUFBYTtBQUN0QyxTQUFPLE9BQU8sS0FBSyxXQUFXLE1BQU0sSUFBSSxHQUFHLE9BQU8sYUFBYSxJQUFJLE9BQU8sS0FBSyxNQUFNLE9BQU8sTUFBTSxDQUFDLEtBQUs7QUFDMUc7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -15,12 +15,12 @@
15
15
  * with both installed would get a folder kept whole by one and torn apart by the other.
16
16
  *
17
17
  * Which is why the designation itself is read from one shared source rather than supplied per caller: pass
18
- * an {@link App} and {@link findAttachmentUnitFolderPath} walks with whatever Custom Attachment Location
18
+ * an {@link App} and {@link findAttachmentUnitFolderPath} walks with whatever `Custom Attachment Location`
19
19
  * publishes through its plugin API, so every plugin decides from one answer. The explicit-predicate form remains for a caller that genuinely owns its own patterns.
20
20
  */
21
21
  import type { App } from 'obsidian' with { 'resolution-mode': 'import' };
22
22
  /**
23
- * Parameters for {@link findAttachmentUnitFolderPath}, reading the designation Custom Attachment Location
23
+ * Parameters for {@link findAttachmentUnitFolderPath}, reading the designation `Custom Attachment Location`
24
24
  * publishes through its plugin API.
25
25
  */
26
26
  export interface FindAttachmentUnitFolderPathFromAppParams {
@@ -83,7 +83,7 @@ export interface RebasePathOntoFolderParams {
83
83
  * The vault root is never a unit, however the patterns are written: designating it would make every
84
84
  * relocation a no-op at best and a vault-wide move at worst.
85
85
  *
86
- * Passing an {@link App} walks with the designation Custom Attachment Location publishes through its plugin
86
+ * Passing an {@link App} walks with the designation `Custom Attachment Location` publishes through its plugin
87
87
  * API; when nobody published one, nothing is designated and the answer is `null`.
88
88
  *
89
89
  * @param params - The parameters for finding the attachment unit folder.