@sbb-esta/lyne-elements 1.10.0 → 1.11.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 (283) hide show
  1. package/autocomplete/autocomplete.d.ts.map +1 -1
  2. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  3. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +0 -3
  4. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -1
  5. package/autocomplete-grid/autocomplete-grid-button.js +32 -28
  6. package/autocomplete-grid/autocomplete-grid.js +16 -17
  7. package/autocomplete.js +23 -24
  8. package/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts +0 -1
  9. package/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts.map +1 -1
  10. package/breadcrumb/breadcrumb-group.js +25 -24
  11. package/button/button/button.d.ts +1 -1
  12. package/button/button-link/button-link.d.ts +1 -1
  13. package/button/button-link.js +14 -14
  14. package/button/button.js +9 -9
  15. package/button/mini-button/mini-button.d.ts +1 -1
  16. package/button/mini-button/mini-button.d.ts.map +1 -1
  17. package/button/mini-button.js +15 -17
  18. package/button/secondary-button/secondary-button.d.ts +1 -1
  19. package/button/secondary-button-link/secondary-button-link.d.ts +1 -1
  20. package/button/secondary-button-link.js +15 -15
  21. package/button/secondary-button.js +6 -6
  22. package/button/tertiary-button/tertiary-button.d.ts +1 -1
  23. package/button/tertiary-button-link/tertiary-button-link.d.ts +1 -1
  24. package/button/tertiary-button-link.js +12 -12
  25. package/button/tertiary-button.js +13 -13
  26. package/button/transparent-button/transparent-button.d.ts +1 -1
  27. package/button/transparent-button-link/transparent-button-link.d.ts +1 -1
  28. package/button/transparent-button-link.js +15 -15
  29. package/button/transparent-button.js +8 -8
  30. package/card/card-badge/card-badge.d.ts.map +1 -1
  31. package/card/card-badge.js +7 -9
  32. package/card/common/card-action-common.d.ts.map +1 -1
  33. package/card/common.js +24 -25
  34. package/container/sticky-bar/sticky-bar.d.ts +0 -1
  35. package/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  36. package/container/sticky-bar.js +20 -20
  37. package/core/a11y/arrow-navigation.d.ts.map +1 -1
  38. package/core/a11y.js +46 -47
  39. package/core/base-elements/action-base-element.d.ts +1 -0
  40. package/core/base-elements/action-base-element.d.ts.map +1 -1
  41. package/core/base-elements/link-base-element.d.ts.map +1 -1
  42. package/core/base-elements.js +52 -49
  43. package/core/controllers/language-controller.d.ts.map +1 -1
  44. package/core/controllers.js +22 -23
  45. package/core/dom/get-document-writing-mode.d.ts +3 -0
  46. package/core/dom/get-document-writing-mode.d.ts.map +1 -1
  47. package/core/mixins/disabled-mixin.d.ts +9 -4
  48. package/core/mixins/disabled-mixin.d.ts.map +1 -1
  49. package/core/mixins.js +68 -58
  50. package/core/observers/intersection-observer.d.ts +6 -0
  51. package/core/observers/intersection-observer.d.ts.map +1 -1
  52. package/core/observers/mutation-observer.d.ts +6 -0
  53. package/core/observers/mutation-observer.d.ts.map +1 -1
  54. package/core/observers/resize-observer.d.ts +6 -0
  55. package/core/observers/resize-observer.d.ts.map +1 -1
  56. package/core/styles/core.scss +23 -0
  57. package/core/styles/mixins/overlay.scss +2 -2
  58. package/core.css +23 -0
  59. package/custom-elements.json +1268 -159
  60. package/datepicker/datepicker/datepicker.d.ts +1 -1
  61. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  62. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +0 -2
  63. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  64. package/datepicker/datepicker-toggle.js +36 -45
  65. package/datepicker/datepicker.js +34 -35
  66. package/development/autocomplete/autocomplete.d.ts.map +1 -1
  67. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  68. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +0 -3
  69. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -1
  70. package/development/autocomplete-grid/autocomplete-grid-button.js +17 -15
  71. package/development/autocomplete-grid/autocomplete-grid.js +2 -3
  72. package/development/autocomplete.js +4 -5
  73. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts +0 -1
  74. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts.map +1 -1
  75. package/development/breadcrumb/breadcrumb-group.js +9 -8
  76. package/development/button/button/button.d.ts +1 -1
  77. package/development/button/button-link/button-link.d.ts +1 -1
  78. package/development/button/button-link.js +3 -3
  79. package/development/button/button.js +3 -3
  80. package/development/button/mini-button/mini-button.d.ts +1 -1
  81. package/development/button/mini-button/mini-button.d.ts.map +1 -1
  82. package/development/button/mini-button.js +3 -5
  83. package/development/button/secondary-button/secondary-button.d.ts +1 -1
  84. package/development/button/secondary-button-link/secondary-button-link.d.ts +1 -1
  85. package/development/button/secondary-button-link.js +3 -3
  86. package/development/button/secondary-button.js +3 -3
  87. package/development/button/tertiary-button/tertiary-button.d.ts +1 -1
  88. package/development/button/tertiary-button-link/tertiary-button-link.d.ts +1 -1
  89. package/development/button/tertiary-button-link.js +3 -3
  90. package/development/button/tertiary-button.js +3 -3
  91. package/development/button/transparent-button/transparent-button.d.ts +1 -1
  92. package/development/button/transparent-button-link/transparent-button-link.d.ts +1 -1
  93. package/development/button/transparent-button-link.js +3 -3
  94. package/development/button/transparent-button.js +3 -3
  95. package/development/card/card-badge/card-badge.d.ts.map +1 -1
  96. package/development/card/card-badge.js +3 -5
  97. package/development/card/common/card-action-common.d.ts.map +1 -1
  98. package/development/card/common.js +8 -10
  99. package/development/container/sticky-bar/sticky-bar.d.ts +0 -1
  100. package/development/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  101. package/development/container/sticky-bar.js +8 -9
  102. package/development/core/a11y/arrow-navigation.d.ts.map +1 -1
  103. package/development/core/a11y.js +2 -3
  104. package/development/core/base-elements/action-base-element.d.ts +1 -0
  105. package/development/core/base-elements/action-base-element.d.ts.map +1 -1
  106. package/development/core/base-elements/link-base-element.d.ts.map +1 -1
  107. package/development/core/base-elements.js +7 -4
  108. package/development/core/controllers/language-controller.d.ts.map +1 -1
  109. package/development/core/controllers.js +9 -4
  110. package/development/core/dom/get-document-writing-mode.d.ts +3 -0
  111. package/development/core/dom/get-document-writing-mode.d.ts.map +1 -1
  112. package/development/core/dom.js +1 -1
  113. package/development/core/mixins/disabled-mixin.d.ts +9 -4
  114. package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
  115. package/development/core/mixins.js +25 -9
  116. package/development/core/observers/intersection-observer.d.ts +6 -0
  117. package/development/core/observers/intersection-observer.d.ts.map +1 -1
  118. package/development/core/observers/mutation-observer.d.ts +6 -0
  119. package/development/core/observers/mutation-observer.d.ts.map +1 -1
  120. package/development/core/observers/resize-observer.d.ts +6 -0
  121. package/development/core/observers/resize-observer.d.ts.map +1 -1
  122. package/development/core/observers.js +1 -1
  123. package/development/datepicker/datepicker/datepicker.d.ts +1 -1
  124. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  125. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +0 -2
  126. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  127. package/development/datepicker/datepicker-toggle.js +2 -12
  128. package/development/datepicker/datepicker.js +6 -7
  129. package/development/dialog/dialog/dialog.d.ts +0 -1
  130. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  131. package/development/dialog/dialog.js +10 -10
  132. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +1 -1
  133. package/development/expansion-panel/expansion-panel-header.js +3 -3
  134. package/development/flip-card/flip-card-details/flip-card-details.d.ts +2 -5
  135. package/development/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  136. package/development/flip-card/flip-card-details.js +10 -22
  137. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  138. package/development/form-field/form-field.js +11 -12
  139. package/development/header/common.js +42 -21
  140. package/development/header/header/header.d.ts +2 -0
  141. package/development/header/header/header.d.ts.map +1 -1
  142. package/development/header/header.js +12 -1
  143. package/development/journey-header/journey-header.d.ts.map +1 -1
  144. package/development/journey-header.js +3 -4
  145. package/development/link/block-link-button/block-link-button.d.ts +1 -1
  146. package/development/link/block-link-button.js +3 -3
  147. package/development/link/link-button/link-button.d.ts +1 -1
  148. package/development/link/link-button.js +3 -3
  149. package/development/logo.js +2 -4
  150. package/development/map-container/map-container.d.ts +8 -5
  151. package/development/map-container/map-container.d.ts.map +1 -1
  152. package/development/map-container.js +31 -34
  153. package/development/menu/common/menu-action-common.d.ts +1 -2
  154. package/development/menu/common/menu-action-common.d.ts.map +1 -1
  155. package/development/menu/common.js +1 -1
  156. package/development/menu/menu/menu.d.ts.map +1 -1
  157. package/development/menu/menu-button/menu-button.d.ts +1 -1
  158. package/development/menu/menu-button.js +3 -3
  159. package/development/menu/menu-link/menu-link.d.ts +1 -1
  160. package/development/menu/menu-link/menu-link.d.ts.map +1 -1
  161. package/development/menu/menu-link.js +5 -2
  162. package/development/menu/menu.js +4 -2
  163. package/development/navigation/navigation/navigation.d.ts +1 -1
  164. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  165. package/development/navigation/navigation-marker/navigation-marker.d.ts +1 -2
  166. package/development/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  167. package/development/navigation/navigation-marker.js +8 -15
  168. package/development/navigation/navigation.js +13 -10
  169. package/development/notification/notification.d.ts +0 -1
  170. package/development/notification/notification.d.ts.map +1 -1
  171. package/development/notification.js +11 -13
  172. package/development/option/optgroup/optgroup-base-element.d.ts +0 -2
  173. package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  174. package/development/option/optgroup.js +9 -14
  175. package/development/option/option/option-base-element.d.ts +0 -3
  176. package/development/option/option/option-base-element.d.ts.map +1 -1
  177. package/development/option/option.js +6 -10
  178. package/development/popover/popover-trigger/popover-trigger.d.ts +1 -1
  179. package/development/popover/popover-trigger.js +3 -3
  180. package/development/select/select.d.ts.map +1 -1
  181. package/development/select.js +4 -5
  182. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  183. package/development/selection-expansion-panel.js +9 -8
  184. package/development/signet/signet.d.ts +4 -1
  185. package/development/signet/signet.d.ts.map +1 -1
  186. package/development/signet.js +37 -8
  187. package/development/slider/slider.d.ts.map +1 -1
  188. package/development/slider.js +12 -10
  189. package/development/stepper/step/step.d.ts +1 -2
  190. package/development/stepper/step/step.d.ts.map +1 -1
  191. package/development/stepper/step.js +9 -14
  192. package/development/table/table-wrapper/table-wrapper.d.ts +0 -1
  193. package/development/table/table-wrapper/table-wrapper.d.ts.map +1 -1
  194. package/development/table/table-wrapper.js +7 -7
  195. package/development/tabs/tab-group/tab-group.d.ts +0 -1
  196. package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
  197. package/development/tabs/tab-group.js +19 -18
  198. package/development/tag/tag/tag.d.ts +1 -1
  199. package/development/tag/tag.js +3 -3
  200. package/development/toggle/toggle/toggle.d.ts +0 -1
  201. package/development/toggle/toggle/toggle.d.ts.map +1 -1
  202. package/development/toggle/toggle.js +7 -7
  203. package/development/train/train-formation/train-formation.d.ts +1 -2
  204. package/development/train/train-formation/train-formation.d.ts.map +1 -1
  205. package/development/train/train-formation.js +10 -8
  206. package/dialog/dialog/dialog.d.ts +0 -1
  207. package/dialog/dialog/dialog.d.ts.map +1 -1
  208. package/dialog/dialog.js +16 -17
  209. package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +1 -1
  210. package/expansion-panel/expansion-panel-header.js +1 -1
  211. package/flip-card/flip-card-details/flip-card-details.d.ts +2 -5
  212. package/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  213. package/flip-card/flip-card-details.js +20 -28
  214. package/form-field/form-field/form-field.d.ts.map +1 -1
  215. package/form-field/form-field.js +26 -27
  216. package/header/common.js +3 -3
  217. package/header/header/header.d.ts +2 -0
  218. package/header/header/header.d.ts.map +1 -1
  219. package/header/header.js +21 -18
  220. package/journey-header/journey-header.d.ts.map +1 -1
  221. package/journey-header.js +14 -15
  222. package/link/block-link-button/block-link-button.d.ts +1 -1
  223. package/link/block-link-button.js +10 -10
  224. package/link/link-button/link-button.d.ts +1 -1
  225. package/link/link-button.js +4 -4
  226. package/logo.js +1 -1
  227. package/map-container/map-container.d.ts +8 -5
  228. package/map-container/map-container.d.ts.map +1 -1
  229. package/map-container.js +35 -37
  230. package/menu/common/menu-action-common.d.ts +1 -2
  231. package/menu/common/menu-action-common.d.ts.map +1 -1
  232. package/menu/menu/menu.d.ts.map +1 -1
  233. package/menu/menu-button/menu-button.d.ts +1 -1
  234. package/menu/menu-button.js +13 -13
  235. package/menu/menu-link/menu-link.d.ts +1 -1
  236. package/menu/menu-link/menu-link.d.ts.map +1 -1
  237. package/menu/menu-link.js +15 -12
  238. package/menu/menu.js +9 -7
  239. package/navigation/navigation/navigation.d.ts +1 -1
  240. package/navigation/navigation/navigation.d.ts.map +1 -1
  241. package/navigation/navigation-marker/navigation-marker.d.ts +1 -2
  242. package/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  243. package/navigation/navigation-marker.js +17 -22
  244. package/navigation/navigation.js +40 -34
  245. package/notification/notification.d.ts +0 -1
  246. package/notification/notification.d.ts.map +1 -1
  247. package/notification.js +17 -18
  248. package/option/optgroup/optgroup-base-element.d.ts +0 -2
  249. package/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  250. package/option/optgroup.js +31 -33
  251. package/option/option/option-base-element.d.ts +0 -3
  252. package/option/option/option-base-element.d.ts.map +1 -1
  253. package/option/option.js +16 -18
  254. package/package.json +2 -1
  255. package/popover/popover-trigger/popover-trigger.d.ts +1 -1
  256. package/popover/popover-trigger.js +1 -1
  257. package/select/select.d.ts.map +1 -1
  258. package/select.js +14 -15
  259. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  260. package/selection-expansion-panel.js +24 -23
  261. package/signet/signet.d.ts +4 -1
  262. package/signet/signet.d.ts.map +1 -1
  263. package/signet.js +34 -23
  264. package/slider/slider.d.ts.map +1 -1
  265. package/slider.js +5 -5
  266. package/standard-theme.css +23 -0
  267. package/stepper/step/step.d.ts +1 -2
  268. package/stepper/step/step.d.ts.map +1 -1
  269. package/stepper/step.js +19 -24
  270. package/table/table-wrapper/table-wrapper.d.ts +0 -1
  271. package/table/table-wrapper/table-wrapper.d.ts.map +1 -1
  272. package/table/table-wrapper.js +19 -18
  273. package/tabs/tab-group/tab-group.d.ts +0 -1
  274. package/tabs/tab-group/tab-group.d.ts.map +1 -1
  275. package/tabs/tab-group.js +37 -33
  276. package/tag/tag/tag.d.ts +1 -1
  277. package/tag/tag.js +19 -19
  278. package/toggle/toggle/toggle.d.ts +0 -1
  279. package/toggle/toggle/toggle.d.ts.map +1 -1
  280. package/toggle/toggle.js +32 -31
  281. package/train/train-formation/train-formation.d.ts +1 -2
  282. package/train/train-formation/train-formation.d.ts.map +1 -1
  283. package/train/train-formation.js +23 -22
@@ -1,6 +1,6 @@
1
1
  import { LitElement, html, isServer, nothing } from "lit";
2
2
  import { hostAttributes } from "./decorators.js";
3
- import { getDocumentWritingMode, getLocalName } from "./dom.js";
3
+ import { getLocalName } from "./dom.js";
4
4
  import { property } from "lit/decorators.js";
5
5
  import { isEventPrevented, EventEmitter } from "./eventing.js";
6
6
  import { SbbLanguageController } from "./controllers.js";
@@ -21,6 +21,9 @@ let SbbActionBaseElement = class extends LitElement {
21
21
  const maybeDisabled = this;
22
22
  return maybeDisabled.disabled || maybeDisabled.formDisabled;
23
23
  }
24
+ get maybeDisabledInteractive() {
25
+ return this.disabledInteractive;
26
+ }
24
27
  connectedCallback() {
25
28
  var _a;
26
29
  super.connectedCallback();
@@ -35,7 +38,7 @@ let SbbActionBaseElement = class extends LitElement {
35
38
  this.addEventListener(
36
39
  "click",
37
40
  (event) => {
38
- if (this.maybeDisabled) {
41
+ if (this.maybeDisabled && !this.maybeDisabledInteractive) {
39
42
  event.preventDefault();
40
43
  event.stopImmediatePropagation();
41
44
  }
@@ -60,7 +63,6 @@ let SbbActionBaseElement = class extends LitElement {
60
63
  };
61
64
  SbbActionBaseElement = __decorateClass$2([
62
65
  hostAttributes({
63
- dir: getDocumentWritingMode(),
64
66
  "data-action": ""
65
67
  })
66
68
  ], SbbActionBaseElement);
@@ -223,6 +225,7 @@ let SbbLinkBaseElement = class extends SbbActionBaseElement {
223
225
  target=${this.target || nothing}
224
226
  rel=${this._evaluateRelAttribute()}
225
227
  aria-label=${this.accessibilityLabel || nothing}
228
+ tabindex=${this.maybeDisabled && !this.maybeDisabledInteractive ? "-1" : nothing}
226
229
  aria-disabled=${this.maybeDisabled ? "true" : nothing}
227
230
  >
228
231
  ${this.renderTemplate()}
@@ -299,4 +302,4 @@ export {
299
302
  SbbLinkBaseElement,
300
303
  SbbOpenCloseBaseElement
301
304
  };
302
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lbGVtZW50cy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYmFzZS1lbGVtZW50cy9hY3Rpb24tYmFzZS1lbGVtZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYmFzZS1lbGVtZW50cy9idXR0b24tYmFzZS1lbGVtZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYmFzZS1lbGVtZW50cy9saW5rLWJhc2UtZWxlbWVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2Jhc2UtZWxlbWVudHMvb3Blbi1jbG9zZS1iYXNlLWVsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBnZXREb2N1bWVudFdyaXRpbmdNb2RlLCBnZXRMb2NhbE5hbWUgfSBmcm9tICcuLi9kb20uanMnO1xuXG4vKipcbiAqIFdoZW5ldmVyIGFuIGVsZW1lbnQgY2FuIGJlIGRpc2FibGVkIGl0IGhhcyBkaXNhYmxlZCBwcm9wZXJ0eVxuICogb3IgZm9ybURpc2FibGVkIGlmIGl0J3MgYSBmb3JtIGVsZW1lbnQuXG4gKiBCZWNhdXNlIHdlIGNhbid0IHVzZSB0eXBlcyBoZXJlIGRpcmVjdGx5IHdlIGNyZWF0ZWQgdGhpcyBoZWxwZXIgdHlwZS5cbiAqL1xudHlwZSBNYXliZURpc2FibGVkID0ge1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGZvcm1EaXNhYmxlZD86IGJvb2xlYW47XG59O1xuXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICBkaXI6IGdldERvY3VtZW50V3JpdGluZ01vZGUoKSxcbiAgJ2RhdGEtYWN0aW9uJzogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYkFjdGlvbkJhc2VFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHByb3RlY3RlZCBnZXQgbWF5YmVEaXNhYmxlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtYXliZURpc2FibGVkID0gdGhpcyBhcyBNYXliZURpc2FibGVkO1xuICAgIHJldHVybiBtYXliZURpc2FibGVkLmRpc2FibGVkIHx8IG1heWJlRGlzYWJsZWQuZm9ybURpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICBpZiAoXG4gICAgICBpbXBvcnQubWV0YS5lbnYuREVWICYmXG4gICAgICAodGhpcy5oYXNBdHRyaWJ1dGUoJ2RhdGEtbGluaycpIHx8IHRoaXMuaGFzQXR0cmlidXRlKCdkYXRhLWJ1dHRvbicpKSAmJlxuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50Py5jbG9zZXN0KCdbZGF0YS1saW5rXSwgW2RhdGEtYnV0dG9uXSwgYSwgYnV0dG9uJylcbiAgICApIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE5lc3RlZCBhY3Rpb24gZWxlbWVudCBkZXRlY3RlZCAoJHt0aGlzLmxvY2FsTmFtZX0gaW5zaWRlICR7dGhpcy5wYXJlbnRFbGVtZW50IS5jbG9zZXN0KCdbZGF0YS1saW5rXSwgW2RhdGEtYnV0dG9uXSwgYSwgYnV0dG9uJykhLmxvY2FsTmFtZX0pLiBNYXliZSB1c2UgYSBzdGF0aWMgdmFyaWFudCBmb3IgdGhlIGlubmVyIGFjdGlvbiBlbGVtZW50P2AsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cEJhc2VFdmVudEhhbmRsZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdjbGljaycsXG4gICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubWF5YmVEaXNhYmxlZCkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBjYXB0dXJlIGlzIG5lY2Vzc2FyeSBoZXJlLCBhcyB0aGlzIGV2ZW50IGhhbmRsZXIgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgYmVmb3JlIGFueSBvdGhlclxuICAgICAgLy8gaW4gb3JkZXIgdG8gc3RvcCBpbW1lZGlhdGUgcHJvcGFnYXRpb24gaW4gdGhlIGRpc2FibGVkIGNhc2UuXG4gICAgICB7IGNhcHR1cmU6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqIE92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIHJlbmRlciB0aGUgY29tcG9uZW50IHRlbXBsYXRlLiAqL1xuICBwcm90ZWN0ZWQgcmVuZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHRocm93IG5ldyBFcnJvcignSW1wbGVtZW50YXRpb24gbmVlZGVkIScpO1xuICB9XG5cbiAgLyoqIERlZmF1bHQgcmVuZGVyIG1ldGhvZCBmb3IgYnV0dG9uLWxpa2UgY29tcG9uZW50cy4gKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi1hY3Rpb24tYmFzZSAke3RoaXMubG9jYWxOYW1lID8/IGdldExvY2FsTmFtZSh0aGlzKX1cIj5cbiAgICAgICAgJHt0aGlzLnJlbmRlclRlbXBsYXRlKCl9XG4gICAgICA8L3NwYW4+XG4gICAgYDtcbiAgfVxufVxuIiwiaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpc0V2ZW50UHJldmVudGVkIH0gZnJvbSAnLi4vZXZlbnRpbmcuanMnO1xuXG5pbXBvcnQgeyBTYmJBY3Rpb25CYXNlRWxlbWVudCB9IGZyb20gJy4vYWN0aW9uLWJhc2UtZWxlbWVudC5qcyc7XG5cbi8qKiBFbnVtZXJhdGlvbiBmb3IgdHlwZSBhdHRyaWJ1dGUgaW4gPGJ1dHRvbj4gSFRNTCB0YWcuICovXG5leHBvcnQgdHlwZSBTYmJCdXR0b25UeXBlID0gJ2J1dHRvbicgfCAncmVzZXQnIHwgJ3N1Ym1pdCc7XG5cbi8qKiBCdXR0b24gYmFzZSBjbGFzcy4gKi9cbkBob3N0QXR0cmlidXRlcyh7XG4gIHJvbGU6ICdidXR0b24nLFxuICB0YWJpbmRleDogJzAnLFxuICAnZGF0YS1idXR0b24nOiAnJyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2JiQnV0dG9uQmFzZUVsZW1lbnQgZXh0ZW5kcyBTYmJBY3Rpb25CYXNlRWxlbWVudCB7XG4gIC8qKiBUaGUgdHlwZSBhdHRyaWJ1dGUgdG8gdXNlIGZvciB0aGUgYnV0dG9uLiAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgdHlwZTogU2JiQnV0dG9uVHlwZSA9ICdidXR0b24nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYnV0dG9uIGVsZW1lbnQuXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXZlbG9wZXIgbm90ZTogSW4gdGhpcyBjYXNlIHVwZGF0aW5nIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBzeW5jaHJvbm91cy5cbiAgICogRHVlIHRvIHRoaXMgaXQgaXMgaW1wbGVtZW50ZWQgYXMgYSBnZXR0ZXIvc2V0dGVyIGFuZCB0aGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKCkgaGFuZGxlcyB0aGUgZGlmZiBjaGVjay5cbiAgICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgbmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnbmFtZScsIGAke25hbWV9YCk7XG4gIH1cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlKCduYW1lJykgPz8gJyc7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBidXR0b24gZWxlbWVudC5cbiAgICpcbiAgICogQGRlc2NyaXB0aW9uIERldmVsb3BlciBub3RlOiBJbiB0aGlzIGNhc2UgdXBkYXRpbmcgdGhlIGF0dHJpYnV0ZSBtdXN0IGJlIHN5bmNocm9ub3VzLlxuICAgKiBEdWUgdG8gdGhpcyBpdCBpcyBpbXBsZW1lbnRlZCBhcyBhIGdldHRlci9zZXR0ZXIgYW5kIHRoZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soKSBoYW5kbGVzIHRoZSBkaWZmIGNoZWNrLlxuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgYCR7dmFsdWV9YCk7XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgndmFsdWUnKSA/PyAnJztcbiAgfVxuXG4gIC8qKiBUaGUgPGZvcm0+IGVsZW1lbnQgdG8gYXNzb2NpYXRlIHRoZSBidXR0b24gd2l0aC4gKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGZvcm0/OiBzdHJpbmc7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgdGhpcy5zZXR1cEJhc2VFdmVudEhhbmRsZXJzKCk7XG5cbiAgICAgIGNvbnN0IHBhc3NpdmVPcHRpb25zID0geyBwYXNzaXZlOiB0cnVlIH07XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5faGFuZGxlQnV0dG9uQ2xpY2spO1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fcHJldmVudFNjcm9sbE9uU3BhY2VLZXlkb3duKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLl9kaXNwYXRjaENsaWNrRXZlbnRPblNwYWNlS2V5dXAsIHBhc3NpdmVPcHRpb25zKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMuX3JlbW92ZUFjdGl2ZU1hcmtlciwgcGFzc2l2ZU9wdGlvbnMpO1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAna2V5cHJlc3MnLFxuICAgICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ2xpY2tFdmVudChldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwYXNzaXZlT3B0aW9ucyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQnV0dG9uQ2xpY2sgPSBhc3luYyAoZXZlbnQ6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAodGhpcy50eXBlID09PSAnYnV0dG9uJyB8fCAoYXdhaXQgaXNFdmVudFByZXZlbnRlZChldmVudCkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVXNlIHF1ZXJ5U2VsZWN0b3Igd2l0aCBmb3JtIGFuZCBpZCBzZWxlY3RvciwgYXMgdGhlIGZvcm0gcHJvcGVydHkgbXVzdFxuICAgIC8vIHJlZmVyZW5jZSBhIHZhbGlkIDxmb3JtPiBlbGVtZW50XG4gICAgY29uc3QgZm9ybSA9IHRoaXMuZm9ybVxuICAgICAgPyAodGhpcy5vd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGZvcm0jJHt0aGlzLmZvcm19YCkgYXMgSFRNTEZvcm1FbGVtZW50KVxuICAgICAgOiB0aGlzLmNsb3Nlc3QoJ2Zvcm0nKTtcbiAgICBpZiAoIWZvcm0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3N1Ym1pdCcpIHtcbiAgICAgIC8vIGBmb3JtLnJlcXVlc3RTdWJtaXQoZWxlbWVudCk7YCBzZWVtcyBub3QgdG8gd29yayBmb3IgQ3VzdG9tRWxlbWVudHMsIHNvIHRoZSBgZWxlbWVudGAgcGFyYW1ldGVyIGhhcyBiZWVuIHJlbW92ZWQ7XG4gICAgICAvLyBUT0RPOiBDaGVjayBpZiBzb2x2ZWQgaW4gYW55IHdheSwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNHL3dlYmNvbXBvbmVudHMvaXNzdWVzLzgxNCNpc3N1ZWNvbW1lbnQtMTIxODQ1MjEzN1xuICAgICAgZm9ybS5yZXF1ZXN0U3VibWl0KCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdyZXNldCcpIHtcbiAgICAgIGZvcm0ucmVzZXQoKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFByZXZlbnRzIHNjcm9sbGluZyBmcm9tIHByZXNzaW5nIFNwYWNlLCB3aGVuIHRoZSBldmVudCB0YXJnZXQgaXMgYW4gYWN0aW9uIGVsZW1lbnQuXG4gICAqIEFsc28gc2V0cyBkYXRhLWFjdGl2ZSBhdHRyaWJ1dGUuXG4gICAqIEBwYXJhbSBldmVudCBUaGUgb3JpZ2luIGV2ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfcHJldmVudFNjcm9sbE9uU3BhY2VLZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWFjdGl2ZScsIHRydWUpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9yZW1vdmVBY3RpdmVNYXJrZXIgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWFjdGl2ZScpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBEaXNwYXRjaGVzIGEgJ2NsaWNrJyBQb2ludGVyRXZlbnQgaWYgdGhlIG9yaWdpbmFsIGtleWJvYXJkIGV2ZW50IGlzIGEgJ1NwYWNlJyBwcmVzcy5cbiAgICogQXMgdmVyaWZpZWQgd2l0aCB0aGUgbmF0aXZlIGJ1dHRvbiwgd2hlbiAnU3BhY2UnIGlzIHByZXNzZWQsIGEgJ2NsaWNrJyBldmVudCBpcyBkaXNwYXRjaGVkXG4gICAqIGFmdGVyIHRoZSAna2V5dXAnIGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIG9yaWdpbiBldmVudC5cbiAgICovXG4gIHByaXZhdGUgX2Rpc3BhdGNoQ2xpY2tFdmVudE9uU3BhY2VLZXl1cCA9IChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgICAgdGhpcy5fcmVtb3ZlQWN0aXZlTWFya2VyKGV2ZW50KTtcbiAgICAgIHRoaXMuX2Rpc3BhdGNoQ2xpY2tFdmVudChldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX2Rpc3BhdGNoQ2xpY2tFdmVudCA9IChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHsgYWx0S2V5LCBjdHJsS2V5LCBtZXRhS2V5LCBzaGlmdEtleSB9ID0gZXZlbnQ7XG4gICAgKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IFBvaW50ZXJFdmVudCgnY2xpY2snLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgIGNvbXBvc2VkOiB0cnVlLFxuICAgICAgICBwb2ludGVySWQ6IC0xLFxuICAgICAgICBwb2ludGVyVHlwZTogJycsXG4gICAgICAgIGFsdEtleSxcbiAgICAgICAgY3RybEtleSxcbiAgICAgICAgbWV0YUtleSxcbiAgICAgICAgc2hpZnRLZXksXG4gICAgICB9KSxcbiAgICApO1xuICB9O1xuXG4gIHB1YmxpYyBvdmVycmlkZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIG9sZDogc3RyaW5nIHwgbnVsbCxcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbCxcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFbJ25hbWUnLCAndmFsdWUnXS5pbmNsdWRlcyhuYW1lKSB8fCBvbGQgIT09IHZhbHVlKSB7XG4gICAgICBzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkLCB2YWx1ZSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgbm90aGluZywgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGdldExvY2FsTmFtZSB9IGZyb20gJy4uL2RvbS5qcyc7XG5pbXBvcnQgeyBpMThuVGFyZ2V0T3BlbnNJbk5ld1dpbmRvdyB9IGZyb20gJy4uL2kxOG4uanMnO1xuXG5pbXBvcnQgeyBTYmJBY3Rpb25CYXNlRWxlbWVudCB9IGZyb20gJy4vYWN0aW9uLWJhc2UtZWxlbWVudC5qcyc7XG5cbmltcG9ydCAnLi4vLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuLyoqIEVudW1lcmF0aW9uIGZvciAndGFyZ2V0JyBhdHRyaWJ1dGUgaW4gPGE+IEhUTUwgdGFnLiAqL1xuZXhwb3J0IHR5cGUgTGlua1RhcmdldFR5cGUgPSAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc7XG5cbi8qKiBMaW5rIGJhc2UgY2xhc3MuICovXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICAnZGF0YS1saW5rJzogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYkxpbmtCYXNlRWxlbWVudCBleHRlbmRzIFNiYkFjdGlvbkJhc2VFbGVtZW50IHtcbiAgLyoqIFRoZSBocmVmIHZhbHVlIHlvdSB3YW50IHRvIGxpbmsgdG8uICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBocmVmPzogc3RyaW5nO1xuXG4gIC8qKiBXaGVyZSB0byBkaXNwbGF5IHRoZSBsaW5rZWQgVVJMLiAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgdGFyZ2V0PzogTGlua1RhcmdldFR5cGUgfCBzdHJpbmc7XG5cbiAgLyoqIFRoZSByZWxhdGlvbnNoaXAgb2YgdGhlIGxpbmtlZCBVUkwgYXMgc3BhY2Utc2VwYXJhdGVkIGxpbmsgdHlwZXMuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyByZWw/OiBzdHJpbmc7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGJyb3dzZXIgd2lsbCBzaG93IHRoZSBkb3dubG9hZCBkaWFsb2cgb24gY2xpY2suICovXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIGRvd25sb2FkPzogYm9vbGVhbjtcblxuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSBpbm5lciBhbmNob3IgZWxlbWVudC4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1sYWJlbCcgfSkgcHVibGljIGFjY2Vzc2liaWxpdHlMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBsYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgdGhpcy5zZXR1cEJhc2VFdmVudEhhbmRsZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZm9jdXMob3B0aW9ucz86IEZvY3VzT3B0aW9ucyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcjxIVE1MQW5jaG9yRWxlbWVudD4oJ2EnKT8uZm9jdXMob3B0aW9ucyk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBvdmVycmlkZSBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcjxIVE1MQW5jaG9yRWxlbWVudD4oJ2EnKT8uYmx1cigpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgY2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yPEhUTUxBbmNob3JFbGVtZW50PignYScpPy5jbGljaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZXZhbHVhdGVSZWxBdHRyaWJ1dGUgPSAoKTogc3RyaW5nIHwgdHlwZW9mIG5vdGhpbmcgPT4ge1xuICAgIHJldHVybiB0aGlzLnJlbCA/IHRoaXMucmVsIDogdGhpcy50YXJnZXQgPT09ICdfYmxhbmsnID8gJ2V4dGVybmFsIG5vb3BlbmVyIG5vZm9sbG93JyA6IG5vdGhpbmc7XG4gIH07XG5cbiAgLyoqIERlZmF1bHQgcmVuZGVyIG1ldGhvZCBmb3IgbGluay1saWtlIGNvbXBvbmVudHMuIENhbiBiZSBvdmVycmlkZGVuIGlmIHRoZSBMaW5rUmVuZGVyVmFyaWFibGVzIGFyZSBub3QgbmVlZGVkLiAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxhXG4gICAgICAgIGNsYXNzPVwic2JiLWFjdGlvbi1iYXNlICR7dGhpcy5sb2NhbE5hbWUgPz8gZ2V0TG9jYWxOYW1lKHRoaXMpfVwiXG4gICAgICAgIGhyZWY9JHt0aGlzLmhyZWYgfHwgbm90aGluZ31cbiAgICAgICAgP2Rvd25sb2FkPSR7dGhpcy5kb3dubG9hZH1cbiAgICAgICAgdGFyZ2V0PSR7dGhpcy50YXJnZXQgfHwgbm90aGluZ31cbiAgICAgICAgcmVsPSR7dGhpcy5fZXZhbHVhdGVSZWxBdHRyaWJ1dGUoKX1cbiAgICAgICAgYXJpYS1sYWJlbD0ke3RoaXMuYWNjZXNzaWJpbGl0eUxhYmVsIHx8IG5vdGhpbmd9XG4gICAgICAgIGFyaWEtZGlzYWJsZWQ9JHt0aGlzLm1heWJlRGlzYWJsZWQgPyAndHJ1ZScgOiBub3RoaW5nfVxuICAgICAgPlxuICAgICAgICAke3RoaXMucmVuZGVyVGVtcGxhdGUoKX1cbiAgICAgICAgJHshIXRoaXMuaHJlZiAmJiB0aGlzLnRhcmdldCA9PT0gJ19ibGFuaydcbiAgICAgICAgICA/IGh0bWxgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcbiAgICAgICAgICAgICAgPi4gJHtpMThuVGFyZ2V0T3BlbnNJbk5ld1dpbmRvd1t0aGlzLmxhbmd1YWdlLmN1cnJlbnRdfTwvc2JiLXNjcmVlbi1yZWFkZXItb25seVxuICAgICAgICAgICAgPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICA8L2E+XG4gICAgYDtcbiAgfVxufVxuIiwiaW1wb3J0IHsgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJy4uL2V2ZW50aW5nLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiT3BlbmVkQ2xvc2VkU3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzLmpzJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBvdmVybGF5IGNvbXBvbmVudHMuXG4gKlxuICogQGV2ZW50IHdpbGxPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBzdGFydHMgdGhlIG9wZW5pbmcgdHJhbnNpdGlvbi4gQ2FuIGJlIGNhbmNlbGVkLlxuICogQGV2ZW50IGRpZE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGlzIG9wZW5lZC5cbiAqIEBldmVudCB3aWxsQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGJlZ2lucyB0aGUgY2xvc2luZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQgZGlkQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGlzIGNsb3NlZC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIHdpbGxPcGVuOiAnd2lsbE9wZW4nLFxuICAgIGRpZE9wZW46ICdkaWRPcGVuJyxcbiAgICB3aWxsQ2xvc2U6ICd3aWxsQ2xvc2UnLFxuICAgIGRpZENsb3NlOiAnZGlkQ2xvc2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKiBUaGUgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgcHJvdGVjdGVkIHNldCBzdGF0ZShzdGF0ZTogU2JiT3BlbmVkQ2xvc2VkU3RhdGUpIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScsIHN0YXRlKTtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0IHN0YXRlKCk6IFNiYk9wZW5lZENsb3NlZFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnKSBhcyBTYmJPcGVuZWRDbG9zZWRTdGF0ZTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBlbGVtZW50IGlzIG9wZW4uICovXG4gIHB1YmxpYyBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlID09PSAnb3BlbmVkJztcbiAgfVxuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiAqL1xuICBwcm90ZWN0ZWQgd2lsbE9wZW46IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudC5ldmVudHMud2lsbE9wZW4sXG4gICk7XG5cbiAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgaXMgb3BlbmVkLiAqL1xuICBwcm90ZWN0ZWQgZGlkT3BlbjogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcih0aGlzLCBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudC5ldmVudHMuZGlkT3Blbik7XG5cbiAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uICovXG4gIHByb3RlY3RlZCB3aWxsQ2xvc2U6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudC5ldmVudHMud2lsbENsb3NlLFxuICApO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGlzIGNsb3NlZC4gKi9cbiAgcHJvdGVjdGVkIGRpZENsb3NlOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQuZXZlbnRzLmRpZENsb3NlLFxuICApO1xuXG4gIC8qKiBPcGVucyB0aGUgY29tcG9uZW50LiAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgb3BlbigpOiB2b2lkO1xuICAvKiogQ2xvc2VzIHRoZSBjb21wb25lbnQuICovXG4gIHB1YmxpYyBhYnN0cmFjdCBjbG9zZSgpOiB2b2lkO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuc3RhdGUgfHw9ICdjbG9zZWQnO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEdsb2JhbEV2ZW50SGFuZGxlcnNFdmVudE1hcCB7XG4gICAgd2lsbE9wZW46IEN1c3RvbUV2ZW50PHZvaWQ+O1xuICAgIHdpbGxDbG9zZTogQ3VzdG9tRXZlbnQ8dm9pZD47XG4gICAgZGlkT3BlbjogQ3VzdG9tRXZlbnQ8dm9pZD47XG4gICAgZGlkQ2xvc2U6IEN1c3RvbUV2ZW50PHZvaWQ+O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX19kZWNvcmF0ZUNsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQnNCLElBQUEsdUJBQWYsY0FBNEMsV0FBVztBQUFBLEVBQzVELElBQWMsZ0JBQXFDO0FBQ2pELFVBQU0sZ0JBQWdCO0FBQ2YsV0FBQSxjQUFjLFlBQVksY0FBYztBQUFBLEVBQ2pEO0FBQUEsRUFFZ0Isb0JBQTBCOztBQUN4QyxVQUFNLGtCQUFrQjtBQUV4QixTQUVHLEtBQUssYUFBYSxXQUFXLEtBQUssS0FBSyxhQUFhLGFBQWEsUUFDbEUsVUFBSyxrQkFBTCxtQkFBb0IsUUFBUSwyQ0FDNUI7QUFDUSxjQUFBO0FBQUEsUUFDTixtQ0FBbUMsS0FBSyxTQUFTLFdBQVcsS0FBSyxjQUFlLFFBQVEsdUNBQXVDLEVBQUcsU0FBUztBQUFBLFFBQzNJO0FBQUEsTUFBQTtBQUFBLElBRUo7QUFBQSxFQUNGO0FBQUEsRUFFVSx5QkFBK0I7QUFDbEMsU0FBQTtBQUFBLE1BQ0g7QUFBQSxNQUNBLENBQUMsVUFBVTtBQUNULFlBQUksS0FBSyxlQUFlO0FBQ3RCLGdCQUFNLGVBQWU7QUFDckIsZ0JBQU0seUJBQXlCO0FBQUEsUUFDakM7QUFBQSxNQUNGO0FBQUE7QUFBQTtBQUFBLE1BR0EsRUFBRSxTQUFTLEtBQUs7QUFBQSxJQUFBO0FBQUEsRUFFcEI7QUFBQTtBQUFBLEVBR1UsaUJBQWlDO0FBQ25DLFVBQUEsSUFBSSxNQUFNLHdCQUF3QjtBQUFBLEVBQzFDO0FBQUE7QUFBQSxFQUdtQixT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
305
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lbGVtZW50cy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYmFzZS1lbGVtZW50cy9hY3Rpb24tYmFzZS1lbGVtZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYmFzZS1lbGVtZW50cy9idXR0b24tYmFzZS1lbGVtZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYmFzZS1lbGVtZW50cy9saW5rLWJhc2UtZWxlbWVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2Jhc2UtZWxlbWVudHMvb3Blbi1jbG9zZS1iYXNlLWVsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBnZXRMb2NhbE5hbWUgfSBmcm9tICcuLi9kb20uanMnO1xuXG4vKipcbiAqIFdoZW5ldmVyIGFuIGVsZW1lbnQgY2FuIGJlIGRpc2FibGVkIGl0IGhhcyBkaXNhYmxlZCBwcm9wZXJ0eVxuICogb3IgZm9ybURpc2FibGVkIGlmIGl0J3MgYSBmb3JtIGVsZW1lbnQuXG4gKiBCZWNhdXNlIHdlIGNhbid0IHVzZSB0eXBlcyBoZXJlIGRpcmVjdGx5IHdlIGNyZWF0ZWQgdGhpcyBoZWxwZXIgdHlwZS5cbiAqL1xudHlwZSBNYXliZURpc2FibGVkID0ge1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGZvcm1EaXNhYmxlZD86IGJvb2xlYW47XG4gIGRpc2FibGVkSW50ZXJhY3RpdmU/OiBib29sZWFuO1xufTtcblxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgJ2RhdGEtYWN0aW9uJzogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYkFjdGlvbkJhc2VFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHByb3RlY3RlZCBnZXQgbWF5YmVEaXNhYmxlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtYXliZURpc2FibGVkID0gdGhpcyBhcyBNYXliZURpc2FibGVkO1xuICAgIHJldHVybiBtYXliZURpc2FibGVkLmRpc2FibGVkIHx8IG1heWJlRGlzYWJsZWQuZm9ybURpc2FibGVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBtYXliZURpc2FibGVkSW50ZXJhY3RpdmUoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuICh0aGlzIGFzIE1heWJlRGlzYWJsZWQpLmRpc2FibGVkSW50ZXJhY3RpdmU7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgIGlmIChcbiAgICAgIGltcG9ydC5tZXRhLmVudi5ERVYgJiZcbiAgICAgICh0aGlzLmhhc0F0dHJpYnV0ZSgnZGF0YS1saW5rJykgfHwgdGhpcy5oYXNBdHRyaWJ1dGUoJ2RhdGEtYnV0dG9uJykpICYmXG4gICAgICB0aGlzLnBhcmVudEVsZW1lbnQ/LmNsb3Nlc3QoJ1tkYXRhLWxpbmtdLCBbZGF0YS1idXR0b25dLCBhLCBidXR0b24nKVxuICAgICkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgTmVzdGVkIGFjdGlvbiBlbGVtZW50IGRldGVjdGVkICgke3RoaXMubG9jYWxOYW1lfSBpbnNpZGUgJHt0aGlzLnBhcmVudEVsZW1lbnQhLmNsb3Nlc3QoJ1tkYXRhLWxpbmtdLCBbZGF0YS1idXR0b25dLCBhLCBidXR0b24nKSEubG9jYWxOYW1lfSkuIE1heWJlIHVzZSBhIHN0YXRpYyB2YXJpYW50IGZvciB0aGUgaW5uZXIgYWN0aW9uIGVsZW1lbnQ/YCxcbiAgICAgICAgdGhpcyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwQmFzZUV2ZW50SGFuZGxlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2NsaWNrJyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tYXliZURpc2FibGVkICYmICF0aGlzLm1heWJlRGlzYWJsZWRJbnRlcmFjdGl2ZSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBjYXB0dXJlIGlzIG5lY2Vzc2FyeSBoZXJlLCBhcyB0aGlzIGV2ZW50IGhhbmRsZXIgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgYmVmb3JlIGFueSBvdGhlclxuICAgICAgLy8gaW4gb3JkZXIgdG8gc3RvcCBpbW1lZGlhdGUgcHJvcGFnYXRpb24gaW4gdGhlIGRpc2FibGVkIGNhc2UuXG4gICAgICB7IGNhcHR1cmU6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqIE92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIHJlbmRlciB0aGUgY29tcG9uZW50IHRlbXBsYXRlLiAqL1xuICBwcm90ZWN0ZWQgcmVuZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHRocm93IG5ldyBFcnJvcignSW1wbGVtZW50YXRpb24gbmVlZGVkIScpO1xuICB9XG5cbiAgLyoqIERlZmF1bHQgcmVuZGVyIG1ldGhvZCBmb3IgYnV0dG9uLWxpa2UgY29tcG9uZW50cy4gKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi1hY3Rpb24tYmFzZSAke3RoaXMubG9jYWxOYW1lID8/IGdldExvY2FsTmFtZSh0aGlzKX1cIj5cbiAgICAgICAgJHt0aGlzLnJlbmRlclRlbXBsYXRlKCl9XG4gICAgICA8L3NwYW4+XG4gICAgYDtcbiAgfVxufVxuIiwiaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpc0V2ZW50UHJldmVudGVkIH0gZnJvbSAnLi4vZXZlbnRpbmcuanMnO1xuXG5pbXBvcnQgeyBTYmJBY3Rpb25CYXNlRWxlbWVudCB9IGZyb20gJy4vYWN0aW9uLWJhc2UtZWxlbWVudC5qcyc7XG5cbi8qKiBFbnVtZXJhdGlvbiBmb3IgdHlwZSBhdHRyaWJ1dGUgaW4gPGJ1dHRvbj4gSFRNTCB0YWcuICovXG5leHBvcnQgdHlwZSBTYmJCdXR0b25UeXBlID0gJ2J1dHRvbicgfCAncmVzZXQnIHwgJ3N1Ym1pdCc7XG5cbi8qKiBCdXR0b24gYmFzZSBjbGFzcy4gKi9cbkBob3N0QXR0cmlidXRlcyh7XG4gIHJvbGU6ICdidXR0b24nLFxuICB0YWJpbmRleDogJzAnLFxuICAnZGF0YS1idXR0b24nOiAnJyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2JiQnV0dG9uQmFzZUVsZW1lbnQgZXh0ZW5kcyBTYmJBY3Rpb25CYXNlRWxlbWVudCB7XG4gIC8qKiBUaGUgdHlwZSBhdHRyaWJ1dGUgdG8gdXNlIGZvciB0aGUgYnV0dG9uLiAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgdHlwZTogU2JiQnV0dG9uVHlwZSA9ICdidXR0b24nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYnV0dG9uIGVsZW1lbnQuXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXZlbG9wZXIgbm90ZTogSW4gdGhpcyBjYXNlIHVwZGF0aW5nIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBzeW5jaHJvbm91cy5cbiAgICogRHVlIHRvIHRoaXMgaXQgaXMgaW1wbGVtZW50ZWQgYXMgYSBnZXR0ZXIvc2V0dGVyIGFuZCB0aGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKCkgaGFuZGxlcyB0aGUgZGlmZiBjaGVjay5cbiAgICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgbmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnbmFtZScsIGAke25hbWV9YCk7XG4gIH1cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlKCduYW1lJykgPz8gJyc7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBidXR0b24gZWxlbWVudC5cbiAgICpcbiAgICogQGRlc2NyaXB0aW9uIERldmVsb3BlciBub3RlOiBJbiB0aGlzIGNhc2UgdXBkYXRpbmcgdGhlIGF0dHJpYnV0ZSBtdXN0IGJlIHN5bmNocm9ub3VzLlxuICAgKiBEdWUgdG8gdGhpcyBpdCBpcyBpbXBsZW1lbnRlZCBhcyBhIGdldHRlci9zZXR0ZXIgYW5kIHRoZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soKSBoYW5kbGVzIHRoZSBkaWZmIGNoZWNrLlxuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgYCR7dmFsdWV9YCk7XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgndmFsdWUnKSA/PyAnJztcbiAgfVxuXG4gIC8qKiBUaGUgPGZvcm0+IGVsZW1lbnQgdG8gYXNzb2NpYXRlIHRoZSBidXR0b24gd2l0aC4gKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGZvcm0/OiBzdHJpbmc7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgdGhpcy5zZXR1cEJhc2VFdmVudEhhbmRsZXJzKCk7XG5cbiAgICAgIGNvbnN0IHBhc3NpdmVPcHRpb25zID0geyBwYXNzaXZlOiB0cnVlIH07XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5faGFuZGxlQnV0dG9uQ2xpY2spO1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fcHJldmVudFNjcm9sbE9uU3BhY2VLZXlkb3duKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLl9kaXNwYXRjaENsaWNrRXZlbnRPblNwYWNlS2V5dXAsIHBhc3NpdmVPcHRpb25zKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMuX3JlbW92ZUFjdGl2ZU1hcmtlciwgcGFzc2l2ZU9wdGlvbnMpO1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAna2V5cHJlc3MnLFxuICAgICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ2xpY2tFdmVudChldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwYXNzaXZlT3B0aW9ucyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQnV0dG9uQ2xpY2sgPSBhc3luYyAoZXZlbnQ6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAodGhpcy50eXBlID09PSAnYnV0dG9uJyB8fCAoYXdhaXQgaXNFdmVudFByZXZlbnRlZChldmVudCkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVXNlIHF1ZXJ5U2VsZWN0b3Igd2l0aCBmb3JtIGFuZCBpZCBzZWxlY3RvciwgYXMgdGhlIGZvcm0gcHJvcGVydHkgbXVzdFxuICAgIC8vIHJlZmVyZW5jZSBhIHZhbGlkIDxmb3JtPiBlbGVtZW50XG4gICAgY29uc3QgZm9ybSA9IHRoaXMuZm9ybVxuICAgICAgPyAodGhpcy5vd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGZvcm0jJHt0aGlzLmZvcm19YCkgYXMgSFRNTEZvcm1FbGVtZW50KVxuICAgICAgOiB0aGlzLmNsb3Nlc3QoJ2Zvcm0nKTtcbiAgICBpZiAoIWZvcm0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3N1Ym1pdCcpIHtcbiAgICAgIC8vIGBmb3JtLnJlcXVlc3RTdWJtaXQoZWxlbWVudCk7YCBzZWVtcyBub3QgdG8gd29yayBmb3IgQ3VzdG9tRWxlbWVudHMsIHNvIHRoZSBgZWxlbWVudGAgcGFyYW1ldGVyIGhhcyBiZWVuIHJlbW92ZWQ7XG4gICAgICAvLyBUT0RPOiBDaGVjayBpZiBzb2x2ZWQgaW4gYW55IHdheSwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNHL3dlYmNvbXBvbmVudHMvaXNzdWVzLzgxNCNpc3N1ZWNvbW1lbnQtMTIxODQ1MjEzN1xuICAgICAgZm9ybS5yZXF1ZXN0U3VibWl0KCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdyZXNldCcpIHtcbiAgICAgIGZvcm0ucmVzZXQoKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFByZXZlbnRzIHNjcm9sbGluZyBmcm9tIHByZXNzaW5nIFNwYWNlLCB3aGVuIHRoZSBldmVudCB0YXJnZXQgaXMgYW4gYWN0aW9uIGVsZW1lbnQuXG4gICAqIEFsc28gc2V0cyBkYXRhLWFjdGl2ZSBhdHRyaWJ1dGUuXG4gICAqIEBwYXJhbSBldmVudCBUaGUgb3JpZ2luIGV2ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfcHJldmVudFNjcm9sbE9uU3BhY2VLZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWFjdGl2ZScsIHRydWUpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9yZW1vdmVBY3RpdmVNYXJrZXIgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWFjdGl2ZScpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBEaXNwYXRjaGVzIGEgJ2NsaWNrJyBQb2ludGVyRXZlbnQgaWYgdGhlIG9yaWdpbmFsIGtleWJvYXJkIGV2ZW50IGlzIGEgJ1NwYWNlJyBwcmVzcy5cbiAgICogQXMgdmVyaWZpZWQgd2l0aCB0aGUgbmF0aXZlIGJ1dHRvbiwgd2hlbiAnU3BhY2UnIGlzIHByZXNzZWQsIGEgJ2NsaWNrJyBldmVudCBpcyBkaXNwYXRjaGVkXG4gICAqIGFmdGVyIHRoZSAna2V5dXAnIGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIG9yaWdpbiBldmVudC5cbiAgICovXG4gIHByaXZhdGUgX2Rpc3BhdGNoQ2xpY2tFdmVudE9uU3BhY2VLZXl1cCA9IChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgICAgdGhpcy5fcmVtb3ZlQWN0aXZlTWFya2VyKGV2ZW50KTtcbiAgICAgIHRoaXMuX2Rpc3BhdGNoQ2xpY2tFdmVudChldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX2Rpc3BhdGNoQ2xpY2tFdmVudCA9IChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHsgYWx0S2V5LCBjdHJsS2V5LCBtZXRhS2V5LCBzaGlmdEtleSB9ID0gZXZlbnQ7XG4gICAgKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IFBvaW50ZXJFdmVudCgnY2xpY2snLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgIGNvbXBvc2VkOiB0cnVlLFxuICAgICAgICBwb2ludGVySWQ6IC0xLFxuICAgICAgICBwb2ludGVyVHlwZTogJycsXG4gICAgICAgIGFsdEtleSxcbiAgICAgICAgY3RybEtleSxcbiAgICAgICAgbWV0YUtleSxcbiAgICAgICAgc2hpZnRLZXksXG4gICAgICB9KSxcbiAgICApO1xuICB9O1xuXG4gIHB1YmxpYyBvdmVycmlkZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIG9sZDogc3RyaW5nIHwgbnVsbCxcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbCxcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFbJ25hbWUnLCAndmFsdWUnXS5pbmNsdWRlcyhuYW1lKSB8fCBvbGQgIT09IHZhbHVlKSB7XG4gICAgICBzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkLCB2YWx1ZSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgbm90aGluZywgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGdldExvY2FsTmFtZSB9IGZyb20gJy4uL2RvbS5qcyc7XG5pbXBvcnQgeyBpMThuVGFyZ2V0T3BlbnNJbk5ld1dpbmRvdyB9IGZyb20gJy4uL2kxOG4uanMnO1xuXG5pbXBvcnQgeyBTYmJBY3Rpb25CYXNlRWxlbWVudCB9IGZyb20gJy4vYWN0aW9uLWJhc2UtZWxlbWVudC5qcyc7XG5cbmltcG9ydCAnLi4vLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuLyoqIEVudW1lcmF0aW9uIGZvciAndGFyZ2V0JyBhdHRyaWJ1dGUgaW4gPGE+IEhUTUwgdGFnLiAqL1xuZXhwb3J0IHR5cGUgTGlua1RhcmdldFR5cGUgPSAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc7XG5cbi8qKiBMaW5rIGJhc2UgY2xhc3MuICovXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICAnZGF0YS1saW5rJzogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYkxpbmtCYXNlRWxlbWVudCBleHRlbmRzIFNiYkFjdGlvbkJhc2VFbGVtZW50IHtcbiAgLyoqIFRoZSBocmVmIHZhbHVlIHlvdSB3YW50IHRvIGxpbmsgdG8uICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBocmVmPzogc3RyaW5nO1xuXG4gIC8qKiBXaGVyZSB0byBkaXNwbGF5IHRoZSBsaW5rZWQgVVJMLiAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgdGFyZ2V0PzogTGlua1RhcmdldFR5cGUgfCBzdHJpbmc7XG5cbiAgLyoqIFRoZSByZWxhdGlvbnNoaXAgb2YgdGhlIGxpbmtlZCBVUkwgYXMgc3BhY2Utc2VwYXJhdGVkIGxpbmsgdHlwZXMuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyByZWw/OiBzdHJpbmc7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGJyb3dzZXIgd2lsbCBzaG93IHRoZSBkb3dubG9hZCBkaWFsb2cgb24gY2xpY2suICovXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIGRvd25sb2FkPzogYm9vbGVhbjtcblxuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSBpbm5lciBhbmNob3IgZWxlbWVudC4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1sYWJlbCcgfSkgcHVibGljIGFjY2Vzc2liaWxpdHlMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBsYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgdGhpcy5zZXR1cEJhc2VFdmVudEhhbmRsZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZm9jdXMob3B0aW9ucz86IEZvY3VzT3B0aW9ucyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcjxIVE1MQW5jaG9yRWxlbWVudD4oJ2EnKT8uZm9jdXMob3B0aW9ucyk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBvdmVycmlkZSBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcjxIVE1MQW5jaG9yRWxlbWVudD4oJ2EnKT8uYmx1cigpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgY2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yPEhUTUxBbmNob3JFbGVtZW50PignYScpPy5jbGljaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZXZhbHVhdGVSZWxBdHRyaWJ1dGUgPSAoKTogc3RyaW5nIHwgdHlwZW9mIG5vdGhpbmcgPT4ge1xuICAgIHJldHVybiB0aGlzLnJlbCA/IHRoaXMucmVsIDogdGhpcy50YXJnZXQgPT09ICdfYmxhbmsnID8gJ2V4dGVybmFsIG5vb3BlbmVyIG5vZm9sbG93JyA6IG5vdGhpbmc7XG4gIH07XG5cbiAgLyoqIERlZmF1bHQgcmVuZGVyIG1ldGhvZCBmb3IgbGluay1saWtlIGNvbXBvbmVudHMuIENhbiBiZSBvdmVycmlkZGVuIGlmIHRoZSBMaW5rUmVuZGVyVmFyaWFibGVzIGFyZSBub3QgbmVlZGVkLiAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxhXG4gICAgICAgIGNsYXNzPVwic2JiLWFjdGlvbi1iYXNlICR7dGhpcy5sb2NhbE5hbWUgPz8gZ2V0TG9jYWxOYW1lKHRoaXMpfVwiXG4gICAgICAgIGhyZWY9JHt0aGlzLmhyZWYgfHwgbm90aGluZ31cbiAgICAgICAgP2Rvd25sb2FkPSR7dGhpcy5kb3dubG9hZH1cbiAgICAgICAgdGFyZ2V0PSR7dGhpcy50YXJnZXQgfHwgbm90aGluZ31cbiAgICAgICAgcmVsPSR7dGhpcy5fZXZhbHVhdGVSZWxBdHRyaWJ1dGUoKX1cbiAgICAgICAgYXJpYS1sYWJlbD0ke3RoaXMuYWNjZXNzaWJpbGl0eUxhYmVsIHx8IG5vdGhpbmd9XG4gICAgICAgIHRhYmluZGV4PSR7dGhpcy5tYXliZURpc2FibGVkICYmICF0aGlzLm1heWJlRGlzYWJsZWRJbnRlcmFjdGl2ZSA/ICctMScgOiBub3RoaW5nfVxuICAgICAgICBhcmlhLWRpc2FibGVkPSR7dGhpcy5tYXliZURpc2FibGVkID8gJ3RydWUnIDogbm90aGluZ31cbiAgICAgID5cbiAgICAgICAgJHt0aGlzLnJlbmRlclRlbXBsYXRlKCl9XG4gICAgICAgICR7ISF0aGlzLmhyZWYgJiYgdGhpcy50YXJnZXQgPT09ICdfYmxhbmsnXG4gICAgICAgICAgPyBodG1sYDxzYmItc2NyZWVuLXJlYWRlci1vbmx5XG4gICAgICAgICAgICAgID4uICR7aTE4blRhcmdldE9wZW5zSW5OZXdXaW5kb3dbdGhpcy5sYW5ndWFnZS5jdXJyZW50XX08L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHlcbiAgICAgICAgICAgID5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgPC9hPlxuICAgIGA7XG4gIH1cbn1cbiIsImltcG9ydCB7IExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi9ldmVudGluZy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wZW5lZENsb3NlZFN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy5qcyc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3Igb3ZlcmxheSBjb21wb25lbnRzLlxuICpcbiAqIEBldmVudCB3aWxsT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgc3RhcnRzIHRoZSBvcGVuaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCBkaWRPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBpcyBvcGVuZWQuXG4gKiBAZXZlbnQgd2lsbENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBiZWdpbnMgdGhlIGNsb3NpbmcgdHJhbnNpdGlvbi4gQ2FuIGJlIGNhbmNlbGVkLlxuICogQGV2ZW50IGRpZENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBpcyBjbG9zZWQuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICB3aWxsT3BlbjogJ3dpbGxPcGVuJyxcbiAgICBkaWRPcGVuOiAnZGlkT3BlbicsXG4gICAgd2lsbENsb3NlOiAnd2lsbENsb3NlJyxcbiAgICBkaWRDbG9zZTogJ2RpZENsb3NlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogVGhlIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuICovXG4gIHByb3RlY3RlZCBzZXQgc3RhdGUoc3RhdGU6IFNiYk9wZW5lZENsb3NlZFN0YXRlKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnLCBzdGF0ZSk7XG4gIH1cbiAgcHJvdGVjdGVkIGdldCBzdGF0ZSgpOiBTYmJPcGVuZWRDbG9zZWRTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlKCdkYXRhLXN0YXRlJykgYXMgU2JiT3BlbmVkQ2xvc2VkU3RhdGU7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZWxlbWVudCBpcyBvcGVuLiAqL1xuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCc7XG4gIH1cblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBzdGFydHMgdGhlIG9wZW5pbmcgdHJhbnNpdGlvbi4gKi9cbiAgcHJvdGVjdGVkIHdpbGxPcGVuOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQuZXZlbnRzLndpbGxPcGVuLFxuICApO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGlzIG9wZW5lZC4gKi9cbiAgcHJvdGVjdGVkIGRpZE9wZW46IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIodGhpcywgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQuZXZlbnRzLmRpZE9wZW4pO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGJlZ2lucyB0aGUgY2xvc2luZyB0cmFuc2l0aW9uLiAqL1xuICBwcm90ZWN0ZWQgd2lsbENsb3NlOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQuZXZlbnRzLndpbGxDbG9zZSxcbiAgKTtcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBpcyBjbG9zZWQuICovXG4gIHByb3RlY3RlZCBkaWRDbG9zZTogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50LmV2ZW50cy5kaWRDbG9zZSxcbiAgKTtcblxuICAvKiogT3BlbnMgdGhlIGNvbXBvbmVudC4gKi9cbiAgcHVibGljIGFic3RyYWN0IG9wZW4oKTogdm9pZDtcbiAgLyoqIENsb3NlcyB0aGUgY29tcG9uZW50LiAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY2xvc2UoKTogdm9pZDtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLnN0YXRlIHx8PSAnY2xvc2VkJztcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzRXZlbnRNYXAge1xuICAgIHdpbGxPcGVuOiBDdXN0b21FdmVudDx2b2lkPjtcbiAgICB3aWxsQ2xvc2U6IEN1c3RvbUV2ZW50PHZvaWQ+O1xuICAgIGRpZE9wZW46IEN1c3RvbUV2ZW50PHZvaWQ+O1xuICAgIGRpZENsb3NlOiBDdXN0b21FdmVudDx2b2lkPjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9fZGVjb3JhdGVDbGFzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJzQixJQUFBLHVCQUFmLGNBQTRDLFdBQVc7QUFBQSxFQUM1RCxJQUFjLGdCQUFxQztBQUNqRCxVQUFNLGdCQUFnQjtBQUNmLFdBQUEsY0FBYyxZQUFZLGNBQWM7QUFBQSxFQUNqRDtBQUFBLEVBRUEsSUFBYywyQkFBZ0Q7QUFDNUQsV0FBUSxLQUF1QjtBQUFBLEVBQ2pDO0FBQUEsRUFFZ0Isb0JBQTBCOztBQUN4QyxVQUFNLGtCQUFrQjtBQUV4QixTQUVHLEtBQUssYUFBYSxXQUFXLEtBQUssS0FBSyxhQUFhLGFBQWEsUUFDbEUsVUFBSyxrQkFBTCxtQkFBb0IsUUFBUSwyQ0FDNUI7QUFDUSxjQUFBO0FBQUEsUUFDTixtQ0FBbUMsS0FBSyxTQUFTLFdBQVcsS0FBSyxjQUFlLFFBQVEsdUNBQXVDLEVBQUcsU0FBUztBQUFBLFFBQzNJO0FBQUEsTUFBQTtBQUFBLElB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
@@ -1 +1 @@
1
- {"version":3,"file":"language-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/language-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAKrF;;;;;;;GAOG;AACH,qBAAa,qBAAsB,YAAW,kBAAkB;IA0C3C,OAAO,CAAC,KAAK;IAzChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAA4B;IAErE,gFAAgF;IAChF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAEtE,iFAAiF;IACjF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAI9B;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAGrC;IAEF,gCAAgC;IAChC,WAAkB,OAAO,IAAI,MAAM,CAalC;IAED,gCAAgC;IAChC,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,SAAS,CAAsB;gBAEZ,KAAK,EAAE,sBAAsB;IAIxD,qCAAqC;IAC9B,WAAW,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAOtC,aAAa,IAAI,IAAI;IAcrB,gBAAgB,IAAI,IAAI;IAQ/B,OAAO,CAAC,aAAa;CAMtB"}
1
+ {"version":3,"file":"language-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/language-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAIrF;;;;;;;GAOG;AACH,qBAAa,qBAAsB,YAAW,kBAAkB;IA4C3C,OAAO,CAAC,KAAK;IA3ChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAA4B;IAErE,gFAAgF;IAChF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAEtE,iFAAiF;IACjF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAMxB;IACT,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAGrC;IAEF,gCAAgC;IAChC,WAAkB,OAAO,IAAI,MAAM,CAalC;IAED,gCAAgC;IAChC,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,SAAS,CAAsB;gBAEZ,KAAK,EAAE,sBAAsB;IAIxD,qCAAqC;IAC9B,WAAW,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAOtC,aAAa,IAAI,IAAI;IAiBrB,gBAAgB,IAAI,IAAI;IAW/B,OAAO,CAAC,aAAa;CAMtB"}
@@ -1,6 +1,5 @@
1
1
  import { isServer } from "lit";
2
2
  import { readConfig } from "./config.js";
3
- import { AgnosticMutationObserver } from "./observers.js";
4
3
  class SbbConnectedAbortController {
5
4
  constructor(_host) {
6
5
  this._host = _host;
@@ -132,6 +131,9 @@ const _SbbLanguageController = class _SbbLanguageController {
132
131
  return this;
133
132
  }
134
133
  hostConnected() {
134
+ if (isServer) {
135
+ return;
136
+ }
135
137
  if (!_SbbLanguageController._listeners.size) {
136
138
  _SbbLanguageController._observer.observe(
137
139
  document.documentElement,
@@ -144,6 +146,9 @@ const _SbbLanguageController = class _SbbLanguageController {
144
146
  }
145
147
  }
146
148
  hostDisconnected() {
149
+ if (isServer) {
150
+ return;
151
+ }
147
152
  this._previousLanguage = this.current;
148
153
  _SbbLanguageController._listeners.delete(this);
149
154
  if (!_SbbLanguageController._listeners.size) {
@@ -160,11 +165,11 @@ const _SbbLanguageController = class _SbbLanguageController {
160
165
  _SbbLanguageController._defaultLanguage = "en";
161
166
  _SbbLanguageController._supportedLocales = ["en", "de", "fr", "it"];
162
167
  _SbbLanguageController._listeners = /* @__PURE__ */ new Set();
163
- _SbbLanguageController._observer = new AgnosticMutationObserver((mutations) => {
168
+ _SbbLanguageController._observer = !isServer ? new MutationObserver((mutations) => {
164
169
  if (mutations[0].oldValue !== document.documentElement.getAttribute("lang")) {
165
170
  _SbbLanguageController._listeners.forEach((l) => l._callHandlers());
166
171
  }
167
- });
172
+ }) : null;
168
173
  _SbbLanguageController._observerConfig = {
169
174
  attributeFilter: ["lang"],
170
175
  attributeOldValue: true
@@ -220,4 +225,4 @@ export {
220
225
  SbbLanguageController,
221
226
  SbbSlotStateController
222
227
  };
223
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlcnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL2Nvbm5lY3RlZC1hYm9ydC1jb250cm9sbGVyLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMvaW5lcnQtY29udHJvbGxlci50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL2xhbmd1YWdlLWNvbnRyb2xsZXIudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9jb250cm9sbGVycy9zbG90LXN0YXRlLWNvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUNvbnRyb2xsZXIsIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5leHBvcnQgY2xhc3MgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHJpdmF0ZSBfYWJvcnRDb250cm9sbGVyPzogQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gIHB1YmxpYyBnZXQgc2lnbmFsKCk6IEFib3J0U2lnbmFsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fYWJvcnRDb250cm9sbGVyPy5zaWduYWw7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCkge1xuICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWJvcnRDb250cm9sbGVyKSB7XG4gICAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlciA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUNvbnRyb2xsZXIsIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vYmFzZS1lbGVtZW50cy9vcGVuLWNsb3NlLWJhc2UtZWxlbWVudC5qcyc7XG5cbmNvbnN0IElHTk9SRURfRUxFTUVOVFMgPSBbJ3NjcmlwdCcsICdoZWFkJywgJ3RlbXBsYXRlJywgJ3N0eWxlJ107XG5jb25zdCBpbmVydEVsZW1lbnRzID0gbmV3IFNldDxIVE1MRWxlbWVudD4oKTtcbmNvbnN0IGluZXJ0T3ZlcmxheXMgPSBuZXcgU2V0PEhUTUxFbGVtZW50PigpO1xuXG5leHBvcnQgY2xhc3MgU2JiSW5lcnRDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2hvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCxcbiAgICBwcml2YXRlIF9pbmVydEVsZW1lbnRzID0gaW5lcnRFbGVtZW50cyxcbiAgICBwcml2YXRlIF9pbmVydE92ZXJsYXlzID0gaW5lcnRPdmVybGF5cyxcbiAgKSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyPy4odGhpcyk7XG4gIH1cblxuICBwdWJsaWMgaG9zdENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faG9zdC5pc09wZW4pIHtcbiAgICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5lcnRPdmVybGF5cy5oYXModGhpcy5faG9zdCkpIHtcbiAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBcHBsaWVzIGluZXJ0IHN0YXRlIHRvIGV2ZXJ5IG90aGVyIGVsZW1lbnQgb24gdGhlIHBhZ2UgZXhjZXB0IHRoZSBvdmVybGF5LiAqL1xuICBwdWJsaWMgYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgLy8gUmVtb3ZlIGluZXJ0IHN0YXRlIGZyb20gcHJldmlvdXMgb3BlbmVkIG92ZXJsYXlcbiAgICBpZiAodGhpcy5faW5lcnRPdmVybGF5cy5zaXplKSB7XG4gICAgICB0aGlzLl9yZW1vdmVJbmVydEF0dHJpYnV0ZXMoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pbmVydE92ZXJsYXlzLmFkZCh0aGlzLl9ob3N0KTtcbiAgICB0aGlzLl9hZGRJbmVydEF0dHJpYnV0ZXMoKTtcbiAgfVxuXG4gIC8qKiBSZW1vdmVzIGluZXJ0IHN0YXRlLiAqL1xuICBwdWJsaWMgZGVhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY3VycmVudE92ZXJsYXkoKSAhPT0gdGhpcy5faG9zdCkge1xuICAgICAgLy8gSWYgZS5nLiBhIGNvbXBvbmVudCBnZXRzIGRpc2Nvbm5lY3RlZCwgaXQgY291bGQgYmUgdGhhdCBpdCBpcyBub3QgdGhlIHRvcCBtb3N0LlxuICAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBjYW4gZGlyZWN0bHkgcmVtb3ZlIGl0LCBhcyB0aGVyZSBpcyBjdXJyZW50bHkgbm8gaW5lcnQgc3RhdGUgYXBwbGllZC5cbiAgICAgIGlmICh0aGlzLl9pbmVydE92ZXJsYXlzLmhhcyh0aGlzLl9ob3N0KSkge1xuICAgICAgICB0aGlzLl9pbmVydE92ZXJsYXlzLmRlbGV0ZSh0aGlzLl9ob3N0KTtcbiAgICAgIH0gZWxzZSBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFVikge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1RyeWluZyB0byByZW1vdmUgaW5lcnQgc3RhdGUgb2YgYW4gb3ZlcmxheSB3aGljaCBuZXZlciBoYWQgYW4gYXBwbGllZCBpbmVydCBzdGF0ZS4nLFxuICAgICAgICAgIHRoaXMuX2hvc3QsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZW1vdmVJbmVydEF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLl9pbmVydE92ZXJsYXlzLmRlbGV0ZSh0aGlzLl9ob3N0KTtcblxuICAgIC8vIElmIHRoZXJlIGlzIGFzIHByZXZpb3VzIG9wZW5lZCBvdmVybGF5LCBzZXQgaXRzIGluZXJ0IHN0YXRlIGFnYWluLlxuICAgIGlmICh0aGlzLl9pbmVydE92ZXJsYXlzLnNpemUpIHtcbiAgICAgIHRoaXMuX2FkZEluZXJ0QXR0cmlidXRlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2N1cnJlbnRPdmVybGF5KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9pbmVydE92ZXJsYXlzXS5wb3AoKSA/PyBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlSW5lcnRBdHRyaWJ1dGVzKCk6IHZvaWQge1xuICAgIHRoaXMuX2luZXJ0RWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnKSkge1xuICAgICAgICBlbGVtZW50LmluZXJ0ID0gZmFsc2U7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJykpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJyk7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1hcmlhLWhpZGRlbicpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuX2luZXJ0RWxlbWVudHMuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZEluZXJ0QXR0cmlidXRlcygpOiB2b2lkIHtcbiAgICBsZXQgZWxlbWVudDogRWxlbWVudCB8IG51bGwgPSB0aGlzLl9jdXJyZW50T3ZlcmxheSgpO1xuXG4gICAgd2hpbGUgKGVsZW1lbnQgIT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBlbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBBcnJheS5mcm9tKChlbGVtZW50Py5wYXJlbnRFbGVtZW50ID8/IGVsZW1lbnQ/LmdldFJvb3ROb2RlKCkpPy5jaGlsZE5vZGVzID8/IFtdKVxuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIChjaGlsZCk6IGNoaWxkIGlzIEhUTUxFbGVtZW50ID0+XG4gICAgICAgICAgICBjaGlsZCAhPT0gZWxlbWVudCAmJlxuICAgICAgICAgICAgY2hpbGQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgICAgICFJR05PUkVEX0VMRU1FTlRTLmluY2x1ZGVzKGNoaWxkLmxvY2FsTmFtZSksXG4gICAgICAgIClcbiAgICAgICAgLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICB0aGlzLl9pbmVydEVsZW1lbnRzLmFkZChlbGVtZW50KTtcblxuICAgICAgICAgIGlmICghZWxlbWVudC5pbmVydCkge1xuICAgICAgICAgICAgZWxlbWVudC5pbmVydCA9IHRydWU7XG4gICAgICAgICAgICBlbGVtZW50LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnLCB0cnVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlKCdhcmlhLWhpZGRlbicpKSB7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICAgICAgZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJywgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgLy8gV2UgbmVlZCB0byBwaWVyY2UgdGhyb3VnaCBTaGFkb3cgRE9NIGJvdW5kYXJ5XG4gICAgICBlbGVtZW50ID0gZWxlbWVudD8ucGFyZW50RWxlbWVudCA/PyAoZWxlbWVudD8uZ2V0Um9vdE5vZGUoKSBhcyBTaGFkb3dSb290KT8uaG9zdCA/PyBudWxsO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgaXNTZXJ2ZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVyLCB0eXBlIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7IEFnbm9zdGljTXV0YXRpb25PYnNlcnZlciB9IGZyb20gJy4uL29ic2VydmVycy5qcyc7XG5cbi8qKlxuICogVGhlIExhbmd1YWdlQ29udHJvbGxlciBpcyBhIHJlYWN0aXZlIGNvbnRyb2xsZXIgdGhhdCBvYnNlcnZlcyB0aGUgXCJsYW5nXCIgYXR0cmlidXRlXG4gKiBvZiB0aGUgPGh0bWw+IHRhZy5cbiAqIE9uIGNoYW5nZSBvZiB0aGUgXCJsYW5nXCIgYXR0cmlidXRlLCBpdCB3aWxsIHJlcXVlc3QgYW4gdXBkYXRlIG9mIGNvbm5lY3RlZFxuICogY29tcG9uZW50cy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvbGFuZ1xuICovXG5leHBvcnQgY2xhc3MgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2RlZmF1bHRMYW5ndWFnZSA9ICdlbic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXBwb3J0ZWRMb2NhbGVzID0gWydlbicsICdkZScsICdmcicsICdpdCddO1xuXG4gIC8qKiBBIHNldCBvZiBjb25uZWN0ZWQgY29tcG9uZW50cyB0aGF0IHNob3VsZCBiZSBub3RpZmllZCBvbiBsYW5ndWFnZSBjaGFuZ2UuICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9saXN0ZW5lcnMgPSBuZXcgU2V0PFNiYkxhbmd1YWdlQ29udHJvbGxlcj4oKTtcblxuICAvKiogTXV0YXRpb25PYnNlcnZlciB0aGF0IG9ic2VydmVzIHRoZSBcImxhbmdcIiBhdHRyaWJ1dGUgb2YgdGhlIDxodG1sPiBlbGVtZW50LiAqL1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfb2JzZXJ2ZXIgPSBuZXcgQWdub3N0aWNNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICBpZiAobXV0YXRpb25zWzBdLm9sZFZhbHVlICE9PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykpIHtcbiAgICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLmZvckVhY2goKGwpID0+IGwuX2NhbGxIYW5kbGVycygpKTtcbiAgICB9XG4gIH0pO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfb2JzZXJ2ZXJDb25maWcgPSB7XG4gICAgYXR0cmlidXRlRmlsdGVyOiBbJ2xhbmcnXSxcbiAgICBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSxcbiAgfTtcblxuICAvKiogR2V0IHRoZSBjdXJyZW50IGxhbmd1YWdlLiAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBjdXJyZW50KCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPVxuICAgICAgKHJlYWRDb25maWcoKS5sYW5ndWFnZSA/P1xuICAgICAgICAoaXNTZXJ2ZXJcbiAgICAgICAgICA/IFNiYkxhbmd1YWdlQ29udHJvbGxlci5fZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykpKSB8fFxuICAgICAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9kZWZhdWx0TGFuZ3VhZ2U7XG5cbiAgICAvLyBTdXBwb3J0IGUuZy4gY2FzZXMgbGlrZSBgZGUtY2hgLlxuICAgIGNvbnN0IGxhbmdBdHRyaWJ1dGVOb3JtYWxpemVkID0gbGFuZ3VhZ2Uuc3BsaXQoJy0nKVswXTtcbiAgICByZXR1cm4gU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9zdXBwb3J0ZWRMb2NhbGVzLmluY2x1ZGVzKGxhbmdBdHRyaWJ1dGVOb3JtYWxpemVkKVxuICAgICAgPyBsYW5nQXR0cmlidXRlTm9ybWFsaXplZFxuICAgICAgOiBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuX2RlZmF1bHRMYW5ndWFnZTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuICovXG4gIHB1YmxpYyBnZXQgY3VycmVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudDtcbiAgfVxuXG4gIHByaXZhdGUgX3ByZXZpb3VzTGFuZ3VhZ2U/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2hhbmRsZXJzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0KSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICB9XG5cbiAgLyoqIEFkZCBhIGxhbmd1YWdlIGNoYW5nZSBoYW5kbGVyLiAqL1xuICBwdWJsaWMgd2l0aEhhbmRsZXIoaGFuZGxlcjogKCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIC8vIFdlIHVzZSB1bnNoaWZ0IGhlcmUsIHRvIHByZXBlbmQgYWRkaXRpb25hbCBoYW5kbGVycy5cbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCByZXF1ZXN0VXBkYXRlIGlzIGNhbGxlZCBhZnRlciB0aGUgb3RoZXIgaGFuZGxlcnMuXG4gICAgdGhpcy5faGFuZGxlcnMudW5zaGlmdChoYW5kbGVyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmICghU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9saXN0ZW5lcnMuc2l6ZSkge1xuICAgICAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9vYnNlcnZlci5vYnNlcnZlKFxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsXG4gICAgICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fb2JzZXJ2ZXJDb25maWcsXG4gICAgICApO1xuICAgIH1cblxuICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLmFkZCh0aGlzKTtcbiAgICBpZiAodGhpcy5fcHJldmlvdXNMYW5ndWFnZSAhPT0gdGhpcy5jdXJyZW50KSB7XG4gICAgICB0aGlzLl9jYWxsSGFuZGxlcnModGhpcy5fcHJldmlvdXNMYW5ndWFnZSAhPT0gdW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9wcmV2aW91c0xhbmd1YWdlID0gdGhpcy5jdXJyZW50O1xuICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLmRlbGV0ZSh0aGlzKTtcbiAgICBpZiAoIVNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLnNpemUpIHtcbiAgICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NhbGxIYW5kbGVycyhyZXF1ZXN0VXBkYXRlID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuX2hhbmRsZXJzLmZvckVhY2goKGgpID0+IGgoKSk7XG4gICAgaWYgKHJlcXVlc3RVcGRhdGUpIHtcbiAgICAgIHRoaXMuX2hvc3QucmVxdWVzdFVwZGF0ZSgpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUNvbnRyb2xsZXIsIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG4vKipcbiAqIFRoaXMgY29udHJvbGxlciBjaGVja3MgZm9yIHNsb3R0ZWQgY2hpbGRyZW4uIEZyb20gdGhlc2UgaXQgZ2VuZXJhdGVzXG4gKiBhIGxpc3Qgb2YgdXNlZCBzbG90IG5hbWVzIChgdW5uYW1lZGAgZm9yIGNoaWxkcmVuIHdpdGhvdXQgYSBzbG90IGF0dHJpYnV0ZSlcbiAqIGFuZCBhZGRzIHRoaXMgdG8gdGhlIGBkYXRhLXNsb3QtbmFtZXNgIGF0dHJpYnV0ZSwgYXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdC5cbiAqXG4gKiBUaGlzIGFsbG93cyBDU1MgYXR0cmlidXRlIHNlbGVjdG9yIHRvIGRpc3BsYXkvaGlkZS9jb25maWd1cmUgYSBzZWN0aW9uXG4gKiBvZiB0aGUgY29tcG9uZW50IGFzIHJlcXVpcmVkIChzZWUgW2F0dHJ+PXZhbHVlXSBzZWxlY3RvciBzcGVjaWZpY2FsbHkpLlxuICpcbiAqIEBleGFtcGxlXG4gKiAuZXhhbXBsZSB7XG4gKiAgIGRpc3BsYXk6IG5vbmU7XG4gKlxuICogICA6aG9zdChbZGF0YS1zbG90LW5hbWVzfj1cImljb25cIl0pICYge1xuICogICAgIGRpc3BsYXk6IGlubGluZTtcbiAqICAgfVxuICogfVxuICpcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9BdHRyaWJ1dGVfc2VsZWN0b3JzXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJTbG90U3RhdGVDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHNsb3RzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2hvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBIVE1MRWxlbWVudCxcbiAgICBwcml2YXRlIF9vbkNoYW5nZUNhbGxiYWNrOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbCxcbiAgKSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgLy8gVE9ETzogQ2hlY2sgaWYgdGhpcyBpcyByZWFsbHkgbmVlZGVkIHdpdGggU1NSLlxuICAgIHRoaXMuX3N5bmNTbG90cyguLi50aGlzLl9ob3N0LnF1ZXJ5U2VsZWN0b3JBbGwhKCdzbG90JykpO1xuICAgIHRoaXMuX2hvc3Quc2hhZG93Um9vdD8uYWRkRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIHRoaXMuX3Nsb3RjaGFuZ2VIYW5kbGVyKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0RGlzY29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuX2hvc3Quc2hhZG93Um9vdD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIHRoaXMuX3Nsb3RjaGFuZ2VIYW5kbGVyKTtcbiAgfVxuXG4gIC8vIFdlIGF2b2lkIHVzaW5nIEFib3J0Q29udHJvbGxlciBoZXJlLCBhcyBpdCB3b3VsZCBtZWFuIGNyZWF0aW5nXG4gIC8vIGEgbmV3IGluc3RhbmNlIGZvciBldmVyeSBOYW1lZFNsb3RTdGF0ZUNvbnRyb2xsZXIgaW5zdGFuY2UuXG4gIHByaXZhdGUgX3Nsb3RjaGFuZ2VIYW5kbGVyID0gKGV2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX3N5bmNTbG90cyhldmVudC50YXJnZXQgYXMgSFRNTFNsb3RFbGVtZW50KTtcbiAgfTtcblxuICBwcml2YXRlIF9zeW5jU2xvdHMoLi4uc2xvdHM6IEhUTUxTbG90RWxlbWVudFtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzbG90IG9mIHNsb3RzKSB7XG4gICAgICBjb25zdCBzbG90TmFtZSA9IHNsb3QubmFtZSB8fCAndW5uYW1lZCc7XG4gICAgICAvLyBXZSB3YW50IHRvIGNoZWNrLCB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgc2xvdHRlZCBvciBhIHRleHQgbm9kZSB3aXRoIGFjdHVhbCBjb250ZW50LlxuICAgICAgaWYgKHNsb3QuYXNzaWduZWROb2RlcygpLnNvbWUoKG4pID0+ICd0YWdOYW1lJyBpbiBuIHx8IG4udGV4dENvbnRlbnQ/LnRyaW0oKSkpIHtcbiAgICAgICAgdGhpcy5zbG90cy5hZGQoc2xvdE5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zbG90cy5kZWxldGUoc2xvdE5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5faG9zdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2xvdC1uYW1lcycpO1xuICAgIGNvbnN0IGpvaW5lZFNsb3ROYW1lcyA9IFsuLi50aGlzLnNsb3RzXS5zb3J0KCkuam9pbignICcpO1xuICAgIGlmICgham9pbmVkU2xvdE5hbWVzKSB7XG4gICAgICB0aGlzLl9ob3N0LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1zbG90LW5hbWVzJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9ob3N0LmdldEF0dHJpYnV0ZSgnZGF0YS1zbG90LW5hbWVzJykgIT09IGpvaW5lZFNsb3ROYW1lcykge1xuICAgICAgdGhpcy5faG9zdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2xvdC1uYW1lcycsIGpvaW5lZFNsb3ROYW1lcyk7XG4gICAgfVxuXG4gICAgaWYgKGpvaW5lZFNsb3ROYW1lcyAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2s/LigpO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbImVsZW1lbnQiLCJfYSJdLCJtYXBwaW5ncyI6Ijs7O0FBRU8sTUFBTSw0QkFBMEQ7QUFBQSxFQU85RCxZQUFvQixPQUErQjtBQUEvQixTQUFB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
228
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlcnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL2Nvbm5lY3RlZC1hYm9ydC1jb250cm9sbGVyLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMvaW5lcnQtY29udHJvbGxlci50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL2xhbmd1YWdlLWNvbnRyb2xsZXIudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9jb250cm9sbGVycy9zbG90LXN0YXRlLWNvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUNvbnRyb2xsZXIsIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5leHBvcnQgY2xhc3MgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHJpdmF0ZSBfYWJvcnRDb250cm9sbGVyPzogQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gIHB1YmxpYyBnZXQgc2lnbmFsKCk6IEFib3J0U2lnbmFsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fYWJvcnRDb250cm9sbGVyPy5zaWduYWw7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCkge1xuICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWJvcnRDb250cm9sbGVyKSB7XG4gICAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlciA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUNvbnRyb2xsZXIsIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vYmFzZS1lbGVtZW50cy9vcGVuLWNsb3NlLWJhc2UtZWxlbWVudC5qcyc7XG5cbmNvbnN0IElHTk9SRURfRUxFTUVOVFMgPSBbJ3NjcmlwdCcsICdoZWFkJywgJ3RlbXBsYXRlJywgJ3N0eWxlJ107XG5jb25zdCBpbmVydEVsZW1lbnRzID0gbmV3IFNldDxIVE1MRWxlbWVudD4oKTtcbmNvbnN0IGluZXJ0T3ZlcmxheXMgPSBuZXcgU2V0PEhUTUxFbGVtZW50PigpO1xuXG5leHBvcnQgY2xhc3MgU2JiSW5lcnRDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2hvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCxcbiAgICBwcml2YXRlIF9pbmVydEVsZW1lbnRzID0gaW5lcnRFbGVtZW50cyxcbiAgICBwcml2YXRlIF9pbmVydE92ZXJsYXlzID0gaW5lcnRPdmVybGF5cyxcbiAgKSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyPy4odGhpcyk7XG4gIH1cblxuICBwdWJsaWMgaG9zdENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faG9zdC5pc09wZW4pIHtcbiAgICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5lcnRPdmVybGF5cy5oYXModGhpcy5faG9zdCkpIHtcbiAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBcHBsaWVzIGluZXJ0IHN0YXRlIHRvIGV2ZXJ5IG90aGVyIGVsZW1lbnQgb24gdGhlIHBhZ2UgZXhjZXB0IHRoZSBvdmVybGF5LiAqL1xuICBwdWJsaWMgYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgLy8gUmVtb3ZlIGluZXJ0IHN0YXRlIGZyb20gcHJldmlvdXMgb3BlbmVkIG92ZXJsYXlcbiAgICBpZiAodGhpcy5faW5lcnRPdmVybGF5cy5zaXplKSB7XG4gICAgICB0aGlzLl9yZW1vdmVJbmVydEF0dHJpYnV0ZXMoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pbmVydE92ZXJsYXlzLmFkZCh0aGlzLl9ob3N0KTtcbiAgICB0aGlzLl9hZGRJbmVydEF0dHJpYnV0ZXMoKTtcbiAgfVxuXG4gIC8qKiBSZW1vdmVzIGluZXJ0IHN0YXRlLiAqL1xuICBwdWJsaWMgZGVhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY3VycmVudE92ZXJsYXkoKSAhPT0gdGhpcy5faG9zdCkge1xuICAgICAgLy8gSWYgZS5nLiBhIGNvbXBvbmVudCBnZXRzIGRpc2Nvbm5lY3RlZCwgaXQgY291bGQgYmUgdGhhdCBpdCBpcyBub3QgdGhlIHRvcCBtb3N0LlxuICAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBjYW4gZGlyZWN0bHkgcmVtb3ZlIGl0LCBhcyB0aGVyZSBpcyBjdXJyZW50bHkgbm8gaW5lcnQgc3RhdGUgYXBwbGllZC5cbiAgICAgIGlmICh0aGlzLl9pbmVydE92ZXJsYXlzLmhhcyh0aGlzLl9ob3N0KSkge1xuICAgICAgICB0aGlzLl9pbmVydE92ZXJsYXlzLmRlbGV0ZSh0aGlzLl9ob3N0KTtcbiAgICAgIH0gZWxzZSBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFVikge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1RyeWluZyB0byByZW1vdmUgaW5lcnQgc3RhdGUgb2YgYW4gb3ZlcmxheSB3aGljaCBuZXZlciBoYWQgYW4gYXBwbGllZCBpbmVydCBzdGF0ZS4nLFxuICAgICAgICAgIHRoaXMuX2hvc3QsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZW1vdmVJbmVydEF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLl9pbmVydE92ZXJsYXlzLmRlbGV0ZSh0aGlzLl9ob3N0KTtcblxuICAgIC8vIElmIHRoZXJlIGlzIGFzIHByZXZpb3VzIG9wZW5lZCBvdmVybGF5LCBzZXQgaXRzIGluZXJ0IHN0YXRlIGFnYWluLlxuICAgIGlmICh0aGlzLl9pbmVydE92ZXJsYXlzLnNpemUpIHtcbiAgICAgIHRoaXMuX2FkZEluZXJ0QXR0cmlidXRlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2N1cnJlbnRPdmVybGF5KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9pbmVydE92ZXJsYXlzXS5wb3AoKSA/PyBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlSW5lcnRBdHRyaWJ1dGVzKCk6IHZvaWQge1xuICAgIHRoaXMuX2luZXJ0RWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnKSkge1xuICAgICAgICBlbGVtZW50LmluZXJ0ID0gZmFsc2U7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJykpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJyk7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1hcmlhLWhpZGRlbicpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuX2luZXJ0RWxlbWVudHMuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZEluZXJ0QXR0cmlidXRlcygpOiB2b2lkIHtcbiAgICBsZXQgZWxlbWVudDogRWxlbWVudCB8IG51bGwgPSB0aGlzLl9jdXJyZW50T3ZlcmxheSgpO1xuXG4gICAgd2hpbGUgKGVsZW1lbnQgIT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBlbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBBcnJheS5mcm9tKChlbGVtZW50Py5wYXJlbnRFbGVtZW50ID8/IGVsZW1lbnQ/LmdldFJvb3ROb2RlKCkpPy5jaGlsZE5vZGVzID8/IFtdKVxuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIChjaGlsZCk6IGNoaWxkIGlzIEhUTUxFbGVtZW50ID0+XG4gICAgICAgICAgICBjaGlsZCAhPT0gZWxlbWVudCAmJlxuICAgICAgICAgICAgY2hpbGQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgICAgICFJR05PUkVEX0VMRU1FTlRTLmluY2x1ZGVzKGNoaWxkLmxvY2FsTmFtZSksXG4gICAgICAgIClcbiAgICAgICAgLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICB0aGlzLl9pbmVydEVsZW1lbnRzLmFkZChlbGVtZW50KTtcblxuICAgICAgICAgIGlmICghZWxlbWVudC5pbmVydCkge1xuICAgICAgICAgICAgZWxlbWVudC5pbmVydCA9IHRydWU7XG4gICAgICAgICAgICBlbGVtZW50LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnLCB0cnVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlKCdhcmlhLWhpZGRlbicpKSB7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICAgICAgZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJywgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgLy8gV2UgbmVlZCB0byBwaWVyY2UgdGhyb3VnaCBTaGFkb3cgRE9NIGJvdW5kYXJ5XG4gICAgICBlbGVtZW50ID0gZWxlbWVudD8ucGFyZW50RWxlbWVudCA/PyAoZWxlbWVudD8uZ2V0Um9vdE5vZGUoKSBhcyBTaGFkb3dSb290KT8uaG9zdCA/PyBudWxsO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgaXNTZXJ2ZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVyLCB0eXBlIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnLmpzJztcblxuLyoqXG4gKiBUaGUgTGFuZ3VhZ2VDb250cm9sbGVyIGlzIGEgcmVhY3RpdmUgY29udHJvbGxlciB0aGF0IG9ic2VydmVzIHRoZSBcImxhbmdcIiBhdHRyaWJ1dGVcbiAqIG9mIHRoZSA8aHRtbD4gdGFnLlxuICogT24gY2hhbmdlIG9mIHRoZSBcImxhbmdcIiBhdHRyaWJ1dGUsIGl0IHdpbGwgcmVxdWVzdCBhbiB1cGRhdGUgb2YgY29ubmVjdGVkXG4gKiBjb21wb25lbnRzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9sYW5nXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgaW1wbGVtZW50cyBSZWFjdGl2ZUNvbnRyb2xsZXIge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZGVmYXVsdExhbmd1YWdlID0gJ2VuJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3N1cHBvcnRlZExvY2FsZXMgPSBbJ2VuJywgJ2RlJywgJ2ZyJywgJ2l0J107XG5cbiAgLyoqIEEgc2V0IG9mIGNvbm5lY3RlZCBjb21wb25lbnRzIHRoYXQgc2hvdWxkIGJlIG5vdGlmaWVkIG9uIGxhbmd1YWdlIGNoYW5nZS4gKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xpc3RlbmVycyA9IG5ldyBTZXQ8U2JiTGFuZ3VhZ2VDb250cm9sbGVyPigpO1xuXG4gIC8qKiBNdXRhdGlvbk9ic2VydmVyIHRoYXQgb2JzZXJ2ZXMgdGhlIFwibGFuZ1wiIGF0dHJpYnV0ZSBvZiB0aGUgPGh0bWw+IGVsZW1lbnQuICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9vYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgICBpZiAobXV0YXRpb25zWzBdLm9sZFZhbHVlICE9PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykpIHtcbiAgICAgICAgICBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuX2xpc3RlbmVycy5mb3JFYWNoKChsKSA9PiBsLl9jYWxsSGFuZGxlcnMoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgOiBudWxsO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfb2JzZXJ2ZXJDb25maWcgPSB7XG4gICAgYXR0cmlidXRlRmlsdGVyOiBbJ2xhbmcnXSxcbiAgICBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSxcbiAgfTtcblxuICAvKiogR2V0IHRoZSBjdXJyZW50IGxhbmd1YWdlLiAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBjdXJyZW50KCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPVxuICAgICAgKHJlYWRDb25maWcoKS5sYW5ndWFnZSA/P1xuICAgICAgICAoaXNTZXJ2ZXJcbiAgICAgICAgICA/IFNiYkxhbmd1YWdlQ29udHJvbGxlci5fZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykpKSB8fFxuICAgICAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9kZWZhdWx0TGFuZ3VhZ2U7XG5cbiAgICAvLyBTdXBwb3J0IGUuZy4gY2FzZXMgbGlrZSBgZGUtY2hgLlxuICAgIGNvbnN0IGxhbmdBdHRyaWJ1dGVOb3JtYWxpemVkID0gbGFuZ3VhZ2Uuc3BsaXQoJy0nKVswXTtcbiAgICByZXR1cm4gU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9zdXBwb3J0ZWRMb2NhbGVzLmluY2x1ZGVzKGxhbmdBdHRyaWJ1dGVOb3JtYWxpemVkKVxuICAgICAgPyBsYW5nQXR0cmlidXRlTm9ybWFsaXplZFxuICAgICAgOiBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuX2RlZmF1bHRMYW5ndWFnZTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuICovXG4gIHB1YmxpYyBnZXQgY3VycmVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudDtcbiAgfVxuXG4gIHByaXZhdGUgX3ByZXZpb3VzTGFuZ3VhZ2U/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2hhbmRsZXJzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0KSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICB9XG5cbiAgLyoqIEFkZCBhIGxhbmd1YWdlIGNoYW5nZSBoYW5kbGVyLiAqL1xuICBwdWJsaWMgd2l0aEhhbmRsZXIoaGFuZGxlcjogKCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIC8vIFdlIHVzZSB1bnNoaWZ0IGhlcmUsIHRvIHByZXBlbmQgYWRkaXRpb25hbCBoYW5kbGVycy5cbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCByZXF1ZXN0VXBkYXRlIGlzIGNhbGxlZCBhZnRlciB0aGUgb3RoZXIgaGFuZGxlcnMuXG4gICAgdGhpcy5faGFuZGxlcnMudW5zaGlmdChoYW5kbGVyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIVNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLnNpemUpIHtcbiAgICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fb2JzZXJ2ZXIhLm9ic2VydmUoXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcbiAgICAgICAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9vYnNlcnZlckNvbmZpZyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9saXN0ZW5lcnMuYWRkKHRoaXMpO1xuICAgIGlmICh0aGlzLl9wcmV2aW91c0xhbmd1YWdlICE9PSB0aGlzLmN1cnJlbnQpIHtcbiAgICAgIHRoaXMuX2NhbGxIYW5kbGVycyh0aGlzLl9wcmV2aW91c0xhbmd1YWdlICE9PSB1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBob3N0RGlzY29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9wcmV2aW91c0xhbmd1YWdlID0gdGhpcy5jdXJyZW50O1xuICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLmRlbGV0ZSh0aGlzKTtcbiAgICBpZiAoIVNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLnNpemUpIHtcbiAgICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fb2JzZXJ2ZXIhLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jYWxsSGFuZGxlcnMocmVxdWVzdFVwZGF0ZSA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLl9oYW5kbGVycy5mb3JFYWNoKChoKSA9PiBoKCkpO1xuICAgIGlmIChyZXF1ZXN0VXBkYXRlKSB7XG4gICAgICB0aGlzLl9ob3N0LnJlcXVlc3RVcGRhdGUoKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgUmVhY3RpdmVDb250cm9sbGVyLCBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0IH0gZnJvbSAnbGl0JztcblxuLyoqXG4gKiBUaGlzIGNvbnRyb2xsZXIgY2hlY2tzIGZvciBzbG90dGVkIGNoaWxkcmVuLiBGcm9tIHRoZXNlIGl0IGdlbmVyYXRlc1xuICogYSBsaXN0IG9mIHVzZWQgc2xvdCBuYW1lcyAoYHVubmFtZWRgIGZvciBjaGlsZHJlbiB3aXRob3V0IGEgc2xvdCBhdHRyaWJ1dGUpXG4gKiBhbmQgYWRkcyB0aGlzIHRvIHRoZSBgZGF0YS1zbG90LW5hbWVzYCBhdHRyaWJ1dGUsIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3QuXG4gKlxuICogVGhpcyBhbGxvd3MgQ1NTIGF0dHJpYnV0ZSBzZWxlY3RvciB0byBkaXNwbGF5L2hpZGUvY29uZmlndXJlIGEgc2VjdGlvblxuICogb2YgdGhlIGNvbXBvbmVudCBhcyByZXF1aXJlZCAoc2VlIFthdHRyfj12YWx1ZV0gc2VsZWN0b3Igc3BlY2lmaWNhbGx5KS5cbiAqXG4gKiBAZXhhbXBsZVxuICogLmV4YW1wbGUge1xuICogICBkaXNwbGF5OiBub25lO1xuICpcbiAqICAgOmhvc3QoW2RhdGEtc2xvdC1uYW1lc349XCJpY29uXCJdKSAmIHtcbiAqICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQXR0cmlidXRlX3NlbGVjdG9yc1xuICovXG5leHBvcnQgY2xhc3MgU2JiU2xvdFN0YXRlQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHB1YmxpYyByZWFkb25seSBzbG90cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0ICYgSFRNTEVsZW1lbnQsXG4gICAgcHJpdmF0ZSBfb25DaGFuZ2VDYWxsYmFjazogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGwsXG4gICkge1xuICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIC8vIFRPRE86IENoZWNrIGlmIHRoaXMgaXMgcmVhbGx5IG5lZWRlZCB3aXRoIFNTUi5cbiAgICB0aGlzLl9zeW5jU2xvdHMoLi4udGhpcy5faG9zdC5xdWVyeVNlbGVjdG9yQWxsISgnc2xvdCcpKTtcbiAgICB0aGlzLl9ob3N0LnNoYWRvd1Jvb3Q/LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCB0aGlzLl9zbG90Y2hhbmdlSGFuZGxlcik7XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9ob3N0LnNoYWRvd1Jvb3Q/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCB0aGlzLl9zbG90Y2hhbmdlSGFuZGxlcik7XG4gIH1cblxuICAvLyBXZSBhdm9pZCB1c2luZyBBYm9ydENvbnRyb2xsZXIgaGVyZSwgYXMgaXQgd291bGQgbWVhbiBjcmVhdGluZ1xuICAvLyBhIG5ldyBpbnN0YW5jZSBmb3IgZXZlcnkgTmFtZWRTbG90U3RhdGVDb250cm9sbGVyIGluc3RhbmNlLlxuICBwcml2YXRlIF9zbG90Y2hhbmdlSGFuZGxlciA9IChldmVudDogRXZlbnQpOiB2b2lkID0+IHtcbiAgICB0aGlzLl9zeW5jU2xvdHMoZXZlbnQudGFyZ2V0IGFzIEhUTUxTbG90RWxlbWVudCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfc3luY1Nsb3RzKC4uLnNsb3RzOiBIVE1MU2xvdEVsZW1lbnRbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgc2xvdCBvZiBzbG90cykge1xuICAgICAgY29uc3Qgc2xvdE5hbWUgPSBzbG90Lm5hbWUgfHwgJ3VubmFtZWQnO1xuICAgICAgLy8gV2Ugd2FudCB0byBjaGVjaywgd2hldGhlciBhbiBlbGVtZW50IGlzIHNsb3R0ZWQgb3IgYSB0ZXh0IG5vZGUgd2l0aCBhY3R1YWwgY29udGVudC5cbiAgICAgIGlmIChzbG90LmFzc2lnbmVkTm9kZXMoKS5zb21lKChuKSA9PiAndGFnTmFtZScgaW4gbiB8fCBuLnRleHRDb250ZW50Py50cmltKCkpKSB7XG4gICAgICAgIHRoaXMuc2xvdHMuYWRkKHNsb3ROYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2xvdHMuZGVsZXRlKHNsb3ROYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuX2hvc3QuZ2V0QXR0cmlidXRlKCdkYXRhLXNsb3QtbmFtZXMnKTtcbiAgICBjb25zdCBqb2luZWRTbG90TmFtZXMgPSBbLi4udGhpcy5zbG90c10uc29ydCgpLmpvaW4oJyAnKTtcbiAgICBpZiAoIWpvaW5lZFNsb3ROYW1lcykge1xuICAgICAgdGhpcy5faG9zdC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtc2xvdC1uYW1lcycpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faG9zdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2xvdC1uYW1lcycpICE9PSBqb2luZWRTbG90TmFtZXMpIHtcbiAgICAgIHRoaXMuX2hvc3Quc2V0QXR0cmlidXRlKCdkYXRhLXNsb3QtbmFtZXMnLCBqb2luZWRTbG90TmFtZXMpO1xuICAgIH1cblxuICAgIGlmIChqb2luZWRTbG90TmFtZXMgIT09IG9sZFZhbHVlKSB7XG4gICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrPy4oKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJlbGVtZW50IiwiX2EiXSwibWFwcGluZ3MiOiI7O0FBRU8sTUFBTSw0QkFBMEQ7QUFBQSxFQU85RCxZQUFvQixPQUErQjtBQUEvQixTQUFBLFFBQUE7QUFObkIsU0FBQSxtQkFBcUMsSUFBSTtBQU8xQyxTQUFBLE1BQU0sY0FBYyxJQUFJO0FBQUEsRUFDL0I7QUFBQSxFQU5BLElBQVcsU0FBa0M7O0FBQzNDLFlBQU8sVUFBSyxxQkFBTCxtQkFBdUI7QUFBQSxFQUNoQztBQUFBLEVBTU8sZ0JBQXNCO0FBQ3ZCLFFBQUEsQ0FBQyxLQUFLLGtCQUFrQjtBQUNyQixXQUFBLG1CQUFtQixJQUFJO0lBQzlCO0FBQUEsRUFDRjtBQUFBLEVBRU8sbUJBQXlCOztBQUM5QixlQUFLLHFCQUFMLG1CQUF1QjtBQUN2QixTQUFLLG1CQUFtQjtBQUFBLEVBQzFCO0FBQ0Y7QUNuQkEsTUFBTSxtQkFBbUIsQ0FBQyxVQUFVLFFBQVEsWUFBWSxPQUFPO0FBQy9ELE1BQU0sb0NBQW9CO0FBQzFCLE1BQU0sb0NBQW9CO0FBRW5CLE1BQU0sbUJBQWlEO0FBQUEsRUFDckQsWUFDRyxPQUNBLGlCQUFpQixlQUNqQixpQkFBaUIsZUFDekI7O0FBSFEsU0FBQSxRQUFBO0FBQ0EsU0FBQSxpQkFBQTtBQUNBLFNBQUEsaUJBQUE7QUFFSCxxQkFBQSxPQUFNLGtCQUFOLDRCQUFzQjtBQUFBLEVBQzdCO0FBQUEsRUFFTyxnQkFBc0I7QUFDdkIsUUFBQSxLQUFLLE1BQU0sUUFBUTtBQUNyQixXQUFLLFNBQVM7QUFBQSxJQUNoQjtBQUFBLEVBQ0Y7QUFBQSxFQUVPLG1CQUF5QjtBQUM5QixRQUFJLEtBQUssZUFBZSxJQUFJLEtBQUssS0FBSyxHQUFHO0FBQ3ZDLFdBQUssV0FBVztBQUFBLElBQ2xCO0FBQUEsRUFDRjtBQUFBO0FBQUEsRUFHTyxXQUFpQjtBQUVsQixRQUFBLEtBQUssZUFBZSxNQUFNO0FBQzVCLFdBQUssdUJBQXVCO0FBQUEsSUFDOUI7QUFFSyxTQUFBLGVBQWUsSUFBSSxLQUFLLEtBQUs7QUFDbEMsU0FBSyxvQkFBb0I7QUFBQSxFQUMzQjtBQUFBO0FBQUEsRUFHTyxhQUFtQjtBQUN4QixRQUFJLEtBQUssc0JBQXNCLEtBQUssT0FBTztBQUd6QyxVQUFJLEtBQUssZUFBZSxJQUFJLEtBQUssS0FBSyxHQUFHO0FBQ2xDLGFBQUEsZUFBZSxPQUFPLEtBQUssS0FBSztBQUFBLE1BQUEsT0FDUDtBQUN0QixnQkFBQTtBQUFBLFVBQ047QUFBQSxVQUNBLEtBQUs7QUFBQSxRQUFBO0FBQUEsTUFFVDtBQUVBO0FBQUEsSUFDRjtBQUVBLFNBQUssdUJBQXVCO0FBQ3ZCLFNBQUEsZUFBZSxPQUFPLEtBQUssS0FBSztBQUdqQyxRQUFBLEtBQUssZUFBZSxNQUFNO0FBQzVCLFdBQUssb0JBQW9CO0FBQUEsSUFDM0I7QUFBQSxFQUNGO0FBQUEsRUFFUSxrQkFBc0M7QUFDNUMsV0FBTyxDQUFDLEdBQUcsS0FBSyxjQUFjLEVBQUUsU0FBUztBQUFBLEVBQzNDO0FBQUEsRUFFUSx5QkFBK0I7QUFDaEMsU0FBQSxlQUFlLFFBQVEsQ0FBQyxZQUErQjtBQUMxRCxVQUFJLENBQUMsU0FBUztBQUNaO0FBQUEsTUFDRjtBQUVJLFVBQUEsUUFBUSxhQUFhLGdCQUFnQixHQUFHO0FBQzFDLGdCQUFRLFFBQVE7QUFDaEIsZ0JBQVEsZ0JBQWdCLGdCQUFnQjtBQUFBLE1BQzFDO0FBRUksVUFBQSxRQUFRLGFBQWEsc0JBQXNCLEdBQUc7QUFDaEQsZ0JBQVEsZ0JBQWdCLGFBQWE7QUFDckMsZ0JBQVEsZ0JBQWdCLHNCQUFzQjtBQUFBLE1BQ2hEO0FBQUEsSUFBQSxDQUNEO0FBQ0QsU0FBSyxlQUFlO0VBQ3RCO0FBQUEsRUFFUSxzQkFBNEI7O0FBQzlCLFFBQUEsVUFBMEIsS0FBSztBQUVuQyxXQUFPLFlBQVksU0FBUyxtQkFBbUIsWUFBWSxNQUFNO0FBQ3pELFlBQUEsT0FBTSx5Q0FBUyxtQkFBaUIsbUNBQVMsbUJBQW5DLG1CQUFtRCxlQUFjLENBQUUsQ0FBQSxFQUM1RTtBQUFBLFFBQ0MsQ0FBQyxVQUNDLFVBQVUsV0FDVixpQkFBaUIsT0FBTyxlQUN4QixDQUFDLGlCQUFpQixTQUFTLE1BQU0sU0FBUztBQUFBLE1BQUEsRUFFN0MsUUFBUSxDQUFDQSxhQUFZO0FBQ2YsYUFBQSxlQUFlLElBQUlBLFFBQU87QUFFM0IsWUFBQSxDQUFDQSxTQUFRLE9BQU87QUFDbEJBLG1CQUFRLFFBQVE7QUFDUixtQkFBQSxnQkFBZ0Isa0JBQWtCLElBQUk7QUFBQSxRQUNoRDtBQUVBLFlBQUksQ0FBQ0EsU0FBUSxhQUFhLGFBQWEsR0FBRztBQUNoQyxtQkFBQSxhQUFhLGVBQWUsTUFBTTtBQUNsQyxtQkFBQSxnQkFBZ0Isd0JBQXdCLElBQUk7QUFBQSxRQUN0RDtBQUFBLE1BQUEsQ0FDRDtBQUdILGlCQUFVLG1DQUFTLG9CQUFrQix3Q0FBUyxrQkFBVCxtQkFBdUMsU0FBUTtBQUFBLElBQ3RGO0FBQUEsRUFDRjtBQUNGO0FDMUdPLE1BQU0seUJBQU4sTUFBTSx1QkFBb0Q7QUFBQSxFQTRDeEQsWUFBb0IsT0FBK0I7QUFBL0IsU0FBQSxRQUFBO0FBRjNCLFNBQVEsWUFBNEI7QUFHN0IsU0FBQSxNQUFNLGNBQWMsSUFBSTtBQUFBLEVBQy9CO0FBQUE7QUFBQSxFQXpCQSxXQUFrQixVQUFrQjtBQUNsQyxVQUFNLFlBQ0gsV0FBQSxFQUFhLGFBQ1gsV0FDRyx1QkFBc0IsbUJBQ3RCLFNBQVMsZ0JBQWdCLGFBQWEsTUFBTSxPQUNsRCx1QkFBc0I7QUFHeEIsVUFBTSwwQkFBMEIsU0FBUyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3JELFdBQU8sdUJBQXNCLGtCQUFrQixTQUFTLHVCQUF1QixJQUMzRSwwQkFDQSx1QkFBc0I7QUFBQSxFQUM1QjtBQUFBO0FBQUEsRUFHQSxJQUFXLFVBQWtCO0FBQzNCLFdBQU8sdUJBQXNCO0FBQUEsRUFDL0I7QUFBQTtBQUFBLEVBVU8sWUFBWSxTQUEyQjtBQUd2QyxTQUFBLFVBQVUsUUFBUSxPQUFPO0FBQ3ZCLFdBQUE7QUFBQSxFQUNUO0FBQUEsRUFFTyxnQkFBc0I7QUFDM0IsUUFBSSxVQUFVO0FBQ1o7QUFBQSxJQUNGO0FBQ0ksUUFBQSxDQUFDLHVCQUFzQixXQUFXLE1BQU07QUFDMUMsNkJBQXNCLFVBQVc7QUFBQSxRQUMvQixTQUFTO0FBQUEsUUFDVCx1QkFBc0I7QUFBQSxNQUFBO0FBQUEsSUFFMUI7QUFFc0IsMkJBQUEsV0FBVyxJQUFJLElBQUk7QUFDckMsUUFBQSxLQUFLLHNCQUFzQixLQUFLLFNBQVM7QUFDdEMsV0FBQSxjQUFjLEtBQUssc0JBQXNCLE1BQVM7QUFBQSxJQUN6RDtBQUFBLEVBQ0Y7QUFBQSxFQUVPLG1CQUF5QjtBQUM5QixRQUFJLFVBQVU7QUFDWjtBQUFBLElBQ0Y7QUFDQSxTQUFLLG9CQUFvQixLQUFLO0FBQ1IsMkJBQUEsV0FBVyxPQUFPLElBQUk7QUFDeEMsUUFBQSxDQUFDLHVCQUFzQixXQUFXLE1BQU07QUFDMUMsNkJBQXNCLFVBQVc7SUFDbkM7QUFBQSxFQUNGO0FBQUEsRUFFUSxjQUFjLGdCQUFnQixNQUFZO0FBQ2hELFNBQUssVUFBVSxRQUFRLENBQUMsTUFBTSxFQUFHLENBQUE7QUFDakMsUUFBSSxlQUFlO0FBQ2pCLFdBQUssTUFBTTtJQUNiO0FBQUEsRUFDRjtBQUNGO0FBekZFLHVCQUF3QixtQkFBbUI7QUFDM0MsdUJBQXdCLG9CQUFvQixDQUFDLE1BQU0sTUFBTSxNQUFNLElBQUk7QUFHM0MsdUJBQUEsaUNBQWlCO0FBR3pDLHVCQUF3QixZQUFZLENBQUMsV0FDakMsSUFBSSxpQkFBaUIsQ0FBQyxjQUFjO0FBQzlCLE1BQUEsVUFBVSxDQUFDLEVBQUUsYUFBYSxTQUFTLGdCQUFnQixhQUFhLE1BQU0sR0FBRztBQUMzRSwyQkFBc0IsV0FBVyxRQUFRLENBQUMsTUFBTSxFQUFFLGVBQWU7QUFBQSxFQUNuRTtBQUNELENBQUEsSUFDRDtBQUNKLHVCQUF3QixrQkFBa0I7QUFBQSxFQUN4QyxpQkFBaUIsQ0FBQyxNQUFNO0FBQUEsRUFDeEIsbUJBQW1CO0FBQUE7QUFqQmhCLElBQU0sd0JBQU47QUNTQSxNQUFNLHVCQUFxRDtBQUFBLEVBR3pELFlBQ0csT0FDQSxvQkFBeUMsTUFDakQ7QUFGUSxTQUFBLFFBQUE7QUFDQSxTQUFBLG9CQUFBO0FBSk0sU0FBQSw0QkFBWTtBQXFCcEIsU0FBQSxxQkFBcUIsQ0FBQyxVQUF1QjtBQUM5QyxXQUFBLFdBQVcsTUFBTSxNQUF5QjtBQUFBLElBQUE7QUFoQjFDLFNBQUEsTUFBTSxjQUFjLElBQUk7QUFBQSxFQUMvQjtBQUFBLEVBRU8sZ0JBQXNCOztBQUUzQixTQUFLLFdBQVcsR0FBRyxLQUFLLE1BQU0saUJBQWtCLE1BQU0sQ0FBQztBQUN2RCxlQUFLLE1BQU0sZUFBWCxtQkFBdUIsaUJBQWlCLGNBQWMsS0FBSztBQUFBLEVBQzdEO0FBQUEsRUFFTyxtQkFBeUI7O0FBQzlCLGVBQUssTUFBTSxlQUFYLG1CQUF1QixvQkFBb0IsY0FBYyxLQUFLO0FBQUEsRUFDaEU7QUFBQSxFQVFRLGNBQWMsT0FBZ0M7O0FBQ3BELGVBQVcsUUFBUSxPQUFPO0FBQ2xCLFlBQUEsV0FBVyxLQUFLLFFBQVE7QUFFOUIsVUFBSSxLQUFLLGdCQUFnQixLQUFLLENBQUMsTUFBQTs7QUFBTSw0QkFBYSxPQUFLQyxNQUFBLEVBQUUsZ0JBQUYsZ0JBQUFBLElBQWU7QUFBQSxPQUFNLEdBQUc7QUFDeEUsYUFBQSxNQUFNLElBQUksUUFBUTtBQUFBLE1BQUEsT0FDbEI7QUFDQSxhQUFBLE1BQU0sT0FBTyxRQUFRO0FBQUEsTUFDNUI7QUFBQSxJQUNGO0FBRUEsVUFBTSxXQUFXLEtBQUssTUFBTSxhQUFhLGlCQUFpQjtBQUNwRCxVQUFBLGtCQUFrQixDQUFDLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBTyxFQUFBLEtBQUssR0FBRztBQUN2RCxRQUFJLENBQUMsaUJBQWlCO0FBQ2YsV0FBQSxNQUFNLGdCQUFnQixpQkFBaUI7QUFBQSxJQUFBLFdBQ25DLEtBQUssTUFBTSxhQUFhLGlCQUFpQixNQUFNLGlCQUFpQjtBQUNwRSxXQUFBLE1BQU0sYUFBYSxtQkFBbUIsZUFBZTtBQUFBLElBQzVEO0FBRUEsUUFBSSxvQkFBb0IsVUFBVTtBQUNoQyxpQkFBSyxzQkFBTDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7In0=
@@ -1,2 +1,5 @@
1
+ /**
2
+ * @deprecated use :dir() selector instead
3
+ */
1
4
  export declare const getDocumentWritingMode: () => string;
2
5
  //# sourceMappingURL=get-document-writing-mode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-document-writing-mode.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/dom/get-document-writing-mode.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,QAAO,MAC4B,CAAC"}
1
+ {"version":3,"file":"get-document-writing-mode.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/dom/get-document-writing-mode.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,sBAAsB,QAAO,MAC4B,CAAC"}
@@ -142,4 +142,4 @@ export {
142
142
  pageScrollDisabled,
143
143
  setOrRemoveAttribute
144
144
  };
145
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kb20vYnJlYWtwb2ludC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9maW5kLXJlZmVyZW5jZWQtZWxlbWVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9nZXQtZG9jdW1lbnQtd3JpdGluZy1tb2RlLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL2hvc3QtY29udGV4dC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9pbnB1dC1lbGVtZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3NldC1vci1yZW1vdmUtYXR0cmlidXRlLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3BsYXRmb3JtLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3Njcm9sbC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9zc3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tICdsaXQnO1xuXG5leHBvcnQgY29uc3QgYnJlYWtwb2ludHMgPSBbJ3plcm8nLCAnbWljcm8nLCAnc21hbGwnLCAnbWVkaXVtJywgJ3dpZGUnLCAnbGFyZ2UnLCAndWx0cmEnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJyZWFrcG9pbnQgPSAodHlwZW9mIGJyZWFrcG9pbnRzKVtudW1iZXJdO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBkb2N1bWVudCBtYXRjaGVzIGEgcGFydGljdWxhciBtZWRpYSBxdWVyeS5cbiAqIEl0IHdpbGwgcmVseSBvbiB0aGUgZ2xvYmFsIENTUyB2YXJpYWJsZXMgdG8gZGV0ZXJtaW5lIHRoZSB2YWx1ZSBvZiB0aGUgYnJlYWtwb2ludHMuXG4gKlxuICogQHBhcmFtIGZyb20gVGhlIGJyZWFrcG9pbnQgY29ycmVzcG9uZGluZyB0byB0aGUgYG1pbi13aWR0aGAgdmFsdWUgb2YgdGhlIG1lZGlhIHF1ZXJ5IChvcHRpb25hbCkuXG4gKiBAcGFyYW0gdG8gVGhlIGJyZWFrcG9pbnQgY29ycmVzcG9uZGluZyB0byB0aGUgYG1heC13aWR0aGAgdmFsdWUgb2YgdGhlIG1lZGlhIHF1ZXJ5IChvcHRpb25hbCkuXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB3aW5kb3cgbWF0Y2hlcyB0aGUgYnJlYWtwb2ludC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQnJlYWtwb2ludChcbiAgZnJvbT86IEJyZWFrcG9pbnQsXG4gIHRvPzogQnJlYWtwb2ludCxcbiAgcHJvcGVydGllcz86IHsgaW5jbHVkZU1heEJyZWFrcG9pbnQ6IGJvb2xlYW4gfSxcbik6IGJvb2xlYW4ge1xuICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAvLyBUT0RPOiBSZW1vdmUgYW5kIGRlY2lkZSBjYXNlIGJ5IGNhc2Ugd2hhdCBzaG91bGQgYmUgZG9uZSBvbiBjb25zdW1pbmcgZW5kXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcbiAgY29uc3QgYnJlYWtwb2ludE1pbiA9IGZyb20gPyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoYC0tc2JiLWJyZWFrcG9pbnQtJHtmcm9tfS1taW5gKSA6ICcnO1xuICBjb25zdCBicmVha3BvaW50TWF4ID0gdG9cbiAgICA/IGAke1xuICAgICAgICBwYXJzZUZsb2F0KFxuICAgICAgICAgIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgICAgIGAtLXNiYi1icmVha3BvaW50LSR7dG99LSR7cHJvcGVydGllcz8uaW5jbHVkZU1heEJyZWFrcG9pbnQgPyAnbWF4JyA6ICdtaW4nfWAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSAtIChwcm9wZXJ0aWVzPy5pbmNsdWRlTWF4QnJlYWtwb2ludCA/IDAgOiAwLjA2MjUpXG4gICAgICB9cmVtYFxuICAgIDogJyc7IC8vIHN1YnRyYWN0IDFweCAoMC4wNjI1cmVtKSBmcm9tIHRoZSBtYXgtd2lkdGggYnJlYWtwb2ludFxuXG4gIGNvbnN0IG1pbldpZHRoID0gYnJlYWtwb2ludE1pbiAmJiBgKG1pbi13aWR0aDogJHticmVha3BvaW50TWlufSlgO1xuICBjb25zdCBtYXhXaWR0aCA9IGJyZWFrcG9pbnRNYXggJiYgYChtYXgtd2lkdGg6ICR7YnJlYWtwb2ludE1heH0pYDtcbiAgY29uc3QgYW5kID0gYnJlYWtwb2ludE1pbiAmJiBicmVha3BvaW50TWF4ICYmICcgYW5kICc7XG5cbiAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKGAke21pbldpZHRofSR7YW5kfSR7bWF4V2lkdGh9YCkubWF0Y2hlcztcbn1cbiIsImltcG9ydCB7IGlzU2VydmVyIH0gZnJvbSAnbGl0JztcblxuLyoqXG4gKiAgQ2hlY2sgd2hldGhlciBpdCdzIGEgc3RyaW5nIG9yIGFuIEhUTUxFbGVtZW50LCBpZiBpdCdzIGEgc3RyaW5nIHF1ZXJpZXMgdGhlIGVsZW1lbnQgd2l0aCB0aGVcbiAqICBjb3JyZXNwb25kaW5nIGlkLlxuICogIEBwYXJhbSByZWZlcmVuY2UgZWl0aGVyIHRoZSB3YW50ZWQgaWQgb3IgdGhlIEhUTUxFbGVtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUmVmZXJlbmNlZEVsZW1lbnQ8VCBleHRlbmRzIEhUTUxFbGVtZW50ID0gSFRNTEVsZW1lbnQ+KFxuICByZWZlcmVuY2U6IHN0cmluZyB8IEhUTUxFbGVtZW50LFxuKTogVCB8IG51bGwge1xuICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcmVmZXJlbmNlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyZWZlcmVuY2UpIGFzIFQ7XG4gIH0gZWxzZSBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2Ygd2luZG93LkVsZW1lbnQpIHtcbiAgICByZXR1cm4gcmVmZXJlbmNlIGFzIFQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCJpbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbmV4cG9ydCBjb25zdCBnZXREb2N1bWVudFdyaXRpbmdNb2RlID0gKCk6IHN0cmluZyA9PlxuICAoIWlzU2VydmVyICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RpcicpKSB8fCAnbHRyJztcbiIsImltcG9ydCB7IGlzU2VydmVyIH0gZnJvbSAnbGl0JztcblxuLyoqXG4gKiBMb29rcyBmb3IgdGhlIGNsb3Nlc3QgZWxlbWVudCBtYXRjaGluZyB0aGUgZ2l2ZW4gc2VsZWN0b3Igc3RhcnRpbmcgZnJvbSB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqIFJldHVybnMgbnVsbCwgaWYgbm9uZSBvZiB0aGUgYW5jZXN0b3IgbWF0Y2guXG4gKlxuICogQHBhcmFtIHNlbGVjdG9yIFRoZSBzZWxlY3RvciB0byBtYXRjaCBhbmNlc3RvciBhZ2FpbnN0LlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGJhc2UgZWxlbWVudCBmcm9tIHdoaWNoIHRvIHN0YXJ0IHRoZSBzZWFyY2guXG4gKiBAcmV0dXJucyBUaGUgY2xvc2VzdCBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvciBvciBudWxsIGlmIG5vbmUgaXMgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBob3N0Q29udGV4dChzZWxlY3Rvcjogc3RyaW5nLCBlbGVtZW50OiBFbGVtZW50KTogRWxlbWVudCB8IG51bGwge1xuICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBTdGFydCB3aXRoIHBhcmVudCBlbGVtZW50IGluIG9yZGVyIHRvIGF2b2lkIGZpbmRpbmcgZWxlbWVudCBpdHNlbGZcbiAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCA/PyAoZWxlbWVudC5nZXRSb290Tm9kZSgpIGFzIFNoYWRvd1Jvb3QpLmhvc3Q7XG4gIHdoaWxlIChlbGVtZW50ICYmIChlbGVtZW50IGFzIGFueSkgIT09IGRvY3VtZW50ICYmIChlbGVtZW50IGFzIGFueSkgIT09IHdpbmRvdykge1xuICAgIGNvbnN0IG1hdGNoID0gZWxlbWVudC5jbG9zZXN0KHNlbGVjdG9yKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9XG5cbiAgICBlbGVtZW50ID0gKGVsZW1lbnQuZ2V0Um9vdE5vZGUoKSBhcyBTaGFkb3dSb290KS5ob3N0O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8vIEEgbGlzdCBvZiBlbGVtZW50cyB0aGF0IHNob3VsZCBub3QgYWxsb3cgYW5vdGhlciBhbmNob3Igb3IgYnV0dG9uIGVsZW1lbnQgaW5zaWRlIHRoZW0uXG4vLyBOZWVkcyB0byBiZSBleHRlbmRlZCBpZiBhZGRpdGlvbmFsIGVsZW1lbnRzIGZhbGwgaW50byB0aGlzIGNhdGVnb3J5LlxuZXhwb3J0IGNvbnN0IEFDVElPTl9FTEVNRU5UUyA9ICdhLGJ1dHRvbixzYmItdGVhc2VyLWhlcm8sc2JiLXRlYXNlcic7XG4iLCJpbXBvcnQgeyBmaW5kUmVmZXJlbmNlZEVsZW1lbnQgfSBmcm9tICcuL2ZpbmQtcmVmZXJlbmNlZC1lbGVtZW50LmpzJztcblxuLyoqXG4gKiBHaXZlbiBhbiBlbGVtZW50LCByZXR1cm5zIHRoZSByZWxhdGVkIGlucHV0IHJlZmVyZW5jZSwgaWYgaXQgZXhpc3RzIHJlc3BlY3RpbmcgZm9sbG93aW5nIHByaW9yaXR5LlxuICogMS4gSW5wdXQgZmllbGQgaW4gYHNiYi1mb3JtLWZpZWxkYCAoaWYgdHJpZ2dlciBpcyB1bmRlZmllbmQpXG4gKiAyLiBJbnB1dCByZWZlcmVuY2VkIGJ5IGlkICh0cmlnZ2VyIGlzIHN0cmluZylcbiAqIDMuIElucHV0IHJlZmVyZW5jZWQgZGlyZWN0bHkgKHRyaWdnZXIgaXMgSFRNTEVsZW1lbnQpXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgc3RhcnRpbmcgU2JiRGF0ZXBpY2tlckVsZW1lbnQgZWxlbWVudC5cbiAqIEBwYXJhbSB0cmlnZ2VyIFRoZSBpZCBvciB0aGUgcmVmZXJlbmNlIG9mIHRoZSBpbnB1dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRJbnB1dChcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIHRyaWdnZXI/OiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwsXG4pOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gIGlmICghdHJpZ2dlcikge1xuICAgIGNvbnN0IHBhcmVudCA9IGVsZW1lbnQuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpO1xuICAgIHJldHVybiBwYXJlbnQ/LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykgYXMgSFRNTElucHV0RWxlbWVudCB8IG51bGw7XG4gIH1cblxuICByZXR1cm4gZmluZFJlZmVyZW5jZWRFbGVtZW50PEhUTUxJbnB1dEVsZW1lbnQ+KHRyaWdnZXIpO1xufVxuIiwiLyoqXG4gKiBTZXQgdGhlIGF0dHJpYnV0ZSBvbmx5IGlmIHZhbHVlIGlzIG5vdCAnZmFsc2UnLCBvdGhlcndpc2UgcmVtb3ZlIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRoYXQgd2lsbCBoYXZlIHRoZSBhdHRyaWJ1dGVcbiAqIEBwYXJhbSBhdHRyaWJ1dGUgVGhlIGF0dHJpYnV0ZSBuYW1lXG4gKiBAcGFyYW0gdmFsdWUgVGhlIGF0dHJpYnV0ZSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0T3JSZW1vdmVBdHRyaWJ1dGUoZWxlbWVudDogSFRNTEVsZW1lbnQsIGF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZT86IGFueSk6IHZvaWQge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgfSBlbHNlIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgfVxufVxuIiwiLy8gVGhpcyBmaWxlIGlzIGZyZWVseSBpbnNwaXJlZCBieSBBbmd1bGFyIE1hdGVyaWFsIHNvbHV0aW9uLlxuLy8gUmVmZXJlbmNlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFpbi9zcmMvY2RrL3BsYXRmb3JtL3BsYXRmb3JtLnRzXG5pbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbi8vIFdoZXRoZXIgdGhlIGN1cnJlbnQgcGxhdGZvcm0gc3VwcG9ydHMgdGhlIFY4IEJyZWFrIEl0ZXJhdG9yLiBUaGUgVjggY2hlY2tcbi8vIGlzIG5lY2Vzc2FyeSB0byBkZXRlY3QgYWxsIEJsaW5rIGJhc2VkIGJyb3dzZXJzLlxubGV0IGhhc1Y4QnJlYWtJdGVyYXRvcjogYm9vbGVhbjtcblxuLy8gV2UgbmVlZCBhIHRyeS9jYXRjaCBhcm91bmQgdGhlIHJlZmVyZW5jZSB0byBgSW50bGAsIGJlY2F1c2UgYWNjZXNzaW5nIGl0IGluIHNvbWUgY2FzZXMgY2FuXG4vLyBjYXVzZSBJRSB0byB0aHJvdy4gVGhlc2UgY2FzZXMgYXJlIHRpZWQgdG8gcGFydGljdWxhciB2ZXJzaW9ucyBvZiBXaW5kb3dzIGFuZCBjYW4gaGFwcGVuIGlmXG4vLyB0aGUgY29uc3VtZXIgaXMgcHJvdmlkaW5nIGEgcG9seWZpbGxlZCBgTWFwYC4gU2VlOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9DaGFrcmFDb3JlL2lzc3Vlcy8zMTg5XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2lzc3Vlcy8xNTY4N1xudHJ5IHtcbiAgaGFzVjhCcmVha0l0ZXJhdG9yID0gdHlwZW9mIEludGwgIT09ICd1bmRlZmluZWQnICYmIChJbnRsIGFzIGFueSkudjhCcmVha0l0ZXJhdG9yO1xufSBjYXRjaCB7XG4gIGhhc1Y4QnJlYWtJdGVyYXRvciA9IGZhbHNlO1xufVxuXG4vKiogV2hldGhlciB0aGUgY3VycmVudCBicm93c2VyIGlzIE1pY3Jvc29mdCBFZGdlLiAqL1xuZXhwb3J0IGNvbnN0IGlzRWRnZSA9ICFpc1NlcnZlciAmJiAvKGVkZ2UpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGVuZ2luZSBpcyBNaWNyb3NvZnQgVHJpZGVudC4gKi9cbmV4cG9ydCBjb25zdCBpc1RyaWRlbnQgPSAhaXNTZXJ2ZXIgJiYgLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLy8gRWRnZUhUTUwgYW5kIFRyaWRlbnQgbW9jayBCbGluayBzcGVjaWZpYyB0aGluZ3MgYW5kIG5lZWQgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGlzIGNoZWNrLlxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGVuZ2luZSBpcyBCbGluay4gKi9cbmV4cG9ydCBjb25zdCBpc0JsaW5rID1cbiAgIWlzU2VydmVyICYmXG4gICEhKCh3aW5kb3cgYXMgYW55KS5jaHJvbWUgfHwgaGFzVjhCcmVha0l0ZXJhdG9yKSAmJlxuICB0eXBlb2YgQ1NTICE9PSAndW5kZWZpbmVkJyAmJlxuICAhaXNFZGdlICYmXG4gICFpc1RyaWRlbnQ7XG5cbi8vIFdlYmtpdCBpcyBwYXJ0IG9mIHRoZSB1c2VyQWdlbnQgaW4gRWRnZUhUTUwsIEJsaW5rIGFuZCBUcmlkZW50LiBUaGVyZWZvcmUsIHdlIG5lZWQgdG9cbi8vIGVuc3VyZSB0aGF0IFdlYmtpdCBydW5zIHN0YW5kYWxvbmUgYW5kIGlzIG5vdCB1c2VkIGFzIGFub3RoZXIgZW5naW5lJ3MgYmFzZS5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHJlbmRlcmluZyBlbmdpbmUgaXMgV2ViS2l0LiAqL1xuZXhwb3J0IGNvbnN0IGlzV2Via2l0ID1cbiAgIWlzU2VydmVyICYmIC9BcHBsZVdlYktpdC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgIWlzQmxpbmsgJiYgIWlzRWRnZSAmJiAhaXNUcmlkZW50O1xuXG4vKiogV2hldGhlciB0aGUgY3VycmVudCBwbGF0Zm9ybSBpcyBBcHBsZSBpT1MuICovXG5leHBvcnQgY29uc3QgaXNJT1MgPVxuICAhaXNTZXJ2ZXIgJiYgL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgISgnTVNTdHJlYW0nIGluIHdpbmRvdyk7XG5cbi8vIEl0J3MgZGlmZmljdWx0IHRvIGRldGVjdCB0aGUgcGxhaW4gR2Vja28gZW5naW5lLCBiZWNhdXNlIG1vc3Qgb2YgdGhlIGJyb3dzZXJzIGlkZW50aWZ5XG4vLyB0aGVtIHNlbGYgYXMgR2Vja28tbGlrZSBicm93c2VycyBhbmQgbW9kaWZ5IHRoZSB1c2VyQWdlbnQncyBhY2NvcmRpbmcgdG8gdGhhdC5cbi8vIFNpbmNlIHdlIG9ubHkgY292ZXIgb25lIGV4cGxpY2l0IEZpcmVmb3ggY2FzZSwgd2UgY2FuIHNpbXBseSBjaGVjayBmb3IgRmlyZWZveFxuLy8gaW5zdGVhZCBvZiBoYXZpbmcgYW4gdW5zdGFibGUgY2hlY2sgZm9yIEdlY2tvLlxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgYnJvd3NlciBpcyBGaXJlZm94LiAqL1xuZXhwb3J0IGNvbnN0IGlzRmlyZWZveCA9ICFpc1NlcnZlciAmJiAvKGZpcmVmb3h8bWluZWZpZWxkKS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHBsYXRmb3JtIGlzIEFuZHJvaWQuICovXG4vLyBUcmlkZW50IG9uIG1vYmlsZSBhZGRzIHRoZSBhbmRyb2lkIHBsYXRmb3JtIHRvIHRoZSB1c2VyQWdlbnQgdG8gdHJpY2sgZGV0ZWN0aW9ucy5cbmV4cG9ydCBjb25zdCBpc0FuZHJvaWQgPSAhaXNTZXJ2ZXIgJiYgL2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmICFpc1RyaWRlbnQ7XG5cbi8vIFNhZmFyaSBicm93c2VycyB3aWxsIGluY2x1ZGUgdGhlIFNhZmFyaSBrZXl3b3JkIGluIHRoZWlyIHVzZXJBZ2VudC4gU29tZSBicm93c2VycyBtYXkgZmFrZVxuLy8gdGhpcyBhbmQganVzdCBwbGFjZSB0aGUgU2FmYXJpIGtleXdvcmQgaW4gdGhlIHVzZXJBZ2VudC4gVG8gYmUgbW9yZSBzYWZlIGFib3V0IFNhZmFyaSBldmVyeVxuLy8gU2FmYXJpIGJyb3dzZXIgc2hvdWxkIGFsc28gdXNlIFdlYmtpdCBhcyBpdHMgbGF5b3V0IGVuZ2luZS5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IGJyb3dzZXIgaXMgU2FmYXJpLiAqL1xuZXhwb3J0IGNvbnN0IGlzU2FmYXJpID0gIWlzU2VydmVyICYmIC9zYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIGlzV2Via2l0O1xuXG4vKipcbiAqIFdlIGp1c3QgY2hlY2sgZm9yIHRoZSBibGluayBlbmdpbmUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0Nocm9taXVtID0gaXNCbGluaztcblxuLyoqIFdoZXRoZXIgdGhlIGFwcGxpY2F0aW9uIGlzIGJlaW5nIHJlbmRlcmVkIGluIGEgTmV4dC5qcyBlbnZpcm9ubWVudC4gKi9cbmV4cG9ydCBjb25zdCBpc05leHRqcyA9ICgpOiBib29sZWFuID0+ICEhKGdsb2JhbFRoaXMgYXMgeyBuZXh0Pzogb2JqZWN0IH0pLm5leHQ7XG4iLCJleHBvcnQgZnVuY3Rpb24gcGFnZVNjcm9sbERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLXNjcm9sbC1kaXNhYmxlZCcpO1xufVxuXG4vKipcbiAqIEhhbmRsZSB0aGUgcGFnZSBzY3JvbGwsIGFsbG93aW5nIHRvIGRpc2FibGUvZW5hYmxlIHRoZSB3aW5kb3cgc2Nyb2xsIGF2b2lkaW5nIGEgcG90ZW50aWFsXG4gKiBjb250ZW50IHNoaWZ0IGNhdXNlZCBieSB0aGUgZGlzYXBwZWFyYW5jZS9hcHBlYXJhbmNlIG9mIHRoZSBzY3JvbGxiYXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJTY3JvbGxIYW5kbGVyIHtcbiAgcHJpdmF0ZSBfcG9zaXRpb24hOiBzdHJpbmc7XG4gIHByaXZhdGUgX292ZXJmbG93ITogc3RyaW5nO1xuICBwcml2YXRlIF9tYXJnaW5JbmxpbmVFbmQhOiBzdHJpbmc7XG5cbiAgcHVibGljIGRpc2FibGVTY3JvbGwoKTogdm9pZCB7XG4gICAgaWYgKHBhZ2VTY3JvbGxEaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2F2ZSBhbnkgcHJlLWV4aXN0aW5nIHN0eWxlcyB0byByZWFwcGx5IHRoZW0gdG8gdGhlIGJvZHkgd2hlbiBlbmFibGluZyB0aGUgc2Nyb2xsIGFnYWluLlxuICAgIHRoaXMuX3Bvc2l0aW9uID0gZG9jdW1lbnQuYm9keS5zdHlsZS5wb3NpdGlvbjtcbiAgICB0aGlzLl9vdmVyZmxvdyA9IGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c7XG4gICAgdGhpcy5fbWFyZ2luSW5saW5lRW5kID0gZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW5JbmxpbmVFbmQ7XG5cbiAgICBjb25zdCBzY3JvbGxiYXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luSW5saW5lRW5kID0gYCR7c2Nyb2xsYmFyV2lkdGh9cHhgO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLXNjcm9sbGJhci13aWR0aCcsIGAke3Njcm9sbGJhcldpZHRofXB4YCk7XG5cbiAgICBkb2N1bWVudC5ib2R5LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zYmItc2Nyb2xsLWRpc2FibGVkJywgdHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICghcGFnZVNjcm9sbERpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZXZlcnQgYm9keSBpbmxpbmUgc3R5bGVzLlxuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucG9zaXRpb24gPSB0aGlzLl9wb3NpdGlvbiB8fCAnJztcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gdGhpcy5fb3ZlcmZsb3cgfHwgJyc7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW5JbmxpbmVFbmQgPSB0aGlzLl9tYXJnaW5JbmxpbmVFbmQgfHwgJyc7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItc2Nyb2xsYmFyLXdpZHRoJywgJzAnKTtcblxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1zY3JvbGwtZGlzYWJsZWQnKTtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcblxuY29uc3QgbG9jYWxOYW1lQ2FjaGUgPSBuZXcgTWFwPHVua25vd24sIHN0cmluZz4oKTtcblxuLyoqXG4gKiBJbiBTU1IgdGhlIGxvY2FsL3RhZyBuYW1lIGlzIG5vdCBhdmFpbGFibGUgb24gdGhlIGNsYXNzIGluc3RhbmNlLCBidXQgaXQgaXMgYXZhaWxhYmxlXG4gKiBpbiB0aGUgc2hpbSBjdXN0b21FbGVtZW50cyByZWdpc3RyeS5cbiAqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbGl0L2xpdC9ibG9iL21haW4vcGFja2FnZXMvbGFicy9zc3ItZG9tLXNoaW0vc3JjLnRzIChTZWUgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5U2hpbSlcbiAqXG4gKiBDYW4gYmUgcmVtb3ZlZCBvbmNlIGh0dHBzOi8vZ2l0aHViLmNvbS9saXQvbGl0L3B1bGwvNDU1MyBpcyBtZXJnZWQvcmVsZWFzZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbE5hbWUoZWxlbWVudDogTGl0RWxlbWVudCk6IHN0cmluZyB7XG4gIGlmIChsb2NhbE5hbWVDYWNoZS5oYXMoZWxlbWVudC5jb25zdHJ1Y3RvcikpIHtcbiAgICByZXR1cm4gbG9jYWxOYW1lQ2FjaGUuZ2V0KGVsZW1lbnQuY29uc3RydWN0b3IpITtcbiAgfVxuXG4gIGNvbnN0IGRlZmluaXRpb25zID0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgIChjdXN0b21FbGVtZW50cyBhcyB1bmtub3duIGFzIHsgX19kZWZpbml0aW9uczogTWFwPHN0cmluZywgeyBjdG9yOiB1bmtub3duIH0+IH0pLl9fZGVmaW5pdGlvbnM7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGRlZmluaXRpb25zKSB7XG4gICAgaWYgKHZhbHVlLmN0b3IgPT09IGVsZW1lbnQuY29uc3RydWN0b3IpIHtcbiAgICAgIGxvY2FsTmFtZUNhY2hlLnNldChlbGVtZW50LmNvbnN0cnVjdG9yLCBrZXkpO1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBHaXZlbiBlbGVtZW50ICR7ZWxlbWVudC5jb25zdHJ1Y3Rvci5uYW1lfSBoYXMgbm90IGJlZW4gcmVnaXN0ZXJlZCB5ZXQuYCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVhLE1BQUEsY0FBYyxDQUFDLFFBQVEsU0FBUyxTQUFTLFVBQVUsUUFBUSxTQUFTLE9BQU87QUFXeEUsU0FBQSxhQUNkLE1BQ0EsSUFDQSxZQUNTO0FBQ1QsTUFBSSxVQUFVO0FBRUwsV0FBQTtBQUFBLEVBQ1Q7QUFFTSxRQUFBLGdCQUFnQixpQkFBaUIsU0FBUyxlQUFlO0FBQy9ELFFBQU0sZ0JBQWdCLE9BQU8sY0FBYyxpQkFBaUIsb0JBQW9C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
145
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kb20vYnJlYWtwb2ludC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9maW5kLXJlZmVyZW5jZWQtZWxlbWVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9nZXQtZG9jdW1lbnQtd3JpdGluZy1tb2RlLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL2hvc3QtY29udGV4dC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9pbnB1dC1lbGVtZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3NldC1vci1yZW1vdmUtYXR0cmlidXRlLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3BsYXRmb3JtLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3Njcm9sbC50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RvbS9zc3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tICdsaXQnO1xuXG5leHBvcnQgY29uc3QgYnJlYWtwb2ludHMgPSBbJ3plcm8nLCAnbWljcm8nLCAnc21hbGwnLCAnbWVkaXVtJywgJ3dpZGUnLCAnbGFyZ2UnLCAndWx0cmEnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJyZWFrcG9pbnQgPSAodHlwZW9mIGJyZWFrcG9pbnRzKVtudW1iZXJdO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBkb2N1bWVudCBtYXRjaGVzIGEgcGFydGljdWxhciBtZWRpYSBxdWVyeS5cbiAqIEl0IHdpbGwgcmVseSBvbiB0aGUgZ2xvYmFsIENTUyB2YXJpYWJsZXMgdG8gZGV0ZXJtaW5lIHRoZSB2YWx1ZSBvZiB0aGUgYnJlYWtwb2ludHMuXG4gKlxuICogQHBhcmFtIGZyb20gVGhlIGJyZWFrcG9pbnQgY29ycmVzcG9uZGluZyB0byB0aGUgYG1pbi13aWR0aGAgdmFsdWUgb2YgdGhlIG1lZGlhIHF1ZXJ5IChvcHRpb25hbCkuXG4gKiBAcGFyYW0gdG8gVGhlIGJyZWFrcG9pbnQgY29ycmVzcG9uZGluZyB0byB0aGUgYG1heC13aWR0aGAgdmFsdWUgb2YgdGhlIG1lZGlhIHF1ZXJ5IChvcHRpb25hbCkuXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB3aW5kb3cgbWF0Y2hlcyB0aGUgYnJlYWtwb2ludC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQnJlYWtwb2ludChcbiAgZnJvbT86IEJyZWFrcG9pbnQsXG4gIHRvPzogQnJlYWtwb2ludCxcbiAgcHJvcGVydGllcz86IHsgaW5jbHVkZU1heEJyZWFrcG9pbnQ6IGJvb2xlYW4gfSxcbik6IGJvb2xlYW4ge1xuICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAvLyBUT0RPOiBSZW1vdmUgYW5kIGRlY2lkZSBjYXNlIGJ5IGNhc2Ugd2hhdCBzaG91bGQgYmUgZG9uZSBvbiBjb25zdW1pbmcgZW5kXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcbiAgY29uc3QgYnJlYWtwb2ludE1pbiA9IGZyb20gPyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoYC0tc2JiLWJyZWFrcG9pbnQtJHtmcm9tfS1taW5gKSA6ICcnO1xuICBjb25zdCBicmVha3BvaW50TWF4ID0gdG9cbiAgICA/IGAke1xuICAgICAgICBwYXJzZUZsb2F0KFxuICAgICAgICAgIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgICAgIGAtLXNiYi1icmVha3BvaW50LSR7dG99LSR7cHJvcGVydGllcz8uaW5jbHVkZU1heEJyZWFrcG9pbnQgPyAnbWF4JyA6ICdtaW4nfWAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSAtIChwcm9wZXJ0aWVzPy5pbmNsdWRlTWF4QnJlYWtwb2ludCA/IDAgOiAwLjA2MjUpXG4gICAgICB9cmVtYFxuICAgIDogJyc7IC8vIHN1YnRyYWN0IDFweCAoMC4wNjI1cmVtKSBmcm9tIHRoZSBtYXgtd2lkdGggYnJlYWtwb2ludFxuXG4gIGNvbnN0IG1pbldpZHRoID0gYnJlYWtwb2ludE1pbiAmJiBgKG1pbi13aWR0aDogJHticmVha3BvaW50TWlufSlgO1xuICBjb25zdCBtYXhXaWR0aCA9IGJyZWFrcG9pbnRNYXggJiYgYChtYXgtd2lkdGg6ICR7YnJlYWtwb2ludE1heH0pYDtcbiAgY29uc3QgYW5kID0gYnJlYWtwb2ludE1pbiAmJiBicmVha3BvaW50TWF4ICYmICcgYW5kICc7XG5cbiAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKGAke21pbldpZHRofSR7YW5kfSR7bWF4V2lkdGh9YCkubWF0Y2hlcztcbn1cbiIsImltcG9ydCB7IGlzU2VydmVyIH0gZnJvbSAnbGl0JztcblxuLyoqXG4gKiAgQ2hlY2sgd2hldGhlciBpdCdzIGEgc3RyaW5nIG9yIGFuIEhUTUxFbGVtZW50LCBpZiBpdCdzIGEgc3RyaW5nIHF1ZXJpZXMgdGhlIGVsZW1lbnQgd2l0aCB0aGVcbiAqICBjb3JyZXNwb25kaW5nIGlkLlxuICogIEBwYXJhbSByZWZlcmVuY2UgZWl0aGVyIHRoZSB3YW50ZWQgaWQgb3IgdGhlIEhUTUxFbGVtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUmVmZXJlbmNlZEVsZW1lbnQ8VCBleHRlbmRzIEhUTUxFbGVtZW50ID0gSFRNTEVsZW1lbnQ+KFxuICByZWZlcmVuY2U6IHN0cmluZyB8IEhUTUxFbGVtZW50LFxuKTogVCB8IG51bGwge1xuICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcmVmZXJlbmNlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyZWZlcmVuY2UpIGFzIFQ7XG4gIH0gZWxzZSBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2Ygd2luZG93LkVsZW1lbnQpIHtcbiAgICByZXR1cm4gcmVmZXJlbmNlIGFzIFQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCJpbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIDpkaXIoKSBzZWxlY3RvciBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREb2N1bWVudFdyaXRpbmdNb2RlID0gKCk6IHN0cmluZyA9PlxuICAoIWlzU2VydmVyICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RpcicpKSB8fCAnbHRyJztcbiIsImltcG9ydCB7IGlzU2VydmVyIH0gZnJvbSAnbGl0JztcblxuLyoqXG4gKiBMb29rcyBmb3IgdGhlIGNsb3Nlc3QgZWxlbWVudCBtYXRjaGluZyB0aGUgZ2l2ZW4gc2VsZWN0b3Igc3RhcnRpbmcgZnJvbSB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqIFJldHVybnMgbnVsbCwgaWYgbm9uZSBvZiB0aGUgYW5jZXN0b3IgbWF0Y2guXG4gKlxuICogQHBhcmFtIHNlbGVjdG9yIFRoZSBzZWxlY3RvciB0byBtYXRjaCBhbmNlc3RvciBhZ2FpbnN0LlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGJhc2UgZWxlbWVudCBmcm9tIHdoaWNoIHRvIHN0YXJ0IHRoZSBzZWFyY2guXG4gKiBAcmV0dXJucyBUaGUgY2xvc2VzdCBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvciBvciBudWxsIGlmIG5vbmUgaXMgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBob3N0Q29udGV4dChzZWxlY3Rvcjogc3RyaW5nLCBlbGVtZW50OiBFbGVtZW50KTogRWxlbWVudCB8IG51bGwge1xuICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBTdGFydCB3aXRoIHBhcmVudCBlbGVtZW50IGluIG9yZGVyIHRvIGF2b2lkIGZpbmRpbmcgZWxlbWVudCBpdHNlbGZcbiAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCA/PyAoZWxlbWVudC5nZXRSb290Tm9kZSgpIGFzIFNoYWRvd1Jvb3QpLmhvc3Q7XG4gIHdoaWxlIChlbGVtZW50ICYmIChlbGVtZW50IGFzIGFueSkgIT09IGRvY3VtZW50ICYmIChlbGVtZW50IGFzIGFueSkgIT09IHdpbmRvdykge1xuICAgIGNvbnN0IG1hdGNoID0gZWxlbWVudC5jbG9zZXN0KHNlbGVjdG9yKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9XG5cbiAgICBlbGVtZW50ID0gKGVsZW1lbnQuZ2V0Um9vdE5vZGUoKSBhcyBTaGFkb3dSb290KS5ob3N0O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8vIEEgbGlzdCBvZiBlbGVtZW50cyB0aGF0IHNob3VsZCBub3QgYWxsb3cgYW5vdGhlciBhbmNob3Igb3IgYnV0dG9uIGVsZW1lbnQgaW5zaWRlIHRoZW0uXG4vLyBOZWVkcyB0byBiZSBleHRlbmRlZCBpZiBhZGRpdGlvbmFsIGVsZW1lbnRzIGZhbGwgaW50byB0aGlzIGNhdGVnb3J5LlxuZXhwb3J0IGNvbnN0IEFDVElPTl9FTEVNRU5UUyA9ICdhLGJ1dHRvbixzYmItdGVhc2VyLWhlcm8sc2JiLXRlYXNlcic7XG4iLCJpbXBvcnQgeyBmaW5kUmVmZXJlbmNlZEVsZW1lbnQgfSBmcm9tICcuL2ZpbmQtcmVmZXJlbmNlZC1lbGVtZW50LmpzJztcblxuLyoqXG4gKiBHaXZlbiBhbiBlbGVtZW50LCByZXR1cm5zIHRoZSByZWxhdGVkIGlucHV0IHJlZmVyZW5jZSwgaWYgaXQgZXhpc3RzIHJlc3BlY3RpbmcgZm9sbG93aW5nIHByaW9yaXR5LlxuICogMS4gSW5wdXQgZmllbGQgaW4gYHNiYi1mb3JtLWZpZWxkYCAoaWYgdHJpZ2dlciBpcyB1bmRlZmllbmQpXG4gKiAyLiBJbnB1dCByZWZlcmVuY2VkIGJ5IGlkICh0cmlnZ2VyIGlzIHN0cmluZylcbiAqIDMuIElucHV0IHJlZmVyZW5jZWQgZGlyZWN0bHkgKHRyaWdnZXIgaXMgSFRNTEVsZW1lbnQpXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgc3RhcnRpbmcgU2JiRGF0ZXBpY2tlckVsZW1lbnQgZWxlbWVudC5cbiAqIEBwYXJhbSB0cmlnZ2VyIFRoZSBpZCBvciB0aGUgcmVmZXJlbmNlIG9mIHRoZSBpbnB1dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRJbnB1dChcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIHRyaWdnZXI/OiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwsXG4pOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gIGlmICghdHJpZ2dlcikge1xuICAgIGNvbnN0IHBhcmVudCA9IGVsZW1lbnQuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpO1xuICAgIHJldHVybiBwYXJlbnQ/LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykgYXMgSFRNTElucHV0RWxlbWVudCB8IG51bGw7XG4gIH1cblxuICByZXR1cm4gZmluZFJlZmVyZW5jZWRFbGVtZW50PEhUTUxJbnB1dEVsZW1lbnQ+KHRyaWdnZXIpO1xufVxuIiwiLyoqXG4gKiBTZXQgdGhlIGF0dHJpYnV0ZSBvbmx5IGlmIHZhbHVlIGlzIG5vdCAnZmFsc2UnLCBvdGhlcndpc2UgcmVtb3ZlIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRoYXQgd2lsbCBoYXZlIHRoZSBhdHRyaWJ1dGVcbiAqIEBwYXJhbSBhdHRyaWJ1dGUgVGhlIGF0dHJpYnV0ZSBuYW1lXG4gKiBAcGFyYW0gdmFsdWUgVGhlIGF0dHJpYnV0ZSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0T3JSZW1vdmVBdHRyaWJ1dGUoZWxlbWVudDogSFRNTEVsZW1lbnQsIGF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZT86IGFueSk6IHZvaWQge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgfSBlbHNlIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgfVxufVxuIiwiLy8gVGhpcyBmaWxlIGlzIGZyZWVseSBpbnNwaXJlZCBieSBBbmd1bGFyIE1hdGVyaWFsIHNvbHV0aW9uLlxuLy8gUmVmZXJlbmNlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFpbi9zcmMvY2RrL3BsYXRmb3JtL3BsYXRmb3JtLnRzXG5pbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbi8vIFdoZXRoZXIgdGhlIGN1cnJlbnQgcGxhdGZvcm0gc3VwcG9ydHMgdGhlIFY4IEJyZWFrIEl0ZXJhdG9yLiBUaGUgVjggY2hlY2tcbi8vIGlzIG5lY2Vzc2FyeSB0byBkZXRlY3QgYWxsIEJsaW5rIGJhc2VkIGJyb3dzZXJzLlxubGV0IGhhc1Y4QnJlYWtJdGVyYXRvcjogYm9vbGVhbjtcblxuLy8gV2UgbmVlZCBhIHRyeS9jYXRjaCBhcm91bmQgdGhlIHJlZmVyZW5jZSB0byBgSW50bGAsIGJlY2F1c2UgYWNjZXNzaW5nIGl0IGluIHNvbWUgY2FzZXMgY2FuXG4vLyBjYXVzZSBJRSB0byB0aHJvdy4gVGhlc2UgY2FzZXMgYXJlIHRpZWQgdG8gcGFydGljdWxhciB2ZXJzaW9ucyBvZiBXaW5kb3dzIGFuZCBjYW4gaGFwcGVuIGlmXG4vLyB0aGUgY29uc3VtZXIgaXMgcHJvdmlkaW5nIGEgcG9seWZpbGxlZCBgTWFwYC4gU2VlOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9DaGFrcmFDb3JlL2lzc3Vlcy8zMTg5XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2lzc3Vlcy8xNTY4N1xudHJ5IHtcbiAgaGFzVjhCcmVha0l0ZXJhdG9yID0gdHlwZW9mIEludGwgIT09ICd1bmRlZmluZWQnICYmIChJbnRsIGFzIGFueSkudjhCcmVha0l0ZXJhdG9yO1xufSBjYXRjaCB7XG4gIGhhc1Y4QnJlYWtJdGVyYXRvciA9IGZhbHNlO1xufVxuXG4vKiogV2hldGhlciB0aGUgY3VycmVudCBicm93c2VyIGlzIE1pY3Jvc29mdCBFZGdlLiAqL1xuZXhwb3J0IGNvbnN0IGlzRWRnZSA9ICFpc1NlcnZlciAmJiAvKGVkZ2UpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGVuZ2luZSBpcyBNaWNyb3NvZnQgVHJpZGVudC4gKi9cbmV4cG9ydCBjb25zdCBpc1RyaWRlbnQgPSAhaXNTZXJ2ZXIgJiYgLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLy8gRWRnZUhUTUwgYW5kIFRyaWRlbnQgbW9jayBCbGluayBzcGVjaWZpYyB0aGluZ3MgYW5kIG5lZWQgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGlzIGNoZWNrLlxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGVuZ2luZSBpcyBCbGluay4gKi9cbmV4cG9ydCBjb25zdCBpc0JsaW5rID1cbiAgIWlzU2VydmVyICYmXG4gICEhKCh3aW5kb3cgYXMgYW55KS5jaHJvbWUgfHwgaGFzVjhCcmVha0l0ZXJhdG9yKSAmJlxuICB0eXBlb2YgQ1NTICE9PSAndW5kZWZpbmVkJyAmJlxuICAhaXNFZGdlICYmXG4gICFpc1RyaWRlbnQ7XG5cbi8vIFdlYmtpdCBpcyBwYXJ0IG9mIHRoZSB1c2VyQWdlbnQgaW4gRWRnZUhUTUwsIEJsaW5rIGFuZCBUcmlkZW50LiBUaGVyZWZvcmUsIHdlIG5lZWQgdG9cbi8vIGVuc3VyZSB0aGF0IFdlYmtpdCBydW5zIHN0YW5kYWxvbmUgYW5kIGlzIG5vdCB1c2VkIGFzIGFub3RoZXIgZW5naW5lJ3MgYmFzZS5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHJlbmRlcmluZyBlbmdpbmUgaXMgV2ViS2l0LiAqL1xuZXhwb3J0IGNvbnN0IGlzV2Via2l0ID1cbiAgIWlzU2VydmVyICYmIC9BcHBsZVdlYktpdC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgIWlzQmxpbmsgJiYgIWlzRWRnZSAmJiAhaXNUcmlkZW50O1xuXG4vKiogV2hldGhlciB0aGUgY3VycmVudCBwbGF0Zm9ybSBpcyBBcHBsZSBpT1MuICovXG5leHBvcnQgY29uc3QgaXNJT1MgPVxuICAhaXNTZXJ2ZXIgJiYgL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgISgnTVNTdHJlYW0nIGluIHdpbmRvdyk7XG5cbi8vIEl0J3MgZGlmZmljdWx0IHRvIGRldGVjdCB0aGUgcGxhaW4gR2Vja28gZW5naW5lLCBiZWNhdXNlIG1vc3Qgb2YgdGhlIGJyb3dzZXJzIGlkZW50aWZ5XG4vLyB0aGVtIHNlbGYgYXMgR2Vja28tbGlrZSBicm93c2VycyBhbmQgbW9kaWZ5IHRoZSB1c2VyQWdlbnQncyBhY2NvcmRpbmcgdG8gdGhhdC5cbi8vIFNpbmNlIHdlIG9ubHkgY292ZXIgb25lIGV4cGxpY2l0IEZpcmVmb3ggY2FzZSwgd2UgY2FuIHNpbXBseSBjaGVjayBmb3IgRmlyZWZveFxuLy8gaW5zdGVhZCBvZiBoYXZpbmcgYW4gdW5zdGFibGUgY2hlY2sgZm9yIEdlY2tvLlxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgYnJvd3NlciBpcyBGaXJlZm94LiAqL1xuZXhwb3J0IGNvbnN0IGlzRmlyZWZveCA9ICFpc1NlcnZlciAmJiAvKGZpcmVmb3h8bWluZWZpZWxkKS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHBsYXRmb3JtIGlzIEFuZHJvaWQuICovXG4vLyBUcmlkZW50IG9uIG1vYmlsZSBhZGRzIHRoZSBhbmRyb2lkIHBsYXRmb3JtIHRvIHRoZSB1c2VyQWdlbnQgdG8gdHJpY2sgZGV0ZWN0aW9ucy5cbmV4cG9ydCBjb25zdCBpc0FuZHJvaWQgPSAhaXNTZXJ2ZXIgJiYgL2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmICFpc1RyaWRlbnQ7XG5cbi8vIFNhZmFyaSBicm93c2VycyB3aWxsIGluY2x1ZGUgdGhlIFNhZmFyaSBrZXl3b3JkIGluIHRoZWlyIHVzZXJBZ2VudC4gU29tZSBicm93c2VycyBtYXkgZmFrZVxuLy8gdGhpcyBhbmQganVzdCBwbGFjZSB0aGUgU2FmYXJpIGtleXdvcmQgaW4gdGhlIHVzZXJBZ2VudC4gVG8gYmUgbW9yZSBzYWZlIGFib3V0IFNhZmFyaSBldmVyeVxuLy8gU2FmYXJpIGJyb3dzZXIgc2hvdWxkIGFsc28gdXNlIFdlYmtpdCBhcyBpdHMgbGF5b3V0IGVuZ2luZS5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IGJyb3dzZXIgaXMgU2FmYXJpLiAqL1xuZXhwb3J0IGNvbnN0IGlzU2FmYXJpID0gIWlzU2VydmVyICYmIC9zYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIGlzV2Via2l0O1xuXG4vKipcbiAqIFdlIGp1c3QgY2hlY2sgZm9yIHRoZSBibGluayBlbmdpbmUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0Nocm9taXVtID0gaXNCbGluaztcblxuLyoqIFdoZXRoZXIgdGhlIGFwcGxpY2F0aW9uIGlzIGJlaW5nIHJlbmRlcmVkIGluIGEgTmV4dC5qcyBlbnZpcm9ubWVudC4gKi9cbmV4cG9ydCBjb25zdCBpc05leHRqcyA9ICgpOiBib29sZWFuID0+ICEhKGdsb2JhbFRoaXMgYXMgeyBuZXh0Pzogb2JqZWN0IH0pLm5leHQ7XG4iLCJleHBvcnQgZnVuY3Rpb24gcGFnZVNjcm9sbERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLXNjcm9sbC1kaXNhYmxlZCcpO1xufVxuXG4vKipcbiAqIEhhbmRsZSB0aGUgcGFnZSBzY3JvbGwsIGFsbG93aW5nIHRvIGRpc2FibGUvZW5hYmxlIHRoZSB3aW5kb3cgc2Nyb2xsIGF2b2lkaW5nIGEgcG90ZW50aWFsXG4gKiBjb250ZW50IHNoaWZ0IGNhdXNlZCBieSB0aGUgZGlzYXBwZWFyYW5jZS9hcHBlYXJhbmNlIG9mIHRoZSBzY3JvbGxiYXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJTY3JvbGxIYW5kbGVyIHtcbiAgcHJpdmF0ZSBfcG9zaXRpb24hOiBzdHJpbmc7XG4gIHByaXZhdGUgX292ZXJmbG93ITogc3RyaW5nO1xuICBwcml2YXRlIF9tYXJnaW5JbmxpbmVFbmQhOiBzdHJpbmc7XG5cbiAgcHVibGljIGRpc2FibGVTY3JvbGwoKTogdm9pZCB7XG4gICAgaWYgKHBhZ2VTY3JvbGxEaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2F2ZSBhbnkgcHJlLWV4aXN0aW5nIHN0eWxlcyB0byByZWFwcGx5IHRoZW0gdG8gdGhlIGJvZHkgd2hlbiBlbmFibGluZyB0aGUgc2Nyb2xsIGFnYWluLlxuICAgIHRoaXMuX3Bvc2l0aW9uID0gZG9jdW1lbnQuYm9keS5zdHlsZS5wb3NpdGlvbjtcbiAgICB0aGlzLl9vdmVyZmxvdyA9IGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c7XG4gICAgdGhpcy5fbWFyZ2luSW5saW5lRW5kID0gZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW5JbmxpbmVFbmQ7XG5cbiAgICBjb25zdCBzY3JvbGxiYXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luSW5saW5lRW5kID0gYCR7c2Nyb2xsYmFyV2lkdGh9cHhgO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLXNjcm9sbGJhci13aWR0aCcsIGAke3Njcm9sbGJhcldpZHRofXB4YCk7XG5cbiAgICBkb2N1bWVudC5ib2R5LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zYmItc2Nyb2xsLWRpc2FibGVkJywgdHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICghcGFnZVNjcm9sbERpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZXZlcnQgYm9keSBpbmxpbmUgc3R5bGVzLlxuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucG9zaXRpb24gPSB0aGlzLl9wb3NpdGlvbiB8fCAnJztcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gdGhpcy5fb3ZlcmZsb3cgfHwgJyc7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW5JbmxpbmVFbmQgPSB0aGlzLl9tYXJnaW5JbmxpbmVFbmQgfHwgJyc7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItc2Nyb2xsYmFyLXdpZHRoJywgJzAnKTtcblxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1zY3JvbGwtZGlzYWJsZWQnKTtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcblxuY29uc3QgbG9jYWxOYW1lQ2FjaGUgPSBuZXcgTWFwPHVua25vd24sIHN0cmluZz4oKTtcblxuLyoqXG4gKiBJbiBTU1IgdGhlIGxvY2FsL3RhZyBuYW1lIGlzIG5vdCBhdmFpbGFibGUgb24gdGhlIGNsYXNzIGluc3RhbmNlLCBidXQgaXQgaXMgYXZhaWxhYmxlXG4gKiBpbiB0aGUgc2hpbSBjdXN0b21FbGVtZW50cyByZWdpc3RyeS5cbiAqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbGl0L2xpdC9ibG9iL21haW4vcGFja2FnZXMvbGFicy9zc3ItZG9tLXNoaW0vc3JjLnRzIChTZWUgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5U2hpbSlcbiAqXG4gKiBDYW4gYmUgcmVtb3ZlZCBvbmNlIGh0dHBzOi8vZ2l0aHViLmNvbS9saXQvbGl0L3B1bGwvNDU1MyBpcyBtZXJnZWQvcmVsZWFzZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbE5hbWUoZWxlbWVudDogTGl0RWxlbWVudCk6IHN0cmluZyB7XG4gIGlmIChsb2NhbE5hbWVDYWNoZS5oYXMoZWxlbWVudC5jb25zdHJ1Y3RvcikpIHtcbiAgICByZXR1cm4gbG9jYWxOYW1lQ2FjaGUuZ2V0KGVsZW1lbnQuY29uc3RydWN0b3IpITtcbiAgfVxuXG4gIGNvbnN0IGRlZmluaXRpb25zID0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgIChjdXN0b21FbGVtZW50cyBhcyB1bmtub3duIGFzIHsgX19kZWZpbml0aW9uczogTWFwPHN0cmluZywgeyBjdG9yOiB1bmtub3duIH0+IH0pLl9fZGVmaW5pdGlvbnM7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGRlZmluaXRpb25zKSB7XG4gICAgaWYgKHZhbHVlLmN0b3IgPT09IGVsZW1lbnQuY29uc3RydWN0b3IpIHtcbiAgICAgIGxvY2FsTmFtZUNhY2hlLnNldChlbGVtZW50LmNvbnN0cnVjdG9yLCBrZXkpO1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBHaXZlbiBlbGVtZW50ICR7ZWxlbWVudC5jb25zdHJ1Y3Rvci5uYW1lfSBoYXMgbm90IGJlZW4gcmVnaXN0ZXJlZCB5ZXQuYCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVhLE1BQUEsY0FBYyxDQUFDLFFBQVEsU0FBUyxTQUFTLFVBQVUsUUFBUSxTQUFTLE9BQU87QUFXeEUsU0FBQSxhQUNkLE1BQ0EsSUFDQSxZQUNTO0FBQ1QsTUFBSSxVQUFVO0FBRUwsV0FBQTtBQUFBLEVBQ1Q7QUFFTSxRQUFBLGdCQUFnQixpQkFB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
@@ -5,17 +5,22 @@ export declare class SbbDisabledMixinType {
5
5
  get disabled(): boolean;
6
6
  protected isDisabledExternally(): boolean;
7
7
  }
8
+ export declare class SbbDisabledInteractiveMixinType {
9
+ disabledInteractive: boolean;
10
+ }
8
11
  /**
9
12
  * Enhance your component with a disabled property.
10
13
  */
11
14
  export declare const SbbDisabledMixin: <T extends AbstractConstructor<LitElement>>(superClass: T) => AbstractConstructor<SbbDisabledMixinType> & T;
12
15
  /**
13
- * @deprecated Will be removed with next major version
16
+ * Enhance your component with a disabled interactive property.
14
17
  */
15
- export declare const SbbDisabledTabIndexActionMixin: <T extends AbstractConstructor<LitElement>>(superClass: T) => AbstractConstructor<SbbDisabledMixinType> & T;
18
+ export declare const SbbDisabledInteractiveMixin: <T extends AbstractConstructor<LitElement & SbbDisabledMixinType>>(superClass: T) => AbstractConstructor<SbbDisabledInteractiveMixinType> & T;
19
+ export declare const SbbDisabledTabIndexActionMixin: <T extends AbstractConstructor<LitElement>>(superClass: T) => AbstractConstructor<SbbDisabledMixinType & SbbDisabledInteractiveMixinType> & T;
16
20
  /**
17
- * Extends `SbbDisabledMixin` with the `aria-disabled` attribute.
18
- * For a11y purposes, keeps the element focusable even when disabled.
21
+ * Extends `SbbDisabledMixin` with the `aria-disabled` attribute.
22
+ * For a11y purposes, keeps the element focusable even when disabled.
23
+ * @deprecated Will be removed with next major version
19
24
  */
20
25
  export declare const SbbFocusableDisabledActionMixin: <T extends AbstractConstructor<LitElement>>(superClass: T) => AbstractConstructor<SbbDisabledMixinType> & T;
21
26
  //# sourceMappingURL=disabled-mixin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"disabled-mixin.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/mixins/disabled-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAC;AAGtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,IAAW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;IACpC,IAAW,QAAQ,IAAI,OAAO,CAAC;IAC/B,SAAS,CAAC,oBAAoB,IAAI,OAAO;CAC1C;AAED;;GAEG;AAEH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,mBAAmB,CAAC,UAAU,CAAC,cAC5D,CAAC,KACZ,mBAAmB,CAAC,oBAAoB,CAAC,GAAG,CAwB9C,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,8BAA8B,GAAI,CAAC,SAAS,mBAAmB,CAAC,UAAU,CAAC,cAC1E,CAAC,KACZ,mBAAmB,CAAC,oBAAoB,CAAC,GAAG,CAwB9C,CAAC;AAEF;;;GAGG;AAEH,eAAO,MAAM,+BAA+B,GAAI,CAAC,SAAS,mBAAmB,CAAC,UAAU,CAAC,cAC3E,CAAC,KACZ,mBAAmB,CAAC,oBAAoB,CAAC,GAAG,CAoB9C,CAAC"}
1
+ {"version":3,"file":"disabled-mixin.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/mixins/disabled-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAC;AAGtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,IAAW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;IACpC,IAAW,QAAQ,IAAI,OAAO,CAAC;IAC/B,SAAS,CAAC,oBAAoB,IAAI,OAAO;CAC1C;AAED,MAAM,CAAC,OAAO,OAAO,+BAA+B;IAC3C,mBAAmB,EAAE,OAAO,CAAC;CACrC;AAED;;GAEG;AAEH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,mBAAmB,CAAC,UAAU,CAAC,cAC5D,CAAC,KACZ,mBAAmB,CAAC,oBAAoB,CAAC,GAAG,CAwB9C,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,2BAA2B,GACtC,CAAC,SAAS,mBAAmB,CAAC,UAAU,GAAG,oBAAoB,CAAC,cAEpD,CAAC,KACZ,mBAAmB,CAAC,+BAA+B,CAAC,GAAG,CAYzD,CAAC;AAGF,eAAO,MAAM,8BAA8B,GAAI,CAAC,SAAS,mBAAmB,CAAC,UAAU,CAAC,cAC1E,CAAC,KACZ,mBAAmB,CAAC,oBAAoB,GAAG,+BAA+B,CAAC,GAAG,CA6BhF,CAAC;AAEF;;;;GAIG;AAEH,eAAO,MAAM,+BAA+B,GAAI,CAAC,SAAS,mBAAmB,CAAC,UAAU,CAAC,cAC3E,CAAC,KACZ,mBAAmB,CAAC,oBAAoB,CAAC,GAAG,CAoB9C,CAAC"}