@sbb-esta/lyne-elements-experimental 2.11.0 → 2.11.2

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 (142) hide show
  1. package/core/datetime/date-helper.js +142 -142
  2. package/core/timetable/access-leg-helper.js +49 -52
  3. package/core/timetable/timetable-helper.js +7 -8
  4. package/custom-elements.json +106 -35
  5. package/development/core/datetime/date-helper.js +10 -10
  6. package/development/core/timetable/access-leg-helper.js +12 -15
  7. package/development/core/timetable/timetable-helper.js +6 -7
  8. package/development/{differenceInMinutes-CHSyWiQs.js → differenceInMinutes-D5Nj8Stc.js} +3 -3
  9. package/development/{format-D0-yhzi4.js → format-BQfaa1ZT.js} +22 -26
  10. package/development/{isValid-Bo4R7iA7.js → isValid-DvieCZVi.js} +3 -3
  11. package/development/journey-summary/journey-summary.component.js +4 -5
  12. package/development/pearl-chain/pearl-chain.component.d.ts.map +1 -1
  13. package/development/pearl-chain/pearl-chain.component.js +28 -39
  14. package/development/pearl-chain-time/pearl-chain-time.component.js +5 -6
  15. package/development/pearl-chain-vertical/pearl-chain-vertical.component.js +1 -1
  16. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.component.js +1 -1
  17. package/development/seat-reservation/common/mapper/icon-mapper.js +1 -1
  18. package/development/seat-reservation/common/mapper/mapper.d.ts +5 -5
  19. package/development/seat-reservation/common/mapper/mapper.d.ts.map +1 -1
  20. package/development/seat-reservation/common/mapper/mapper.js +17 -19
  21. package/development/seat-reservation/common/mapper/seat-reservation-sample-data.js +1 -1
  22. package/development/seat-reservation/common/svgs.js +1 -1
  23. package/development/seat-reservation/common/translations/i18n.js +2 -3
  24. package/development/seat-reservation/common/types.d.ts +71 -0
  25. package/development/seat-reservation/common/types.d.ts.map +1 -0
  26. package/development/seat-reservation/common/types.js +2 -0
  27. package/development/seat-reservation/common.d.ts +6 -3
  28. package/development/seat-reservation/common.d.ts.map +1 -1
  29. package/development/seat-reservation/common.js +3 -7
  30. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts +4 -3
  31. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts.map +1 -1
  32. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.js +27 -38
  33. package/development/seat-reservation/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.d.ts.map +1 -0
  34. package/development/seat-reservation/seat-reservation/{seat-reservation-scoped-component → seat-reservation-scoped}/seat-reservation-scoped.component.js +6 -7
  35. package/development/seat-reservation/seat-reservation/seat-reservation-scoped.d.ts +5 -0
  36. package/development/seat-reservation/seat-reservation/seat-reservation-scoped.d.ts.map +1 -0
  37. package/development/seat-reservation/seat-reservation/seat-reservation-scoped.js +5 -0
  38. package/development/seat-reservation/seat-reservation/seat-reservation.component.d.ts +4 -4
  39. package/development/seat-reservation/seat-reservation/seat-reservation.component.d.ts.map +1 -1
  40. package/development/seat-reservation/seat-reservation/seat-reservation.component.js +20 -27
  41. package/development/seat-reservation/seat-reservation-area/seat-reservation-area.component.js +1 -1
  42. package/development/seat-reservation/seat-reservation-area.d.ts +3 -0
  43. package/development/seat-reservation/seat-reservation-area.d.ts.map +1 -1
  44. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-assets.js +2 -3
  45. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +7 -8
  46. package/development/seat-reservation/seat-reservation-graphic.d.ts +3 -0
  47. package/development/seat-reservation/seat-reservation-graphic.d.ts.map +1 -1
  48. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts +6 -5
  49. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts.map +1 -1
  50. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +7 -11
  51. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach.d.ts +3 -0
  52. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach.d.ts.map +1 -1
  53. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +2 -3
  54. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-services.d.ts +3 -0
  55. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-services.d.ts.map +1 -1
  56. package/development/seat-reservation/seat-reservation-navigation.d.ts +6 -0
  57. package/development/seat-reservation/seat-reservation-navigation.d.ts.map +1 -0
  58. package/development/seat-reservation/seat-reservation-navigation.js +7 -0
  59. package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.d.ts +2 -2
  60. package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.d.ts.map +1 -1
  61. package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +5 -6
  62. package/development/seat-reservation/seat-reservation-place-control.d.ts +3 -0
  63. package/development/seat-reservation/seat-reservation-place-control.d.ts.map +1 -1
  64. package/development/seat-reservation/seat-reservation.d.ts +5 -71
  65. package/development/seat-reservation/seat-reservation.d.ts.map +1 -1
  66. package/development/seat-reservation/seat-reservation.js +4 -2
  67. package/development/seat-reservation.d.ts +5 -0
  68. package/development/seat-reservation.d.ts.map +1 -1
  69. package/development/seat-reservation.js +26 -3
  70. package/development/timetable-duration/timetable-duration.component.js +1 -1
  71. package/development/timetable-row/timetable-row.component.js +58 -89
  72. package/differenceInMinutes-CP_C5onR.js +23 -0
  73. package/{format-Dg8rkk7h.js → format-lqeCzmzS.js} +438 -442
  74. package/index.d.ts +1 -1
  75. package/index.js +1 -1
  76. package/isValid-Ceq2O0NQ.js +45 -0
  77. package/journey-summary/journey-summary.component.js +3 -4
  78. package/package.json +47 -2
  79. package/pearl-chain/pearl-chain.component.d.ts.map +1 -1
  80. package/pearl-chain/pearl-chain.component.js +78 -95
  81. package/pearl-chain-time/pearl-chain-time.component.js +44 -45
  82. package/seat-reservation/common/mapper/mapper.d.ts +5 -5
  83. package/seat-reservation/common/mapper/mapper.d.ts.map +1 -1
  84. package/seat-reservation/common/mapper/mapper.js +50 -54
  85. package/seat-reservation/common/translations/i18n.js +5 -6
  86. package/seat-reservation/common/types.d.ts +71 -0
  87. package/seat-reservation/common/types.d.ts.map +1 -0
  88. package/seat-reservation/common/types.js +1 -0
  89. package/seat-reservation/common.d.ts +6 -3
  90. package/seat-reservation/common.d.ts.map +1 -1
  91. package/seat-reservation/common.js +11 -15
  92. package/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts +4 -3
  93. package/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts.map +1 -1
  94. package/seat-reservation/seat-reservation/seat-reservation-base-element.js +107 -118
  95. package/seat-reservation/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.d.ts.map +1 -0
  96. package/seat-reservation/seat-reservation/{seat-reservation-scoped-component → seat-reservation-scoped}/seat-reservation-scoped.component.js +40 -41
  97. package/seat-reservation/seat-reservation/seat-reservation-scoped.d.ts +5 -0
  98. package/seat-reservation/seat-reservation/seat-reservation-scoped.d.ts.map +1 -0
  99. package/seat-reservation/seat-reservation/{seat-reservation-scoped-component.js → seat-reservation-scoped.js} +1 -1
  100. package/seat-reservation/seat-reservation/seat-reservation.component.d.ts +4 -4
  101. package/seat-reservation/seat-reservation/seat-reservation.component.d.ts.map +1 -1
  102. package/seat-reservation/seat-reservation/seat-reservation.component.js +82 -91
  103. package/seat-reservation/seat-reservation-area.d.ts +3 -0
  104. package/seat-reservation/seat-reservation-area.d.ts.map +1 -1
  105. package/seat-reservation/seat-reservation-graphic/seat-reservation-assets.js +15 -18
  106. package/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +58 -59
  107. package/seat-reservation/seat-reservation-graphic.d.ts +3 -0
  108. package/seat-reservation/seat-reservation-graphic.d.ts.map +1 -1
  109. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts +6 -5
  110. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts.map +1 -1
  111. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +71 -75
  112. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach.d.ts +3 -0
  113. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach.d.ts.map +1 -1
  114. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +12 -13
  115. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-services.d.ts +3 -0
  116. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-services.d.ts.map +1 -1
  117. package/seat-reservation/seat-reservation-navigation.d.ts +6 -0
  118. package/seat-reservation/seat-reservation-navigation.d.ts.map +1 -0
  119. package/seat-reservation/seat-reservation-navigation.js +6 -0
  120. package/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.d.ts +2 -2
  121. package/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.d.ts.map +1 -1
  122. package/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +24 -25
  123. package/seat-reservation/seat-reservation-place-control.d.ts +3 -0
  124. package/seat-reservation/seat-reservation-place-control.d.ts.map +1 -1
  125. package/seat-reservation/seat-reservation.d.ts +5 -71
  126. package/seat-reservation/seat-reservation.d.ts.map +1 -1
  127. package/seat-reservation/seat-reservation.js +6 -4
  128. package/seat-reservation.d.ts +5 -0
  129. package/seat-reservation.d.ts.map +1 -1
  130. package/seat-reservation.js +27 -4
  131. package/timetable-row/timetable-row.component.js +207 -247
  132. package/development/seat-reservation/seat-reservation/seat-reservation-scoped-component/seat-reservation-scoped.component.d.ts.map +0 -1
  133. package/development/seat-reservation/seat-reservation/seat-reservation-scoped-component.d.ts +0 -2
  134. package/development/seat-reservation/seat-reservation/seat-reservation-scoped-component.d.ts.map +0 -1
  135. package/development/seat-reservation/seat-reservation/seat-reservation-scoped-component.js +0 -5
  136. package/differenceInMinutes-BMqUZdhj.js +0 -23
  137. package/isValid-DJ69OMZJ.js +0 -45
  138. package/seat-reservation/seat-reservation/seat-reservation-scoped-component/seat-reservation-scoped.component.d.ts.map +0 -1
  139. package/seat-reservation/seat-reservation/seat-reservation-scoped-component.d.ts +0 -2
  140. package/seat-reservation/seat-reservation/seat-reservation-scoped-component.d.ts.map +0 -1
  141. /package/development/seat-reservation/seat-reservation/{seat-reservation-scoped-component → seat-reservation-scoped}/seat-reservation-scoped.component.d.ts +0 -0
  142. /package/seat-reservation/seat-reservation/{seat-reservation-scoped-component → seat-reservation-scoped}/seat-reservation-scoped.component.d.ts +0 -0
@@ -0,0 +1,5 @@
1
+ import { SbbSeatReservationScopedElement } from "./seat-reservation-scoped/seat-reservation-scoped.component.js";
2
+ export {
3
+ SbbSeatReservationScopedElement
4
+ };
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1zY29wZWQuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOyJ9
@@ -1,19 +1,19 @@
1
1
  import { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
2
- import { SeatReservation } from '../seat-reservation.js';
2
+ import { SeatReservation } from '../common.js';
3
3
  import { SeatReservationBaseElement } from './seat-reservation-base-element.js';
4
4
  /**
5
5
  * Describe the purpose of the component with a single short sentence.
6
6
  *
7
- * @event {CustomEvent<SeatReservationPlaceSelection>} selectedPlaces - Emits when a place was selected and returns a Place array with all selected places
7
+ * @event {CustomEvent<SeatReservationSelectedPlacesEventDetails>} selectedPlaces - Emits when a place was selected and returns a Place array with all selected places
8
8
  * @event {CustomEvent<SeatReservationCoachSelection>} selectedCoach - Emits when a coach was selected and returns a CoachSelection
9
9
  */
10
10
  export declare class SbbSeatReservationElement extends SeatReservationBaseElement {
11
11
  static styles: CSSResultGroup;
12
12
  /** The seat reservation object which contains all coaches and places */
13
13
  accessor seatReservation: SeatReservation;
14
- /** The seat resvervation navigation can be toggled by this property */
14
+ /** The seat reservation navigation can be toggled by this property */
15
15
  accessor hasNavigation: boolean;
16
- /** controls the visual represention of seat reservation in a horizonal or vertical alignment */
16
+ /** Controls the visual representation of seat reservation in a horizonal or vertical alignment */
17
17
  accessor alignVertical: boolean;
18
18
  /** Maximal number of possible clickable seats */
19
19
  accessor maxReservations: number;
@@ -1 +1 @@
1
- {"version":3,"file":"seat-reservation.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements-experimental/seat-reservation/seat-reservation/seat-reservation.component.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1E,OAAO,KAAK,EAMV,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAGhF,OAAO,+CAA+C,CAAC;AACvD,OAAO,6BAA6B,CAAC;AACrC,OAAO,gCAAgC,CAAC;AACxC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,qEAAqE,CAAC;AAC7E,OAAO,wCAAwC,CAAC;AAEhD;;;;;GAKG;AACH,qBAEM,yBAA0B,SAAQ,0BAA0B;IAChE,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,wEAAwE;IACxE,SACyB,eAAe,EAAE,eAAe,CAAS;IAElE,uEAAuE;IACvE,SAEyB,aAAa,EAAE,OAAO,CAAQ;IAEvD,gGAAgG;IAChG,SAEyB,aAAa,EAAE,OAAO,CAAS;IAExD,iDAAiD;IACjD,SAEyB,eAAe,EAAE,MAAM,CAAS;IAEzD,2CAA2C;IAC3C,SAEyB,iBAAiB,EAAE,OAAO,CAAS;IAE5D,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,oBAAoB,CAAC,CAAiB;IAE9C,OAAO,CAAC,gBAAgB,CAQtB;IAEF,OAAO,CAAC,2BAA2B,CAAkB;cAElC,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAgBzD,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAK3D,MAAM,IAAI,cAAc,GAAG,IAAI;IAKlD,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,uCAAuC;IAwC/C,OAAO,CAAC,iBAAiB;IAqCzB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,wBAAwB;IA+BhC,OAAO,CAAC,qBAAqB;IA0B7B,OAAO,CAAC,wBAAwB;IA2ChC,OAAO,CAAC,6BAA6B;IA0BrC,OAAO,CAAC,yBAAyB;IA2EjC,OAAO,CAAC,4BAA4B;IA0CpC,OAAO,CAAC,2BAA2B;IAyCnC;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,8BAA8B;CAyBvC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,sBAAsB,EAAE,yBAAyB,CAAC;KACnD;CACF"}
1
+ {"version":3,"file":"seat-reservation.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements-experimental/seat-reservation/seat-reservation/seat-reservation.component.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1E,OAAO,KAAK,EAMV,eAAe,EAChB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAGhF,OAAO,+CAA+C,CAAC;AACvD,OAAO,6BAA6B,CAAC;AACrC,OAAO,gCAAgC,CAAC;AACxC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,qEAAqE,CAAC;AAC7E,OAAO,8BAA8B,CAAC;AAEtC;;;;;GAKG;AACH,qBAEM,yBAA0B,SAAQ,0BAA0B;IAChE,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,wEAAwE;IACxE,SACyB,eAAe,EAAE,eAAe,CAAS;IAElE,sEAAsE;IACtE,SAEyB,aAAa,EAAE,OAAO,CAAQ;IAEvD,kGAAkG;IAClG,SAEyB,aAAa,EAAE,OAAO,CAAS;IAExD,iDAAiD;IACjD,SAEyB,eAAe,EAAE,MAAM,CAAS;IAEzD,2CAA2C;IAC3C,SAEyB,iBAAiB,EAAE,OAAO,CAAS;IAE5D,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,oBAAoB,CAAC,CAAiB;IAE9C,OAAO,CAAC,gBAAgB,CAQtB;IAEF,OAAO,CAAC,2BAA2B,CAAkB;cAElC,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAgBzD,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAK3D,MAAM,IAAI,cAAc,GAAG,IAAI;IAKlD,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,uCAAuC;IAwC/C,OAAO,CAAC,iBAAiB;IAqCzB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,wBAAwB;IA+BhC,OAAO,CAAC,qBAAqB;IA0B7B,OAAO,CAAC,wBAAwB;IA2ChC,OAAO,CAAC,6BAA6B;IA0BrC,OAAO,CAAC,yBAAyB;IA2EjC,OAAO,CAAC,4BAA4B;IA0CpC,OAAO,CAAC,2BAA2B;IAyCnC;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,8BAA8B;CAyBvC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,sBAAsB,EAAE,yBAAyB,CAAC;KACnD;CACF"}
@@ -19,7 +19,7 @@ import "../seat-reservation-area.js";
19
19
  import "../seat-reservation-graphic.js";
20
20
  import "../seat-reservation-place-control.js";
21
21
  import "../seat-reservation-navigation/seat-reservation-navigation-coach.js";
22
- import "./seat-reservation-scoped-component/seat-reservation-scoped.component.js";
22
+ import "./seat-reservation-scoped/seat-reservation-scoped.component.js";
23
23
  const style = css`*,
24
24
  ::before,
25
25
  ::after {
@@ -153,14 +153,14 @@ let SbbSeatReservationElement = (() => {
153
153
  set seatReservation(value) {
154
154
  __privateSet(this, _seatReservation_accessor_storage, value);
155
155
  }
156
- /** The seat resvervation navigation can be toggled by this property */
156
+ /** The seat reservation navigation can be toggled by this property */
157
157
  get hasNavigation() {
158
158
  return __privateGet(this, _hasNavigation_accessor_storage);
159
159
  }
160
160
  set hasNavigation(value) {
161
161
  __privateSet(this, _hasNavigation_accessor_storage, value);
162
162
  }
163
- /** controls the visual represention of seat reservation in a horizonal or vertical alignment */
163
+ /** Controls the visual representation of seat reservation in a horizonal or vertical alignment */
164
164
  get alignVertical() {
165
165
  return __privateGet(this, _alignVertical_accessor_storage);
166
166
  }
@@ -182,13 +182,12 @@ let SbbSeatReservationElement = (() => {
182
182
  __privateSet(this, _preventPlaceClick_accessor_storage, value);
183
183
  }
184
184
  willUpdate(changedProperties) {
185
- var _a2, _b;
186
185
  super.willUpdate(changedProperties);
187
186
  if (changedProperties.has("hasNavigation")) {
188
187
  if (this.hasNavigation) {
189
- (_a2 = this.shadowRoot) == null ? void 0 : _a2.querySelectorAll("table").forEach((table) => table.removeAttribute("tabindex"));
188
+ this.shadowRoot?.querySelectorAll("table").forEach((table) => table.removeAttribute("tabindex"));
190
189
  } else {
191
- (_b = this.shadowRoot) == null ? void 0 : _b.querySelectorAll("table").forEach((table) => table.setAttribute("tabindex", "0"));
190
+ this.shadowRoot?.querySelectorAll("table").forEach((table) => table.setAttribute("tabindex", "0"));
192
191
  }
193
192
  }
194
193
  }
@@ -204,8 +203,7 @@ let SbbSeatReservationElement = (() => {
204
203
  this.initNavigationSelectionByScrollEvent();
205
204
  }
206
205
  _initVehicleSeatReservationConstruction() {
207
- var _a2;
208
- const coachItems = JSON.parse(JSON.stringify((_a2 = this.seatReservation) == null ? void 0 : _a2.coachItems));
206
+ const coachItems = JSON.parse(JSON.stringify(this.seatReservation?.coachItems));
209
207
  const classAlignVertical = this.alignVertical ? "sbb-sr__wrapper--vertical" : "";
210
208
  this._coachesHtmlTemplate = html`
211
209
  <div>
@@ -243,7 +241,6 @@ let SbbSeatReservationElement = (() => {
243
241
  `;
244
242
  }
245
243
  _renderNavigation() {
246
- var _a2;
247
244
  if (!this.hasNavigation) {
248
245
  return null;
249
246
  }
@@ -253,8 +250,7 @@ let SbbSeatReservationElement = (() => {
253
250
  class="sbb-sr-navigation__list-coaches"
254
251
  aria-label="${getI18nSeatReservation("SEAT_RESERVATION_NAVIGATION", this._language.current)}"
255
252
  >
256
- ${(_a2 = this.seatReservation) == null ? void 0 : _a2.coachItems.map((coachItem, index) => {
257
- var _a3, _b;
253
+ ${this.seatReservation?.coachItems.map((coachItem, index) => {
258
254
  return html`<li>
259
255
  <sbb-seat-reservation-navigation-coach
260
256
  @selectCoach=${(event) => this._onSelectNavCoach(event)}
@@ -265,9 +261,9 @@ let SbbSeatReservationElement = (() => {
265
261
  .focused=${this.focusedCoachIndex === index}
266
262
  .propertyIds="${coachItem.propertyIds}"
267
263
  .travelClass="${coachItem.travelClass}"
268
- ?driver-area="${!((_a3 = coachItem.places) == null ? void 0 : _a3.length)}"
264
+ ?driver-area="${!coachItem.places?.length}"
269
265
  ?first="${index === 0}"
270
- ?last="${index === ((_b = this.seatReservation) == null ? void 0 : _b.coachItems.length) - 1}"
266
+ ?last="${index === this.seatReservation?.coachItems.length - 1}"
271
267
  ?vertical="${this.alignVertical}"
272
268
  >
273
269
  </sbb-seat-reservation-navigation-coach>
@@ -319,9 +315,9 @@ let SbbSeatReservationElement = (() => {
319
315
  _getRenderedCoachBorders(coachItem, coachIndex) {
320
316
  const allElements = coachItem.graphicElements;
321
317
  const COACH_PASSAGE_WIDTH = 1;
322
- const driverArea = allElements == null ? void 0 : allElements.find((element) => element.icon === "DRIVER_AREA_FULL");
318
+ const driverArea = allElements?.find((element) => element.icon === "DRIVER_AREA_FULL");
323
319
  const borderWidth = driverArea ? coachItem.dimension.w - driverArea.dimension.w - COACH_PASSAGE_WIDTH : coachItem.dimension.w - COACH_PASSAGE_WIDTH * 2;
324
- const borderOffsetX = coachIndex === 0 && driverArea ? (driverArea == null ? void 0 : driverArea.dimension.w) * this.baseGridSize : this.baseGridSize;
320
+ const borderOffsetX = coachIndex === 0 && driverArea ? driverArea?.dimension.w * this.baseGridSize : this.baseGridSize;
325
321
  return html`
326
322
  <sbb-seat-reservation-scoped
327
323
  scoped-classes="coach-border"
@@ -360,7 +356,7 @@ let SbbSeatReservationElement = (() => {
360
356
  }
361
357
  _getRenderedColumnPlaces(places, coachIndex) {
362
358
  places.sort((placeA, placeB) => Number(placeA.position.x) - Number(placeB.position.x));
363
- return places == null ? void 0 : places.map((place, index) => {
359
+ return places?.map((place, index) => {
364
360
  const calculatedInternalDimension = this.getCalculatedDimension(place.dimension);
365
361
  const calculatedInternalPosition = this.getCalculatedPosition(place.position);
366
362
  const textRotation = this.alignVertical ? -90 : 0;
@@ -399,7 +395,7 @@ let SbbSeatReservationElement = (() => {
399
395
  if (!graphicalElements) {
400
396
  return null;
401
397
  }
402
- return graphicalElements == null ? void 0 : graphicalElements.map((graphicalElement) => {
398
+ return graphicalElements?.map((graphicalElement) => {
403
399
  const icon = graphicalElement.icon ?? "";
404
400
  const elementRotation = graphicalElement.rotation || 0;
405
401
  const isNotFixedRotationGraphicalElement = this._notFixedRotatableAreaIcons.indexOf(graphicalElement.icon) === -1;
@@ -411,8 +407,7 @@ let SbbSeatReservationElement = (() => {
411
407
  });
412
408
  }
413
409
  _getRenderElementWithArea(graphicalElement, rotation, coachDimension) {
414
- var _a2;
415
- const isNotTableGraphicTempFix = ((_a2 = graphicalElement.icon) == null ? void 0 : _a2.indexOf("TABLE")) === -1;
410
+ const isNotTableGraphicTempFix = graphicalElement.icon?.indexOf("TABLE") === -1;
416
411
  const areaProperty = graphicalElement.icon && isNotTableGraphicTempFix ? graphicalElement.icon : null;
417
412
  const stretchHeight = areaProperty !== "ENTRY_EXIT";
418
413
  const ariaLabelForArea = graphicalElement.icon ? getI18nSeatReservation(graphicalElement.icon, this._language.current) : nothing;
@@ -458,10 +453,9 @@ let SbbSeatReservationElement = (() => {
458
453
  `;
459
454
  }
460
455
  _getRenderElementWithoutArea(graphicalElement, rotation, coachDimension) {
461
- var _a2;
462
456
  const calculatedDimension = this.getCalculatedDimension(graphicalElement.dimension, coachDimension);
463
457
  const calculatedPosition = this.getCalculatedPosition(graphicalElement.position, graphicalElement.dimension, coachDimension);
464
- const icon = graphicalElement.icon && graphicalElement.icon.indexOf("DRIVER_AREA") === -1 ? graphicalElement.icon : (_a2 = graphicalElement.icon) == null ? void 0 : _a2.concat("_", this.seatReservation.vehicleType);
458
+ const icon = graphicalElement.icon && graphicalElement.icon.indexOf("DRIVER_AREA") === -1 ? graphicalElement.icon : graphicalElement.icon?.concat("_", this.seatReservation.vehicleType);
465
459
  return html`
466
460
  <sbb-seat-reservation-scoped
467
461
  scoped-classes="graphical-element"
@@ -486,7 +480,7 @@ let SbbSeatReservationElement = (() => {
486
480
  if (!serviceElements) {
487
481
  return null;
488
482
  }
489
- return serviceElements == null ? void 0 : serviceElements.map((serviceElement) => {
483
+ return serviceElements?.map((serviceElement) => {
490
484
  const titleDescription = serviceElement.icon ? getI18nSeatReservation(serviceElement.icon, this._language.current) : null;
491
485
  const calculatedcCmpartmentNumberDimension = this.getCalculatedDimension(serviceElement.dimension);
492
486
  const calculatedcCmpartmentNumberPosition = this.getCalculatedPosition(serviceElement.position);
@@ -522,7 +516,7 @@ let SbbSeatReservationElement = (() => {
522
516
  _onSelectPlace(selectPlaceEvent) {
523
517
  const selectedPlace = selectPlaceEvent.detail;
524
518
  this.preventCoachScrollByPlaceClick = true;
525
- this.isCochGridFocusable = false;
519
+ this.isCoachGridFocusable = false;
526
520
  if (!this.preventPlaceClick) {
527
521
  this.updateSelectedSeatReservationPlaces(selectedPlace);
528
522
  this.updateCurrentSelectedPlaceInCoach(selectedPlace);
@@ -548,8 +542,7 @@ let SbbSeatReservationElement = (() => {
548
542
  this.isAutoScrolling = false;
549
543
  }
550
544
  _getDescriptionTableCoach(coachItem) {
551
- var _a2;
552
- if (!((_a2 = coachItem.places) == null ? void 0 : _a2.length)) {
545
+ if (!coachItem.places?.length) {
553
546
  return getI18nSeatReservation("COACH_BLOCKED_TABLE_CAPTION", this._language.current, [
554
547
  coachItem.id
555
548
  ]);
@@ -568,7 +561,7 @@ let SbbSeatReservationElement = (() => {
568
561
  }
569
562
  _getTitleDescriptionListString(descriptionsElements) {
570
563
  const uniqueDescriptions = [];
571
- return descriptionsElements == null ? void 0 : descriptionsElements.map((descriptionElement) => {
564
+ return descriptionsElements?.map((descriptionElement) => {
572
565
  const icon = descriptionElement.icon;
573
566
  if (!icon)
574
567
  return null;
@@ -612,4 +605,4 @@ let SbbSeatReservationElement = (() => {
612
605
  export {
613
606
  SbbSeatReservationElement
614
607
  };
615
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24uY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGh0bWwsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9jbGFzcy1tYXAuanMnO1xuaW1wb3J0IHsgc3R5bGVNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9zdHlsZS1tYXAuanMnO1xuXG5pbXBvcnQgeyBnZXRJMThuU2VhdFJlc2VydmF0aW9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29hY2hJdGVtLFxuICBQbGFjZSxcbiAgRWxlbWVudERpbWVuc2lvbixcbiAgQmFzZUVsZW1lbnQsXG4gIFBsYWNlU2VsZWN0aW9uLFxuICBTZWF0UmVzZXJ2YXRpb24sXG59IGZyb20gJy4uL3NlYXQtcmVzZXJ2YXRpb24uanMnO1xuXG5pbXBvcnQgeyBTZWF0UmVzZXJ2YXRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4vc2VhdC1yZXNlcnZhdGlvbi1iYXNlLWVsZW1lbnQuanMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vc2VhdC1yZXNlcnZhdGlvbi5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3NjcmVlbi1yZWFkZXItb25seS5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tYXJlYS5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi9zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2guanMnO1xuaW1wb3J0ICcuL3NlYXQtcmVzZXJ2YXRpb24tc2NvcGVkLWNvbXBvbmVudC5qcyc7XG5cbi8qKlxuICogRGVzY3JpYmUgdGhlIHB1cnBvc2Ugb2YgdGhlIGNvbXBvbmVudCB3aXRoIGEgc2luZ2xlIHNob3J0IHNlbnRlbmNlLlxuICpcbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2VhdFJlc2VydmF0aW9uUGxhY2VTZWxlY3Rpb24+fSBzZWxlY3RlZFBsYWNlcyAtIEVtaXRzIHdoZW4gYSBwbGFjZSB3YXMgc2VsZWN0ZWQgYW5kIHJldHVybnMgYSBQbGFjZSBhcnJheSB3aXRoIGFsbCBzZWxlY3RlZCBwbGFjZXNcbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2VhdFJlc2VydmF0aW9uQ29hY2hTZWxlY3Rpb24+fSBzZWxlY3RlZENvYWNoIC0gRW1pdHMgd2hlbiBhIGNvYWNoIHdhcyBzZWxlY3RlZCBhbmQgcmV0dXJucyBhIENvYWNoU2VsZWN0aW9uXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1zZWF0LXJlc2VydmF0aW9uJylcbmNsYXNzIFNiYlNlYXRSZXNlcnZhdGlvbkVsZW1lbnQgZXh0ZW5kcyBTZWF0UmVzZXJ2YXRpb25CYXNlRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBUaGUgc2VhdCByZXNlcnZhdGlvbiBvYmplY3Qgd2hpY2ggY29udGFpbnMgYWxsIGNvYWNoZXMgYW5kIHBsYWNlcyAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdzZWF0LXJlc2VydmF0aW9uJywgdHlwZTogT2JqZWN0IH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBzZWF0UmVzZXJ2YXRpb246IFNlYXRSZXNlcnZhdGlvbiA9IG51bGwhO1xuXG4gIC8qKiBUaGUgc2VhdCByZXN2ZXJ2YXRpb24gbmF2aWdhdGlvbiBjYW4gYmUgdG9nZ2xlZCBieSB0aGlzIHByb3BlcnR5ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoYXMtbmF2aWdhdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIGhhc05hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKiBjb250cm9scyB0aGUgdmlzdWFsIHJlcHJlc2VudGlvbiBvZiBzZWF0IHJlc2VydmF0aW9uIGluIGEgaG9yaXpvbmFsIG9yIHZlcnRpY2FsIGFsaWdubWVudCAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWxpZ24tdmVydGljYWwnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBhbGlnblZlcnRpY2FsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIE1heGltYWwgbnVtYmVyIG9mIHBvc3NpYmxlIGNsaWNrYWJsZSBzZWF0cyAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnbWF4LXJlc2VydmF0aW9ucycsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgYWNjZXNzb3IgbWF4UmVzZXJ2YXRpb25zOiBudW1iZXIgPSBudWxsITtcblxuICAvKiogQW55IGNsaWNrIGZ1bmN0aW9uYWxpdHkgaXMgcHJldmVudGVkICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdwcmV2ZW50LXBsYWNlLWNsaWNrJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgYWNjZXNzb3IgcHJldmVudFBsYWNlQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2NvYWNoZXNIdG1sVGVtcGxhdGU/OiBUZW1wbGF0ZVJlc3VsdDtcbiAgLy8gR3JhcGhpY3MgdGhhdCBzaG91bGQgbm90IGJlIHJlbmRlcmVkIHdpdGggYW4gYXJlYVxuICBwcml2YXRlIF9ub3RBcmVhRWxlbWVudHMgPSBbXG4gICAgJ0RSSVZFUl9BUkVBX0ZVTEwnLFxuICAgICdDT0FDSF9QQVNTQUdFJyxcbiAgICAnQ09BQ0hfV0FMTF9OT19QQVNTQUdFJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRScsXG4gICAgJ0NPTVBBUlRNRU5UX1BBU1NBR0VfSElHSCcsXG4gICAgJ0NPTVBBUlRNRU5UX1BBU1NBR0VfTUlERExFJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRV9MT1cnLFxuICBdO1xuICAvLyBBcmVhIGljb25zIHRoYXQgc2hvdWxkIG5vdCBiZSBmaXhlZCBkdXJpbmcgcm90YXRpb24gd2hlbiB2ZXJ0aWNhbCBtb2RlIGlzIHNlbGVjdGVkXG4gIHByaXZhdGUgX25vdEZpeGVkUm90YXRhYmxlQXJlYUljb25zID0gWydFTlRSWV9FWElUJ107XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdoYXNOYXZpZ2F0aW9uJykpIHtcbiAgICAgIGlmICh0aGlzLmhhc05hdmlnYXRpb24pIHtcbiAgICAgICAgdGhpcy5zaGFkb3dSb290XG4gICAgICAgICAgPy5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZScpXG4gICAgICAgICAgLmZvckVhY2goKHRhYmxlKSA9PiB0YWJsZS5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4JykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaGFkb3dSb290XG4gICAgICAgICAgPy5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZScpXG4gICAgICAgICAgLmZvckVhY2goKHRhYmxlKSA9PiB0YWJsZS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIHRoaXMuX2NvbXBvbmVudFNldHVwKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgdGhpcy5faW5pdFZlaGljbGVTZWF0UmVzZXJ2YXRpb25Db25zdHJ1Y3Rpb24oKTtcbiAgICByZXR1cm4gdGhpcy5fY29hY2hlc0h0bWxUZW1wbGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29tcG9uZW50U2V0dXAoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0TmF2aWdhdGlvblNlbGVjdGlvbkJ5U2Nyb2xsRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRWZWhpY2xlU2VhdFJlc2VydmF0aW9uQ29uc3RydWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvYWNoSXRlbXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuc2VhdFJlc2VydmF0aW9uPy5jb2FjaEl0ZW1zKSk7XG4gICAgY29uc3QgY2xhc3NBbGlnblZlcnRpY2FsID0gdGhpcy5hbGlnblZlcnRpY2FsID8gJ3NiYi1zcl9fd3JhcHBlci0tdmVydGljYWwnIDogJyc7XG5cbiAgICB0aGlzLl9jb2FjaGVzSHRtbFRlbXBsYXRlID0gaHRtbGBcbiAgICAgIDxkaXY+XG4gICAgICAgIDxzYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJmaXJzdC10YWItZWxlbWVudFwiXG4gICAgICAgICAgICByb2xlPVwiY29udGVudGluZm9cIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIiR7Z2V0STE4blNlYXRSZXNlcnZhdGlvbignU0VBVF9SRVNFUlZBVElPTl9CRUdJTicsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpfVwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5cblxuICAgICAgICA8ZGl2IEBrZXlkb3duPSR7KGV2dDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5oYW5kbGVLZXlib2FyZEV2ZW50KGV2dCl9PlxuICAgICAgICAgICR7dGhpcy5fcmVuZGVyTmF2aWdhdGlvbigpfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3JfX3dyYXBwZXIgJHtjbGFzc0FsaWduVmVydGljYWx9XCI+XG4gICAgICAgICAgICA8ZGl2IGlkPVwic2JiLXNyX19wYXJlbnQtYXJlYVwiIGNsYXNzPVwic2JiLXNyX19wYXJlbnRcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cInNiYi1zcl9fbGlzdC1jb2FjaGVzXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgICAgICAgICAgICR7dGhpcy5fcmVuZGVyQ29hY2hlcyhjb2FjaEl0ZW1zKX1cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGlkPVwibGFzdC10YWItZWxlbWVudFwiXG4gICAgICAgICAgICByb2xlPVwiY29udGVudGluZm9cIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIiR7Z2V0STE4blNlYXRSZXNlcnZhdGlvbignU0VBVF9SRVNFUlZBVElPTl9FTkQnLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50KX1cIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAvPlxuICAgICAgICA8L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyTmF2aWdhdGlvbigpOiBUZW1wbGF0ZVJlc3VsdCB8IG51bGwge1xuICAgIGlmICghdGhpcy5oYXNOYXZpZ2F0aW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxuYXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgJ3NiYi1zci1uYXZpZ2F0aW9uLS12ZXJ0aWNhbCc6IHRoaXMuYWxpZ25WZXJ0aWNhbCB9KX1cIj5cbiAgICAgICAgPHVsXG4gICAgICAgICAgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbl9fbGlzdC1jb2FjaGVzXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtnZXRJMThuU2VhdFJlc2VydmF0aW9uKFxuICAgICAgICAgICAgJ1NFQVRfUkVTRVJWQVRJT05fTkFWSUdBVElPTicsXG4gICAgICAgICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgICAgICl9XCJcbiAgICAgICAgPlxuICAgICAgICAgICR7dGhpcy5zZWF0UmVzZXJ2YXRpb24/LmNvYWNoSXRlbXMubWFwKChjb2FjaEl0ZW06IENvYWNoSXRlbSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGh0bWxgPGxpPlxuICAgICAgICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaFxuICAgICAgICAgICAgICAgIEBzZWxlY3RDb2FjaD0keyhldmVudDogQ3VzdG9tRXZlbnQpID0+IHRoaXMuX29uU2VsZWN0TmF2Q29hY2goZXZlbnQpfVxuICAgICAgICAgICAgICAgIEBmb2N1c0NvYWNoPSR7KCkgPT4gdGhpcy5fb25Gb2N1c05hdkNvYWNoKCl9XG4gICAgICAgICAgICAgICAgaW5kZXg9XCIke2luZGV4fVwiXG4gICAgICAgICAgICAgICAgY29hY2gtaWQ9XCIke2NvYWNoSXRlbS5pZH1cIlxuICAgICAgICAgICAgICAgIC5zZWxlY3RlZD0ke3RoaXMuc2VsZWN0ZWRDb2FjaEluZGV4ID09PSBpbmRleH1cbiAgICAgICAgICAgICAgICAuZm9jdXNlZD0ke3RoaXMuZm9jdXNlZENvYWNoSW5kZXggPT09IGluZGV4fVxuICAgICAgICAgICAgICAgIC5wcm9wZXJ0eUlkcz1cIiR7Y29hY2hJdGVtLnByb3BlcnR5SWRzfVwiXG4gICAgICAgICAgICAgICAgLnRyYXZlbENsYXNzPVwiJHtjb2FjaEl0ZW0udHJhdmVsQ2xhc3N9XCJcbiAgICAgICAgICAgICAgICA/ZHJpdmVyLWFyZWE9XCIkeyFjb2FjaEl0ZW0ucGxhY2VzPy5sZW5ndGh9XCJcbiAgICAgICAgICAgICAgICA/Zmlyc3Q9XCIke2luZGV4ID09PSAwfVwiXG4gICAgICAgICAgICAgICAgP2xhc3Q9XCIke2luZGV4ID09PSB0aGlzLnNlYXRSZXNlcnZhdGlvbj8uY29hY2hJdGVtcy5sZW5ndGggLSAxfVwiXG4gICAgICAgICAgICAgICAgP3ZlcnRpY2FsPVwiJHt0aGlzLmFsaWduVmVydGljYWx9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3NiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2g+XG4gICAgICAgICAgICA8L2xpPmA7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvdWw+XG4gICAgICA8L25hdj5cbiAgICBgO1xuICB9XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gY29hY2hlc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJpdmF0ZSBfcmVuZGVyQ29hY2hlcyhjb2FjaGVzPzogQ29hY2hJdGVtW10pOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgaWYgKCFjb2FjaGVzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNvYWNoZXMubWFwKChjb2FjaEl0ZW06IENvYWNoSXRlbSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgIDxsaSBjbGFzcz1cInNiYi1zcl9faXRlbS1jb2FjaFwiPiR7dGhpcy5fcmVuZGVyQ29hY2hFbGVtZW50KGNvYWNoSXRlbSwgaW5kZXgpfTwvbGk+XG4gICAgICBgO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyQ29hY2hFbGVtZW50KGNvYWNoSXRlbTogQ29hY2hJdGVtLCBpbmRleDogbnVtYmVyKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRDb2FjaERpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihjb2FjaEl0ZW0uZGltZW5zaW9uKTtcbiAgICBjb25zdCBkZXNjcmlwdGlvblRhYmxlQ29hY2hXaXRoU2VydmljZXMgPSB0aGlzLl9nZXREZXNjcmlwdGlvblRhYmxlQ29hY2goY29hY2hJdGVtKTtcblxuICAgIHJldHVybiBodG1sYCA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICBzY29wZWQtY2xhc3Nlcz1cImNvYWNoLXdyYXBwZXJcIlxuICAgICAgaGVpZ2h0PVwiJHtjYWxjdWxhdGVkQ29hY2hEaW1lbnNpb24uaH1weFwiXG4gICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZENvYWNoRGltZW5zaW9uLnd9cHhcIlxuICAgID5cbiAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRDb2FjaEJvcmRlcnMoY29hY2hJdGVtLCBpbmRleCl9XG4gICAgICAke3RoaXMuX2dldFJlbmRlcmVkR3JhcGhpY2FsRWxlbWVudHMoY29hY2hJdGVtLmdyYXBoaWNFbGVtZW50cyB8fCBbXSwgY29hY2hJdGVtLmRpbWVuc2lvbil9XG4gICAgICAke3RoaXMuX2dldFJlbmRlcmVkU2VydmljZUVsZW1lbnRzKGNvYWNoSXRlbS5zZXJ2aWNlRWxlbWVudHMpfVxuICAgICAgPHRhYmxlXG4gICAgICAgIEBmb2N1cz0keygpID0+IHRoaXMub25Gb2N1c1RhYmxlQ29hY2hBbmRQcmVzZWxlY3RQbGFjZShpbmRleCl9XG4gICAgICAgIGlkPVwic2JiLXNyLWNvYWNoLSR7aW5kZXh9XCJcbiAgICAgICAgY2xhc3M9XCJzYmItc3ItY29hY2gtd3JhcHBlcl9fdGFibGVcIlxuICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwic2JiLXNyLWNvYWNoLWNhcHRpb24tJHtpbmRleH1cIlxuICAgICAgPlxuICAgICAgICA8Y2FwdGlvbiBpZD1cInNiYi1zci1jb2FjaC1jYXB0aW9uLSR7aW5kZXh9XCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICAgIDxzYmItc2NyZWVuLXJlYWRlci1vbmx5PiR7ZGVzY3JpcHRpb25UYWJsZUNvYWNoV2l0aFNlcnZpY2VzfTwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICAgICAgPC9jYXB0aW9uPlxuICAgICAgICAke3RoaXMuX2dldFJlbmRlcmVkUm93UGxhY2VzKGNvYWNoSXRlbSwgaW5kZXgpfVxuICAgICAgPC90YWJsZT5cbiAgICA8L3NiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZD5gO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRDb2FjaEJvcmRlcnMoY29hY2hJdGVtOiBDb2FjaEl0ZW0sIGNvYWNoSW5kZXg6IG51bWJlcik6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBjb25zdCBhbGxFbGVtZW50cyA9IGNvYWNoSXRlbS5ncmFwaGljRWxlbWVudHM7XG4gICAgY29uc3QgQ09BQ0hfUEFTU0FHRV9XSURUSCA9IDE7XG4gICAgY29uc3QgZHJpdmVyQXJlYSA9IGFsbEVsZW1lbnRzPy5maW5kKFxuICAgICAgKGVsZW1lbnQ6IEJhc2VFbGVtZW50KSA9PiBlbGVtZW50Lmljb24gPT09ICdEUklWRVJfQVJFQV9GVUxMJyxcbiAgICApO1xuICAgIGNvbnN0IGJvcmRlcldpZHRoID0gZHJpdmVyQXJlYVxuICAgICAgPyBjb2FjaEl0ZW0uZGltZW5zaW9uLncgLSBkcml2ZXJBcmVhLmRpbWVuc2lvbi53IC0gQ09BQ0hfUEFTU0FHRV9XSURUSFxuICAgICAgOiBjb2FjaEl0ZW0uZGltZW5zaW9uLncgLSBDT0FDSF9QQVNTQUdFX1dJRFRIICogMjtcbiAgICBjb25zdCBib3JkZXJPZmZzZXRYID1cbiAgICAgIGNvYWNoSW5kZXggPT09IDAgJiYgZHJpdmVyQXJlYVxuICAgICAgICA/IGRyaXZlckFyZWE/LmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemVcbiAgICAgICAgOiB0aGlzLmJhc2VHcmlkU2l6ZTtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZFxuICAgICAgICBzY29wZWQtY2xhc3Nlcz1cImNvYWNoLWJvcmRlclwiXG4gICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0PVwiJHt0aGlzLmNvYWNoQm9yZGVyUGFkZGluZyAqIC0xfXB4XCJcbiAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0PVwiJHtib3JkZXJPZmZzZXRYfXB4XCJcbiAgICAgID5cbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICBuYW1lPVwiQ09BQ0hfQk9SREVSX01JRERMRVwiXG4gICAgICAgICAgd2lkdGg9JHtib3JkZXJXaWR0aCAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgIGhlaWdodD0keyhjb2FjaEl0ZW0uZGltZW5zaW9uLmggKyB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0ICogMikgKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICA/c3RyZXRjaD0ke3RydWV9XG4gICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICA8L3NiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZD5cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRSb3dQbGFjZXMoY29hY2g6IENvYWNoSXRlbSwgY29hY2hJbmRleDogbnVtYmVyKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghY29hY2gucGxhY2VzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBQcmVwYWlyIHJvd3Mgd2l0aCB0aGUgcGxhY2VzIHRvIHJlbmRlciBhIHRhYmxlXG4gICAgY29uc3QgdGFibGVSb3dQbGFjZXM6IFJlY29yZDxudW1iZXIsIFBsYWNlW10+ID0ge307XG4gICAgZm9yIChjb25zdCBwbGFjZSBvZiBjb2FjaC5wbGFjZXMpIHtcbiAgICAgIGlmICghdGFibGVSb3dQbGFjZXNbcGxhY2UucG9zaXRpb24ueV0pIHtcbiAgICAgICAgdGFibGVSb3dQbGFjZXNbcGxhY2UucG9zaXRpb24ueV0gPSBbcGxhY2VdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFibGVSb3dQbGFjZXNbcGxhY2UucG9zaXRpb24ueV0ucHVzaChwbGFjZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGFibGVSb3dQbGFjZXMpXG4gICAgICAubWFwKChyb3dQbGFjZXM6IFBsYWNlW10sIGluZGV4KSA9PiB7XG4gICAgICAgIHJldHVybiBodG1sYFxuICAgICAgICAgIDx0ciBpZD1cInJvdy0ke2NvYWNoSW5kZXh9LSR7cm93UGxhY2VzWzBdLnBvc2l0aW9uLnl9XCIgZGF0YS1yb3ctaW5kZXg9JHtpbmRleH0+XG4gICAgICAgICAgICAke3RoaXMuX2dldFJlbmRlcmVkQ29sdW1uUGxhY2VzKHJvd1BsYWNlcywgY29hY2hJbmRleCl9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgYDtcbiAgICAgIH0pXG4gICAgICAuZmxhdE1hcCgocm93VGVtcGxhdGUpID0+IHJvd1RlbXBsYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlcmVkQ29sdW1uUGxhY2VzKHBsYWNlczogUGxhY2VbXSwgY29hY2hJbmRleDogbnVtYmVyKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIC8vU29ydHMgZWFjaCBwbGFjZSBieSBpdHMgYXNjZW5kaW5nIHggY29vcmRpbmF0ZVxuICAgIHBsYWNlcy5zb3J0KFxuICAgICAgKHBsYWNlQTogUGxhY2UsIHBsYWNlQjogUGxhY2UpID0+IE51bWJlcihwbGFjZUEucG9zaXRpb24ueCkgLSBOdW1iZXIocGxhY2VCLnBvc2l0aW9uLngpLFxuICAgICk7XG5cbiAgICByZXR1cm4gcGxhY2VzPy5tYXAoKHBsYWNlOiBQbGFjZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgY2FsY3VsYXRlZEludGVybmFsRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKHBsYWNlLmRpbWVuc2lvbik7XG4gICAgICBjb25zdCBjYWxjdWxhdGVkSW50ZXJuYWxQb3NpdGlvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZFBvc2l0aW9uKHBsYWNlLnBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IHRleHRSb3RhdGlvbiA9IHRoaXMuYWxpZ25WZXJ0aWNhbCA/IC05MCA6IDA7XG5cbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ9XCIke2NhbGN1bGF0ZWRJbnRlcm5hbFBvc2l0aW9uLnl9cHhcIlxuICAgICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZEludGVybmFsUG9zaXRpb24ueH1weFwiXG4gICAgICAgICAgd2lkdGg9XCIke2NhbGN1bGF0ZWRJbnRlcm5hbERpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgICBoZWlnaHQ9XCIke2NhbGN1bGF0ZWRJbnRlcm5hbERpbWVuc2lvbi5ofXB4XCJcbiAgICAgICAgICB6LWluZGV4PVwiJHtwbGFjZS5wb3NpdGlvbi56fVwiXG4gICAgICAgICAgY2VsbC1pZD1cImNlbGwtJHtjb2FjaEluZGV4fS0ke3BsYWNlLnBvc2l0aW9uLnl9LSR7aW5kZXh9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sXG4gICAgICAgICAgICBAc2VsZWN0UGxhY2U9JHsoc2VsZWN0UGxhY2VFdmVudDogQ3VzdG9tRXZlbnQpID0+IHRoaXMuX29uU2VsZWN0UGxhY2Uoc2VsZWN0UGxhY2VFdmVudCl9XG4gICAgICAgICAgICBleHBvcnRwYXJ0cz1cInNiYi1zci1wbGFjZS1wYXJ0XCJcbiAgICAgICAgICAgIGlkPVwic2VhdC1yZXNlcnZhdGlvbl9fcGxhY2UtYnV0dG9uLSR7Y29hY2hJbmRleH0tJHtwbGFjZS5udW1iZXJ9XCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sXCJcbiAgICAgICAgICAgIGRhdGEtY2VsbC1pZD1cIiR7Y29hY2hJbmRleH0tJHtwbGFjZS5wb3NpdGlvbi55fS0ke2luZGV4fVwiXG4gICAgICAgICAgICB0ZXh0PSR7cGxhY2UubnVtYmVyfVxuICAgICAgICAgICAgdHlwZT0ke3BsYWNlLnR5cGV9XG4gICAgICAgICAgICBzdGF0ZT0ke3BsYWNlLnN0YXRlfVxuICAgICAgICAgICAgd2lkdGg9JHtwbGFjZS5kaW1lbnNpb24udyAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgICAgaGVpZ2h0PSR7cGxhY2UuZGltZW5zaW9uLmggKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICAgIHJvdGF0aW9uPSR7cGxhY2Uucm90YXRpb24gPz8gbm90aGluZ31cbiAgICAgICAgICAgIHRleHQtcm90YXRpb249JHt0ZXh0Um90YXRpb259XG4gICAgICAgICAgICBjb2FjaC1pbmRleD0ke2NvYWNoSW5kZXh9XG4gICAgICAgICAgICAucHJvcGVydHlJZHM9JHtwbGFjZS5wcm9wZXJ0eUlkc31cbiAgICAgICAgICAgIC5wcmV2ZW50Q2xpY2s9JHt0aGlzLnByZXZlbnRQbGFjZUNsaWNrfVxuICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2w+XG4gICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgICAgYDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlcmVkR3JhcGhpY2FsRWxlbWVudHMoXG4gICAgZ3JhcGhpY2FsRWxlbWVudHM6IEJhc2VFbGVtZW50W10sXG4gICAgY29hY2hEaW1lbnNpb246IEVsZW1lbnREaW1lbnNpb24sXG4gICk6IFRlbXBsYXRlUmVzdWx0W10gfCBudWxsIHtcbiAgICBpZiAoIWdyYXBoaWNhbEVsZW1lbnRzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3JhcGhpY2FsRWxlbWVudHM/Lm1hcCgoZ3JhcGhpY2FsRWxlbWVudDogQmFzZUVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IGljb24gPSBncmFwaGljYWxFbGVtZW50Lmljb24gPz8gJyc7XG4gICAgICBjb25zdCBlbGVtZW50Um90YXRpb24gPSBncmFwaGljYWxFbGVtZW50LnJvdGF0aW9uIHx8IDA7XG4gICAgICBjb25zdCBpc05vdEZpeGVkUm90YXRpb25HcmFwaGljYWxFbGVtZW50ID1cbiAgICAgICAgdGhpcy5fbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMuaW5kZXhPZihncmFwaGljYWxFbGVtZW50Lmljb24hKSA9PT0gLTE7XG4gICAgICBjb25zdCBlbGVtZW50Rml4ZWRSb3RhdGlvbiA9XG4gICAgICAgIHRoaXMuYWxpZ25WZXJ0aWNhbCAmJiBpc05vdEZpeGVkUm90YXRpb25HcmFwaGljYWxFbGVtZW50XG4gICAgICAgICAgPyBlbGVtZW50Um90YXRpb24gLSA5MFxuICAgICAgICAgIDogZWxlbWVudFJvdGF0aW9uO1xuXG4gICAgICAvL2NoZWNrIGlmIHRoZSBjdXJyZW50IGVsZW1lbnQgaXMgbm90IGFuIGFyZWEgZWxlbWVudCwgc2luY2UgdGhpcyBlbGVtZW50IGlzIGRyYXduIHdpdGhvdXQgYW4gYXJlYSBjb21wb25lbnRcbiAgICAgIGlmICh0aGlzLl9ub3RBcmVhRWxlbWVudHMuZmluZEluZGV4KChub3RBcmVhRWxlbWVudCkgPT4gbm90QXJlYUVsZW1lbnQgPT09IGljb24pID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFJlbmRlckVsZW1lbnRXaXRob3V0QXJlYShncmFwaGljYWxFbGVtZW50LCBlbGVtZW50Um90YXRpb24sIGNvYWNoRGltZW5zaW9uKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9nZXRSZW5kZXJFbGVtZW50V2l0aEFyZWEoZ3JhcGhpY2FsRWxlbWVudCwgZWxlbWVudEZpeGVkUm90YXRpb24sIGNvYWNoRGltZW5zaW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlckVsZW1lbnRXaXRoQXJlYShcbiAgICBncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCxcbiAgICByb3RhdGlvbjogbnVtYmVyLFxuICAgIGNvYWNoRGltZW5zaW9uOiBFbGVtZW50RGltZW5zaW9uLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgLy8gVE9ETyAtPiBpc05vdFRhYmxlR3JhcGhpY1RlbXBGaXggaXMgdGVtcCBmaXggdG8gc2hvdyBjb2FjaCB0YWJsZXMgYXMgYXJlYSBhbmQgbm90IGFzIHN2ZyBncmFwaGljLlxuICAgIC8vIFRoZSBwcm9ibGVtIGhlcmUgaXMgdGhhdCB3aGVuIHVzaW5nIFRBQkxFIHN2ZyBncmFwaGljcyxcbiAgICAvLyB0aGV5IGFyZSBkaXNwbGF5ZWQgZGlzdG9ydGVkIGR1ZSB0byBkaWZmZXJlbnQgaGVpZ2h0cyBhbmQgd2lkdGhzIGFuZCB0aGlzIGlzIG5vdCB2aXN1YWxseSBnb29kLlxuICAgIGNvbnN0IGlzTm90VGFibGVHcmFwaGljVGVtcEZpeCA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvbj8uaW5kZXhPZignVEFCTEUnKSA9PT0gLTE7XG5cbiAgICBjb25zdCBhcmVhUHJvcGVydHkgPVxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5pY29uICYmIGlzTm90VGFibGVHcmFwaGljVGVtcEZpeCA/IGdyYXBoaWNhbEVsZW1lbnQuaWNvbiA6IG51bGw7XG4gICAgY29uc3Qgc3RyZXRjaEhlaWdodCA9IGFyZWFQcm9wZXJ0eSAhPT0gJ0VOVFJZX0VYSVQnO1xuICAgIGNvbnN0IGFyaWFMYWJlbEZvckFyZWEgPSBncmFwaGljYWxFbGVtZW50Lmljb25cbiAgICAgID8gZ2V0STE4blNlYXRSZXNlcnZhdGlvbihncmFwaGljYWxFbGVtZW50Lmljb24sIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpXG4gICAgICA6IG5vdGhpbmc7XG4gICAgY29uc3QgY2FsY3VsYXRlZERpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgICB0cnVlLFxuICAgICAgc3RyZXRjaEhlaWdodCxcbiAgICApO1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRQb3NpdGlvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZFBvc2l0aW9uKFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbixcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICBsZXQgZWxlbWVudE1vdW50aW5nID0gJ2ZyZWUnO1xuICAgIGlmIChncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnkgPT09IHRoaXMuY29hY2hCb3JkZXJPZmZzZXQgKiAtMSkge1xuICAgICAgZWxlbWVudE1vdW50aW5nID0gJ3VwcGVyLWJvcmRlcic7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24ueSArIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLmggPT09XG4gICAgICBjb2FjaERpbWVuc2lvbi5oICsgdGhpcy5jb2FjaEJvcmRlck9mZnNldFxuICAgICkge1xuICAgICAgZWxlbWVudE1vdW50aW5nID0gJ2xvd2VyLWJvcmRlcic7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgIHNjb3BlZC1jbGFzc2VzPVwiZ3JhcGhpY2FsLWVsZW1lbnRcIlxuICAgICAgICBpbnNldC1ibG9jay1zdGFydD1cIiR7Y2FsY3VsYXRlZFBvc2l0aW9uLnl9cHhcIlxuICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ9XCIke2NhbGN1bGF0ZWRQb3NpdGlvbi54fXB4XCJcbiAgICAgICAgd2lkdGg9XCIke2NhbGN1bGF0ZWREaW1lbnNpb24ud31weFwiXG4gICAgICAgIGhlaWdodD1cIiR7Y2FsY3VsYXRlZERpbWVuc2lvbi5ofXB4XCJcbiAgICAgICAgei1pbmRleD1cIiR7Z3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbi56fVwiXG4gICAgICA+XG4gICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhXG4gICAgICAgICAgc3R5bGU9JHtzdHlsZU1hcCh7XG4gICAgICAgICAgICAnLS1zYmItcmVzZXJ2YXRpb24tYXJlYS13aWR0aCc6IGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLncgKiB0aGlzLmJhc2VHcmlkU2l6ZSxcbiAgICAgICAgICAgICctLXNiYi1yZXNlcnZhdGlvbi1hcmVhLWhlaWdodCc6IGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLmggKiB0aGlzLmJhc2VHcmlkU2l6ZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgICBtb3VudGluZz0ke2VsZW1lbnRNb3VudGluZ31cbiAgICAgICAgICBiYWNrZ3JvdW5kPVwiZGFya1wiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICB0aXRsZT0ke2FyaWFMYWJlbEZvckFyZWF9XG4gICAgICAgID5cbiAgICAgICAgICAke2FyZWFQcm9wZXJ0eVxuICAgICAgICAgICAgPyBodG1sYFxuICAgICAgICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljXG4gICAgICAgICAgICAgICAgICBuYW1lPSR7YXJlYVByb3BlcnR5fVxuICAgICAgICAgICAgICAgICAgcm90YXRpb249JHtyb3RhdGlvbn1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPSR7dGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9JHt0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljPlxuICAgICAgICAgICAgICBgXG4gICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYT5cbiAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJFbGVtZW50V2l0aG91dEFyZWEoXG4gICAgZ3JhcGhpY2FsRWxlbWVudDogQmFzZUVsZW1lbnQsXG4gICAgcm90YXRpb246IG51bWJlcixcbiAgICBjb2FjaERpbWVuc2lvbjogRWxlbWVudERpbWVuc2lvbixcbiAgKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGNhbGN1bGF0ZWREaW1lbnNpb24gPSB0aGlzLmdldENhbGN1bGF0ZWREaW1lbnNpb24oXG4gICAgICBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbixcbiAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICk7XG4gICAgY29uc3QgY2FsY3VsYXRlZFBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24oXG4gICAgICBncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICBjb2FjaERpbWVuc2lvbixcbiAgICApO1xuXG4gICAgLy8gSWYgdGhlIGljb24gaXMgdGhlIGRyaXZlciBhcmVhLCB0aGVuIGhlcmUgY29uY2F0IHRoZSB2ZWhpY2xlIHR5cGUgdG8gZ2V0IHRoZSByaWdodCB2ZWhpY2xlIGNoYXNzaWUgaWNvblxuICAgIGNvbnN0IGljb24gPVxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5pY29uICYmIGdyYXBoaWNhbEVsZW1lbnQuaWNvbi5pbmRleE9mKCdEUklWRVJfQVJFQScpID09PSAtMVxuICAgICAgICA/IGdyYXBoaWNhbEVsZW1lbnQuaWNvblxuICAgICAgICA6IGdyYXBoaWNhbEVsZW1lbnQuaWNvbj8uY29uY2F0KCdfJywgdGhpcy5zZWF0UmVzZXJ2YXRpb24udmVoaWNsZVR5cGUpO1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgIHNjb3BlZC1jbGFzc2VzPVwiZ3JhcGhpY2FsLWVsZW1lbnRcIlxuICAgICAgICBpbnNldC1ibG9jay1zdGFydD1cIiR7Y2FsY3VsYXRlZFBvc2l0aW9uLnl9cHhcIlxuICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ9XCIke2NhbGN1bGF0ZWRQb3NpdGlvbi54fXB4XCJcbiAgICAgICAgd2lkdGg9XCIke2NhbGN1bGF0ZWREaW1lbnNpb24ud31weFwiXG4gICAgICAgIGhlaWdodD1cIiR7Y2FsY3VsYXRlZERpbWVuc2lvbi5ofXB4XCJcbiAgICAgICAgei1pbmRleD1cIiR7Z3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbi56fVwiXG4gICAgICA+XG4gICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljXG4gICAgICAgICAgbmFtZT0ke2ljb24gPz8gbm90aGluZ31cbiAgICAgICAgICB3aWR0aD0ke2dyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLncgKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICBoZWlnaHQ9JHtncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbi5oICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgcm90YXRpb249JHtyb3RhdGlvbn1cbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgID9zdHJldGNoPSR7dHJ1ZX1cbiAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYz5cbiAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZFNlcnZpY2VFbGVtZW50cyhzZXJ2aWNlRWxlbWVudHM/OiBCYXNlRWxlbWVudFtdKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghc2VydmljZUVsZW1lbnRzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VydmljZUVsZW1lbnRzPy5tYXAoKHNlcnZpY2VFbGVtZW50OiBCYXNlRWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgdGl0bGVEZXNjcmlwdGlvbiA9IHNlcnZpY2VFbGVtZW50Lmljb25cbiAgICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKHNlcnZpY2VFbGVtZW50Lmljb24sIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpXG4gICAgICAgIDogbnVsbDtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlckRpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihcbiAgICAgICAgc2VydmljZUVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlclBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24oXG4gICAgICAgIHNlcnZpY2VFbGVtZW50LnBvc2l0aW9uLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVsZW1lbnRSb3RhdGlvbiA9IHNlcnZpY2VFbGVtZW50LnJvdGF0aW9uIHx8IDA7XG4gICAgICBjb25zdCBlbGVtZW50Rml4ZWRSb3RhdGlvbiA9IHRoaXMuYWxpZ25WZXJ0aWNhbCA/IGVsZW1lbnRSb3RhdGlvbiAtIDkwIDogZWxlbWVudFJvdGF0aW9uO1xuXG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZFxuICAgICAgICAgIHNjb3BlZC1jbGFzc2VzPVwiZ3JhcGhpY2FsLWVsZW1lbnRcIlxuICAgICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0PVwiJHtjYWxjdWxhdGVkY0NtcGFydG1lbnROdW1iZXJQb3NpdGlvbi55fXB4XCJcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlclBvc2l0aW9uLnh9cHhcIlxuICAgICAgICAgIHdpZHRoPVwiJHtjYWxjdWxhdGVkY0NtcGFydG1lbnROdW1iZXJEaW1lbnNpb24ud31weFwiXG4gICAgICAgICAgaGVpZ2h0PVwiJHtjYWxjdWxhdGVkY0NtcGFydG1lbnROdW1iZXJEaW1lbnNpb24uaH1weFwiXG4gICAgICAgICAgei1pbmRleD1cIiR7c2VydmljZUVsZW1lbnQucG9zaXRpb24uen1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICAgIG5hbWU9JHtzZXJ2aWNlRWxlbWVudC5pY29uID8/IG5vdGhpbmd9XG4gICAgICAgICAgICB3aWR0aD0ke3NlcnZpY2VFbGVtZW50LmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgICBoZWlnaHQ9JHtzZXJ2aWNlRWxlbWVudC5kaW1lbnNpb24uaCAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgICAgLnJvdGF0aW9uPSR7ZWxlbWVudEZpeGVkUm90YXRpb259XG4gICAgICAgICAgICByb2xlPVwiaW1nXCJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICB0aXRsZT0ke3RpdGxlRGVzY3JpcHRpb24gPz8gbm90aGluZ31cbiAgICAgICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljPlxuICAgICAgICA8L3NiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZD5cbiAgICAgIGA7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTWFuYWdlcyB0aGUgc2VsZWN0ZWQgcGxhY2UgZXZlbnQgdHJpZ2dlcmVkIGZyb20gdGhlIHBsYWNlXG4gICAqIEVhY2ggc2VsZWN0aW9uIGVtaXRzIGFuIGFycmF5IG9mIGFsbCBzZWxlY3RlZCBwbGFjZXNcbiAgICogQHBhcmFtIHNlbGVjdFBsYWNlRXZlbnRcbiAgICovXG4gIHByaXZhdGUgX29uU2VsZWN0UGxhY2Uoc2VsZWN0UGxhY2VFdmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZFBsYWNlID0gc2VsZWN0UGxhY2VFdmVudC5kZXRhaWwgYXMgUGxhY2VTZWxlY3Rpb247XG4gICAgLy8gV2UgaGF2ZSB0byBzZXQgcHJldmVudENvYWNoU2Nyb2xsQnlQbGFjZUNsaWNrIHRvIHRydWUsIHRvIHByZXZlbnQgYXV0b21hdGljIHNjcm9sbGluZyB0byB0aGUgbmV3IGZvY3VzZWQgcGxhY2VcbiAgICB0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljayA9IHRydWU7XG4gICAgdGhpcy5pc0NvY2hHcmlkRm9jdXNhYmxlID0gZmFsc2U7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRQbGFjZUNsaWNrKSB7XG4gICAgICAvLyBBZGQgcGxhY2UgdG8gcGxhY2UgY29sbGVjdGlvblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlcyhzZWxlY3RlZFBsYWNlKTtcbiAgICAgIHRoaXMudXBkYXRlQ3VycmVudFNlbGVjdGVkUGxhY2VJbkNvYWNoKHNlbGVjdGVkUGxhY2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uU2VsZWN0TmF2Q29hY2goZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWROYXZDb2FjaEluZGV4ID0gZXZlbnQuZGV0YWlsIGFzIG51bWJlcjtcbiAgICB0aGlzLmlzS2V5Ym9hcmROYXZpZ2F0aW9uID0gZmFsc2U7XG5cbiAgICBpZiAoc2VsZWN0ZWROYXZDb2FjaEluZGV4ICE9PSBudWxsICYmIHNlbGVjdGVkTmF2Q29hY2hJbmRleCAhPT0gdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4KSB7XG4gICAgICB0aGlzLnVuZm9jdXNQbGFjZUVsZW1lbnQoKTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9TZWxlY3RlZE5hdkNvYWNoKHNlbGVjdGVkTmF2Q29hY2hJbmRleCk7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5hdkNvYWNoSW5kZXggPT09IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCkge1xuICAgICAgdGhpcy51cGRhdGVDdXJyZW50U2VsZWN0ZWRDb2FjaCgpO1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbkZvY3VzTmF2Q29hY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljaykge1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1BsYWNlRWxlbWVudCh0aGlzLmN1cnJTZWxlY3RlZFBsYWNlKTtcbiAgICB9XG4gICAgdGhpcy5pc0F1dG9TY3JvbGxpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERlc2NyaXB0aW9uVGFibGVDb2FjaChjb2FjaEl0ZW06IENvYWNoSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKCFjb2FjaEl0ZW0ucGxhY2VzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9CTE9DS0VEX1RBQkxFX0NBUFRJT04nLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LCBbXG4gICAgICAgIGNvYWNoSXRlbS5pZCxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIGxldCB0YWJsZUNvYWNoRGVzY3JpcHRpb24gPSAnJztcbiAgICBjb25zdCBhcmVhRGVzY3JpcHRpb25zID0gdGhpcy5fZ2V0VGl0bGVEZXNjcmlwdGlvbkxpc3RTdHJpbmcoY29hY2hJdGVtLmdyYXBoaWNFbGVtZW50cyEpO1xuICAgIGNvbnN0IHNlcnZpY2VEZXNjcmlwdGlvbnMgPSB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uTGlzdFN0cmluZyhjb2FjaEl0ZW0uc2VydmljZUVsZW1lbnRzISk7XG5cbiAgICB0YWJsZUNvYWNoRGVzY3JpcHRpb24gPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9UQUJMRV9DQVBUSU9OJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCwgW1xuICAgICAgY29hY2hJdGVtLmlkLFxuICAgIF0pO1xuXG4gICAgaWYgKCEhYXJlYURlc2NyaXB0aW9ucyB8fCAhIXNlcnZpY2VEZXNjcmlwdGlvbnMpIHtcbiAgICAgIHRhYmxlQ29hY2hEZXNjcmlwdGlvbiArPVxuICAgICAgICAnLiAnICsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbignQ09BQ0hfQVZBSUxBQkxFX1NFUlZJQ0VTJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkgKyAnOiAnO1xuICAgICAgdGFibGVDb2FjaERlc2NyaXB0aW9uICs9IHNlcnZpY2VEZXNjcmlwdGlvbnMgKyAnLCAnICsgYXJlYURlc2NyaXB0aW9ucyArICcuJztcbiAgICB9XG4gICAgcmV0dXJuIHRhYmxlQ29hY2hEZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRpdGxlRGVzY3JpcHRpb25MaXN0U3RyaW5nKGRlc2NyaXB0aW9uc0VsZW1lbnRzOiBCYXNlRWxlbWVudFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCB1bmlxdWVEZXNjcmlwdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICByZXR1cm4gZGVzY3JpcHRpb25zRWxlbWVudHNcbiAgICAgID8ubWFwKChkZXNjcmlwdGlvbkVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgaWNvbiA9IGRlc2NyaXB0aW9uRWxlbWVudC5pY29uO1xuICAgICAgICBpZiAoIWljb24pIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uQWxyZWF5RXhpc3QgPSB1bmlxdWVEZXNjcmlwdGlvbnMuaW5kZXhPZihpY29uKSA+IC0xO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICAgZGVzY3JpcHRpb25FbGVtZW50Lmljb24hLFxuICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGlzVmFsaWREZXNjcmlwdGlvbiA9XG4gICAgICAgICAgdGhpcy5fbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMuaW5kZXhPZihpY29uKSA9PT0gLTEgJiZcbiAgICAgICAgICB0aGlzLl9ub3RBcmVhRWxlbWVudHMuaW5kZXhPZihpY29uKSA9PT0gLTE7XG5cbiAgICAgICAgaWYgKCFkZXNjcmlwdGlvbkFscmVheUV4aXN0KSB7XG4gICAgICAgICAgdW5pcXVlRGVzY3JpcHRpb25zLnB1c2goZGVzY3JpcHRpb25FbGVtZW50Lmljb24hKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISF0cmFuc2xhdGlvbiAmJiAhZGVzY3JpcHRpb25BbHJlYXlFeGlzdCAmJiBpc1ZhbGlkRGVzY3JpcHRpb24gPyB0cmFuc2xhdGlvbiA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoZGVzY3JpcHRpb24pID0+ICEhZGVzY3JpcHRpb24pXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24nOiBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBb0NNLDZCQUF5QixNQUFBOzswQkFEOUIsY0FBYyxzQkFBc0IsQ0FBQzs7OztvQkFDRTs7Ozs7Ozs7Ozs7Ozs7OztBQUFSLEVBQUEsbUJBQVEsWUFBMEI7QUFBQTs7QUFLaEU7QUFLQTtBQUtBO0FBS0E7QUFLQTtBQXBCeUIseUJBQUEsbUNBQUEsa0JBQUEsTUFBQSwrQkFBbUMsSUFBSztBQUt4Qyx5QkFBQSxrQ0FBQSxrQkFBQSxNQUFBLGtDQUFBLEdBQUEsa0JBQUEsTUFBQSw2QkFBeUIsSUFBSTtBQUs3Qix5QkFBQSxrQ0FBQSxrQkFBQSxNQUFBLGdDQUFBLEdBQUEsa0JB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
608
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24uY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGh0bWwsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9jbGFzcy1tYXAuanMnO1xuaW1wb3J0IHsgc3R5bGVNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9zdHlsZS1tYXAuanMnO1xuXG5pbXBvcnQgeyBnZXRJMThuU2VhdFJlc2VydmF0aW9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29hY2hJdGVtLFxuICBQbGFjZSxcbiAgRWxlbWVudERpbWVuc2lvbixcbiAgQmFzZUVsZW1lbnQsXG4gIFBsYWNlU2VsZWN0aW9uLFxuICBTZWF0UmVzZXJ2YXRpb24sXG59IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCB7IFNlYXRSZXNlcnZhdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLWJhc2UtZWxlbWVudC5qcyc7XG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1hcmVhLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaC5qcyc7XG5pbXBvcnQgJy4vc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQuanMnO1xuXG4vKipcbiAqIERlc2NyaWJlIHRoZSBwdXJwb3NlIG9mIHRoZSBjb21wb25lbnQgd2l0aCBhIHNpbmdsZSBzaG9ydCBzZW50ZW5jZS5cbiAqXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNlYXRSZXNlcnZhdGlvblNlbGVjdGVkUGxhY2VzRXZlbnREZXRhaWxzPn0gc2VsZWN0ZWRQbGFjZXMgLSBFbWl0cyB3aGVuIGEgcGxhY2Ugd2FzIHNlbGVjdGVkIGFuZCByZXR1cm5zIGEgUGxhY2UgYXJyYXkgd2l0aCBhbGwgc2VsZWN0ZWQgcGxhY2VzXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNlYXRSZXNlcnZhdGlvbkNvYWNoU2VsZWN0aW9uPn0gc2VsZWN0ZWRDb2FjaCAtIEVtaXRzIHdoZW4gYSBjb2FjaCB3YXMgc2VsZWN0ZWQgYW5kIHJldHVybnMgYSBDb2FjaFNlbGVjdGlvblxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbicpXG5jbGFzcyBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50IGV4dGVuZHMgU2VhdFJlc2VydmF0aW9uQmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogVGhlIHNlYXQgcmVzZXJ2YXRpb24gb2JqZWN0IHdoaWNoIGNvbnRhaW5zIGFsbCBjb2FjaGVzIGFuZCBwbGFjZXMgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc2VhdC1yZXNlcnZhdGlvbicsIHR5cGU6IE9iamVjdCB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgYWNjZXNzb3Igc2VhdFJlc2VydmF0aW9uOiBTZWF0UmVzZXJ2YXRpb24gPSBudWxsITtcblxuICAvKiogVGhlIHNlYXQgcmVzZXJ2YXRpb24gbmF2aWdhdGlvbiBjYW4gYmUgdG9nZ2xlZCBieSB0aGlzIHByb3BlcnR5ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoYXMtbmF2aWdhdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIGhhc05hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKiBDb250cm9scyB0aGUgdmlzdWFsIHJlcHJlc2VudGF0aW9uIG9mIHNlYXQgcmVzZXJ2YXRpb24gaW4gYSBob3Jpem9uYWwgb3IgdmVydGljYWwgYWxpZ25tZW50ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhbGlnbi12ZXJ0aWNhbCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIGFsaWduVmVydGljYWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTWF4aW1hbCBudW1iZXIgb2YgcG9zc2libGUgY2xpY2thYmxlIHNlYXRzICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdtYXgtcmVzZXJ2YXRpb25zJywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBtYXhSZXNlcnZhdGlvbnM6IG51bWJlciA9IG51bGwhO1xuXG4gIC8qKiBBbnkgY2xpY2sgZnVuY3Rpb25hbGl0eSBpcyBwcmV2ZW50ZWQgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3ByZXZlbnQtcGxhY2UtY2xpY2snLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBwcmV2ZW50UGxhY2VDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfY29hY2hlc0h0bWxUZW1wbGF0ZT86IFRlbXBsYXRlUmVzdWx0O1xuICAvLyBHcmFwaGljcyB0aGF0IHNob3VsZCBub3QgYmUgcmVuZGVyZWQgd2l0aCBhbiBhcmVhXG4gIHByaXZhdGUgX25vdEFyZWFFbGVtZW50cyA9IFtcbiAgICAnRFJJVkVSX0FSRUFfRlVMTCcsXG4gICAgJ0NPQUNIX1BBU1NBR0UnLFxuICAgICdDT0FDSF9XQUxMX05PX1BBU1NBR0UnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRV9ISUdIJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRV9NSURETEUnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFX0xPVycsXG4gIF07XG4gIC8vIEFyZWEgaWNvbnMgdGhhdCBzaG91bGQgbm90IGJlIGZpeGVkIGR1cmluZyByb3RhdGlvbiB3aGVuIHZlcnRpY2FsIG1vZGUgaXMgc2VsZWN0ZWRcbiAgcHJpdmF0ZSBfbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMgPSBbJ0VOVFJZX0VYSVQnXTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2hhc05hdmlnYXRpb24nKSkge1xuICAgICAgaWYgKHRoaXMuaGFzTmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLnNoYWRvd1Jvb3RcbiAgICAgICAgICA/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlJylcbiAgICAgICAgICAuZm9yRWFjaCgodGFibGUpID0+IHRhYmxlLnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNoYWRvd1Jvb3RcbiAgICAgICAgICA/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlJylcbiAgICAgICAgICAuZm9yRWFjaCgodGFibGUpID0+IHRhYmxlLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fY29tcG9uZW50U2V0dXAoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICB0aGlzLl9pbml0VmVoaWNsZVNlYXRSZXNlcnZhdGlvbkNvbnN0cnVjdGlvbigpO1xuICAgIHJldHVybiB0aGlzLl9jb2FjaGVzSHRtbFRlbXBsYXRlIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9jb21wb25lbnRTZXR1cCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXROYXZpZ2F0aW9uU2VsZWN0aW9uQnlTY3JvbGxFdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFZlaGljbGVTZWF0UmVzZXJ2YXRpb25Db25zdHJ1Y3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3QgY29hY2hJdGVtcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWF0UmVzZXJ2YXRpb24/LmNvYWNoSXRlbXMpKTtcbiAgICBjb25zdCBjbGFzc0FsaWduVmVydGljYWwgPSB0aGlzLmFsaWduVmVydGljYWwgPyAnc2JiLXNyX193cmFwcGVyLS12ZXJ0aWNhbCcgOiAnJztcblxuICAgIHRoaXMuX2NvYWNoZXNIdG1sVGVtcGxhdGUgPSBodG1sYFxuICAgICAgPGRpdj5cbiAgICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cImZpcnN0LXRhYi1lbGVtZW50XCJcbiAgICAgICAgICAgIHJvbGU9XCJjb250ZW50aW5mb1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdTRUFUX1JFU0VSVkFUSU9OX0JFR0lOJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCl9XCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuXG4gICAgICAgIDxkaXYgQGtleWRvd249JHsoZXZ0OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLmhhbmRsZUtleWJvYXJkRXZlbnQoZXZ0KX0+XG4gICAgICAgICAgJHt0aGlzLl9yZW5kZXJOYXZpZ2F0aW9uKCl9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zcl9fd3JhcHBlciAke2NsYXNzQWxpZ25WZXJ0aWNhbH1cIj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJzYmItc3JfX3BhcmVudC1hcmVhXCIgY2xhc3M9XCJzYmItc3JfX3BhcmVudFwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwic2JiLXNyX19saXN0LWNvYWNoZXNcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJDb2FjaGVzKGNvYWNoSXRlbXMpfVxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxzYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJsYXN0LXRhYi1lbGVtZW50XCJcbiAgICAgICAgICAgIHJvbGU9XCJjb250ZW50aW5mb1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdTRUFUX1JFU0VSVkFUSU9OX0VORCcsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpfVwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJOYXZpZ2F0aW9uKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmhhc05hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPG5hdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyAnc2JiLXNyLW5hdmlnYXRpb24tLXZlcnRpY2FsJzogdGhpcy5hbGlnblZlcnRpY2FsIH0pfVwiPlxuICAgICAgICA8dWxcbiAgICAgICAgICBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uX19saXN0LWNvYWNoZXNcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCIke2dldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICAgICAnU0VBVF9SRVNFUlZBVElPTl9OQVZJR0FUSU9OJyxcbiAgICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgICAgKX1cIlxuICAgICAgICA+XG4gICAgICAgICAgJHt0aGlzLnNlYXRSZXNlcnZhdGlvbj8uY29hY2hJdGVtcy5tYXAoKGNvYWNoSXRlbTogQ29hY2hJdGVtLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaHRtbGA8bGk+XG4gICAgICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoXG4gICAgICAgICAgICAgICAgQHNlbGVjdENvYWNoPSR7KGV2ZW50OiBDdXN0b21FdmVudCkgPT4gdGhpcy5fb25TZWxlY3ROYXZDb2FjaChldmVudCl9XG4gICAgICAgICAgICAgICAgQGZvY3VzQ29hY2g9JHsoKSA9PiB0aGlzLl9vbkZvY3VzTmF2Q29hY2goKX1cbiAgICAgICAgICAgICAgICBpbmRleD1cIiR7aW5kZXh9XCJcbiAgICAgICAgICAgICAgICBjb2FjaC1pZD1cIiR7Y29hY2hJdGVtLmlkfVwiXG4gICAgICAgICAgICAgICAgLnNlbGVjdGVkPSR7dGhpcy5zZWxlY3RlZENvYWNoSW5kZXggPT09IGluZGV4fVxuICAgICAgICAgICAgICAgIC5mb2N1c2VkPSR7dGhpcy5mb2N1c2VkQ29hY2hJbmRleCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgICAgLnByb3BlcnR5SWRzPVwiJHtjb2FjaEl0ZW0ucHJvcGVydHlJZHN9XCJcbiAgICAgICAgICAgICAgICAudHJhdmVsQ2xhc3M9XCIke2NvYWNoSXRlbS50cmF2ZWxDbGFzc31cIlxuICAgICAgICAgICAgICAgID9kcml2ZXItYXJlYT1cIiR7IWNvYWNoSXRlbS5wbGFjZXM/Lmxlbmd0aH1cIlxuICAgICAgICAgICAgICAgID9maXJzdD1cIiR7aW5kZXggPT09IDB9XCJcbiAgICAgICAgICAgICAgICA/bGFzdD1cIiR7aW5kZXggPT09IHRoaXMuc2VhdFJlc2VydmF0aW9uPy5jb2FjaEl0ZW1zLmxlbmd0aCAtIDF9XCJcbiAgICAgICAgICAgICAgICA/dmVydGljYWw9XCIke3RoaXMuYWxpZ25WZXJ0aWNhbH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaD5cbiAgICAgICAgICAgIDwvbGk+YDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC91bD5cbiAgICAgIDwvbmF2PlxuICAgIGA7XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBjb2FjaGVzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIF9yZW5kZXJDb2FjaGVzKGNvYWNoZXM/OiBDb2FjaEl0ZW1bXSk6IFRlbXBsYXRlUmVzdWx0W10gfCBudWxsIHtcbiAgICBpZiAoIWNvYWNoZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY29hY2hlcy5tYXAoKGNvYWNoSXRlbTogQ29hY2hJdGVtLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPGxpIGNsYXNzPVwic2JiLXNyX19pdGVtLWNvYWNoXCI+JHt0aGlzLl9yZW5kZXJDb2FjaEVsZW1lbnQoY29hY2hJdGVtLCBpbmRleCl9PC9saT5cbiAgICAgIGA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJDb2FjaEVsZW1lbnQoY29hY2hJdGVtOiBDb2FjaEl0ZW0sIGluZGV4OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZENvYWNoRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKGNvYWNoSXRlbS5kaW1lbnNpb24pO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uVGFibGVDb2FjaFdpdGhTZXJ2aWNlcyA9IHRoaXMuX2dldERlc2NyaXB0aW9uVGFibGVDb2FjaChjb2FjaEl0ZW0pO1xuXG4gICAgcmV0dXJuIGh0bWxgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgIHNjb3BlZC1jbGFzc2VzPVwiY29hY2gtd3JhcHBlclwiXG4gICAgICBoZWlnaHQ9XCIke2NhbGN1bGF0ZWRDb2FjaERpbWVuc2lvbi5ofXB4XCJcbiAgICAgIHdpZHRoPVwiJHtjYWxjdWxhdGVkQ29hY2hEaW1lbnNpb24ud31weFwiXG4gICAgPlxuICAgICAgJHt0aGlzLl9nZXRSZW5kZXJlZENvYWNoQm9yZGVycyhjb2FjaEl0ZW0sIGluZGV4KX1cbiAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRHcmFwaGljYWxFbGVtZW50cyhjb2FjaEl0ZW0uZ3JhcGhpY0VsZW1lbnRzIHx8IFtdLCBjb2FjaEl0ZW0uZGltZW5zaW9uKX1cbiAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRTZXJ2aWNlRWxlbWVudHMoY29hY2hJdGVtLnNlcnZpY2VFbGVtZW50cyl9XG4gICAgICA8dGFibGVcbiAgICAgICAgQGZvY3VzPSR7KCkgPT4gdGhpcy5vbkZvY3VzVGFibGVDb2FjaEFuZFByZXNlbGVjdFBsYWNlKGluZGV4KX1cbiAgICAgICAgaWQ9XCJzYmItc3ItY29hY2gtJHtpbmRleH1cIlxuICAgICAgICBjbGFzcz1cInNiYi1zci1jb2FjaC13cmFwcGVyX190YWJsZVwiXG4gICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJzYmItc3ItY29hY2gtY2FwdGlvbi0ke2luZGV4fVwiXG4gICAgICA+XG4gICAgICAgIDxjYXB0aW9uIGlkPVwic2JiLXNyLWNvYWNoLWNhcHRpb24tJHtpbmRleH1cIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+JHtkZXNjcmlwdGlvblRhYmxlQ29hY2hXaXRoU2VydmljZXN9PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICA8L2NhcHRpb24+XG4gICAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRSb3dQbGFjZXMoY29hY2hJdGVtLCBpbmRleCl9XG4gICAgICA8L3RhYmxlPlxuICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPmA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZENvYWNoQm9yZGVycyhjb2FjaEl0ZW06IENvYWNoSXRlbSwgY29hY2hJbmRleDogbnVtYmVyKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGFsbEVsZW1lbnRzID0gY29hY2hJdGVtLmdyYXBoaWNFbGVtZW50cztcbiAgICBjb25zdCBDT0FDSF9QQVNTQUdFX1dJRFRIID0gMTtcbiAgICBjb25zdCBkcml2ZXJBcmVhID0gYWxsRWxlbWVudHM/LmZpbmQoXG4gICAgICAoZWxlbWVudDogQmFzZUVsZW1lbnQpID0+IGVsZW1lbnQuaWNvbiA9PT0gJ0RSSVZFUl9BUkVBX0ZVTEwnLFxuICAgICk7XG4gICAgY29uc3QgYm9yZGVyV2lkdGggPSBkcml2ZXJBcmVhXG4gICAgICA/IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIGRyaXZlckFyZWEuZGltZW5zaW9uLncgLSBDT0FDSF9QQVNTQUdFX1dJRFRIXG4gICAgICA6IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIENPQUNIX1BBU1NBR0VfV0lEVEggKiAyO1xuICAgIGNvbnN0IGJvcmRlck9mZnNldFggPVxuICAgICAgY29hY2hJbmRleCA9PT0gMCAmJiBkcml2ZXJBcmVhXG4gICAgICAgID8gZHJpdmVyQXJlYT8uZGltZW5zaW9uLncgKiB0aGlzLmJhc2VHcmlkU2l6ZVxuICAgICAgICA6IHRoaXMuYmFzZUdyaWRTaXplO1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgIHNjb3BlZC1jbGFzc2VzPVwiY29hY2gtYm9yZGVyXCJcbiAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ9XCIke3RoaXMuY29hY2hCb3JkZXJQYWRkaW5nICogLTF9cHhcIlxuICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ9XCIke2JvcmRlck9mZnNldFh9cHhcIlxuICAgICAgPlxuICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpY1xuICAgICAgICAgIG5hbWU9XCJDT0FDSF9CT1JERVJfTUlERExFXCJcbiAgICAgICAgICB3aWR0aD0ke2JvcmRlcldpZHRoICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgaGVpZ2h0PSR7KGNvYWNoSXRlbS5kaW1lbnNpb24uaCArIHRoaXMuY29hY2hCb3JkZXJPZmZzZXQgKiAyKSAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgID9zdHJldGNoPSR7dHJ1ZX1cbiAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYz5cbiAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZFJvd1BsYWNlcyhjb2FjaDogQ29hY2hJdGVtLCBjb2FjaEluZGV4OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgaWYgKCFjb2FjaC5wbGFjZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIFByZXBhaXIgcm93cyB3aXRoIHRoZSBwbGFjZXMgdG8gcmVuZGVyIGEgdGFibGVcbiAgICBjb25zdCB0YWJsZVJvd1BsYWNlczogUmVjb3JkPG51bWJlciwgUGxhY2VbXT4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHBsYWNlIG9mIGNvYWNoLnBsYWNlcykge1xuICAgICAgaWYgKCF0YWJsZVJvd1BsYWNlc1twbGFjZS5wb3NpdGlvbi55XSkge1xuICAgICAgICB0YWJsZVJvd1BsYWNlc1twbGFjZS5wb3NpdGlvbi55XSA9IFtwbGFjZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YWJsZVJvd1BsYWNlc1twbGFjZS5wb3NpdGlvbi55XS5wdXNoKHBsYWNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0YWJsZVJvd1BsYWNlcylcbiAgICAgIC5tYXAoKHJvd1BsYWNlczogUGxhY2VbXSwgaW5kZXgpID0+IHtcbiAgICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgICAgPHRyIGlkPVwicm93LSR7Y29hY2hJbmRleH0tJHtyb3dQbGFjZXNbMF0ucG9zaXRpb24ueX1cIiBkYXRhLXJvdy1pbmRleD0ke2luZGV4fT5cbiAgICAgICAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRDb2x1bW5QbGFjZXMocm93UGxhY2VzLCBjb2FjaEluZGV4KX1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICBgO1xuICAgICAgfSlcbiAgICAgIC5mbGF0TWFwKChyb3dUZW1wbGF0ZSkgPT4gcm93VGVtcGxhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRDb2x1bW5QbGFjZXMocGxhY2VzOiBQbGFjZVtdLCBjb2FjaEluZGV4OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgLy9Tb3J0cyBlYWNoIHBsYWNlIGJ5IGl0cyBhc2NlbmRpbmcgeCBjb29yZGluYXRlXG4gICAgcGxhY2VzLnNvcnQoXG4gICAgICAocGxhY2VBOiBQbGFjZSwgcGxhY2VCOiBQbGFjZSkgPT4gTnVtYmVyKHBsYWNlQS5wb3NpdGlvbi54KSAtIE51bWJlcihwbGFjZUIucG9zaXRpb24ueCksXG4gICAgKTtcblxuICAgIHJldHVybiBwbGFjZXM/Lm1hcCgocGxhY2U6IFBsYWNlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBjYWxjdWxhdGVkSW50ZXJuYWxEaW1lbnNpb24gPSB0aGlzLmdldENhbGN1bGF0ZWREaW1lbnNpb24ocGxhY2UuZGltZW5zaW9uKTtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRJbnRlcm5hbFBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24ocGxhY2UucG9zaXRpb24pO1xuICAgICAgY29uc3QgdGV4dFJvdGF0aW9uID0gdGhpcy5hbGlnblZlcnRpY2FsID8gLTkwIDogMDtcblxuICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgICAgICBzY29wZWQtY2xhc3Nlcz1cImdyYXBoaWNhbC1lbGVtZW50XCJcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydD1cIiR7Y2FsY3VsYXRlZEludGVybmFsUG9zaXRpb24ueX1weFwiXG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0PVwiJHtjYWxjdWxhdGVkSW50ZXJuYWxQb3NpdGlvbi54fXB4XCJcbiAgICAgICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZEludGVybmFsRGltZW5zaW9uLnd9cHhcIlxuICAgICAgICAgIGhlaWdodD1cIiR7Y2FsY3VsYXRlZEludGVybmFsRGltZW5zaW9uLmh9cHhcIlxuICAgICAgICAgIHotaW5kZXg9XCIke3BsYWNlLnBvc2l0aW9uLnp9XCJcbiAgICAgICAgICBjZWxsLWlkPVwiY2VsbC0ke2NvYWNoSW5kZXh9LSR7cGxhY2UucG9zaXRpb24ueX0tJHtpbmRleH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcbiAgICAgICAgICAgIEBzZWxlY3RQbGFjZT0keyhzZWxlY3RQbGFjZUV2ZW50OiBDdXN0b21FdmVudCkgPT4gdGhpcy5fb25TZWxlY3RQbGFjZShzZWxlY3RQbGFjZUV2ZW50KX1cbiAgICAgICAgICAgIGV4cG9ydHBhcnRzPVwic2JiLXNyLXBsYWNlLXBhcnRcIlxuICAgICAgICAgICAgaWQ9XCJzZWF0LXJlc2VydmF0aW9uX19wbGFjZS1idXR0b24tJHtjb2FjaEluZGV4fS0ke3BsYWNlLm51bWJlcn1cIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcIlxuICAgICAgICAgICAgZGF0YS1jZWxsLWlkPVwiJHtjb2FjaEluZGV4fS0ke3BsYWNlLnBvc2l0aW9uLnl9LSR7aW5kZXh9XCJcbiAgICAgICAgICAgIHRleHQ9JHtwbGFjZS5udW1iZXJ9XG4gICAgICAgICAgICB0eXBlPSR7cGxhY2UudHlwZX1cbiAgICAgICAgICAgIHN0YXRlPSR7cGxhY2Uuc3RhdGV9XG4gICAgICAgICAgICB3aWR0aD0ke3BsYWNlLmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgICBoZWlnaHQ9JHtwbGFjZS5kaW1lbnNpb24uaCAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgICAgcm90YXRpb249JHtwbGFjZS5yb3RhdGlvbiA/PyBub3RoaW5nfVxuICAgICAgICAgICAgdGV4dC1yb3RhdGlvbj0ke3RleHRSb3RhdGlvbn1cbiAgICAgICAgICAgIGNvYWNoLWluZGV4PSR7Y29hY2hJbmRleH1cbiAgICAgICAgICAgIC5wcm9wZXJ0eUlkcz0ke3BsYWNlLnByb3BlcnR5SWRzfVxuICAgICAgICAgICAgLnByZXZlbnRDbGljaz0ke3RoaXMucHJldmVudFBsYWNlQ2xpY2t9XG4gICAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbD5cbiAgICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+XG4gICAgICBgO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRHcmFwaGljYWxFbGVtZW50cyhcbiAgICBncmFwaGljYWxFbGVtZW50czogQmFzZUVsZW1lbnRbXSxcbiAgICBjb2FjaERpbWVuc2lvbjogRWxlbWVudERpbWVuc2lvbixcbiAgKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghZ3JhcGhpY2FsRWxlbWVudHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBncmFwaGljYWxFbGVtZW50cz8ubWFwKChncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgaWNvbiA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvbiA/PyAnJztcbiAgICAgIGNvbnN0IGVsZW1lbnRSb3RhdGlvbiA9IGdyYXBoaWNhbEVsZW1lbnQucm90YXRpb24gfHwgMDtcbiAgICAgIGNvbnN0IGlzTm90Rml4ZWRSb3RhdGlvbkdyYXBoaWNhbEVsZW1lbnQgPVxuICAgICAgICB0aGlzLl9ub3RGaXhlZFJvdGF0YWJsZUFyZWFJY29ucy5pbmRleE9mKGdyYXBoaWNhbEVsZW1lbnQuaWNvbiEpID09PSAtMTtcbiAgICAgIGNvbnN0IGVsZW1lbnRGaXhlZFJvdGF0aW9uID1cbiAgICAgICAgdGhpcy5hbGlnblZlcnRpY2FsICYmIGlzTm90Rml4ZWRSb3RhdGlvbkdyYXBoaWNhbEVsZW1lbnRcbiAgICAgICAgICA/IGVsZW1lbnRSb3RhdGlvbiAtIDkwXG4gICAgICAgICAgOiBlbGVtZW50Um90YXRpb247XG5cbiAgICAgIC8vY2hlY2sgaWYgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBub3QgYW4gYXJlYSBlbGVtZW50LCBzaW5jZSB0aGlzIGVsZW1lbnQgaXMgZHJhd24gd2l0aG91dCBhbiBhcmVhIGNvbXBvbmVudFxuICAgICAgaWYgKHRoaXMuX25vdEFyZWFFbGVtZW50cy5maW5kSW5kZXgoKG5vdEFyZWFFbGVtZW50KSA9PiBub3RBcmVhRWxlbWVudCA9PT0gaWNvbikgPiAtMSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UmVuZGVyRWxlbWVudFdpdGhvdXRBcmVhKGdyYXBoaWNhbEVsZW1lbnQsIGVsZW1lbnRSb3RhdGlvbiwgY29hY2hEaW1lbnNpb24pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX2dldFJlbmRlckVsZW1lbnRXaXRoQXJlYShncmFwaGljYWxFbGVtZW50LCBlbGVtZW50Rml4ZWRSb3RhdGlvbiwgY29hY2hEaW1lbnNpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyRWxlbWVudFdpdGhBcmVhKFxuICAgIGdyYXBoaWNhbEVsZW1lbnQ6IEJhc2VFbGVtZW50LFxuICAgIHJvdGF0aW9uOiBudW1iZXIsXG4gICAgY29hY2hEaW1lbnNpb246IEVsZW1lbnREaW1lbnNpb24sXG4gICk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAvLyBUT0RPIC0+IGlzTm90VGFibGVHcmFwaGljVGVtcEZpeCBpcyB0ZW1wIGZpeCB0byBzaG93IGNvYWNoIHRhYmxlcyBhcyBhcmVhIGFuZCBub3QgYXMgc3ZnIGdyYXBoaWMuXG4gICAgLy8gVGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0IHdoZW4gdXNpbmcgVEFCTEUgc3ZnIGdyYXBoaWNzLFxuICAgIC8vIHRoZXkgYXJlIGRpc3BsYXllZCBkaXN0b3J0ZWQgZHVlIHRvIGRpZmZlcmVudCBoZWlnaHRzIGFuZCB3aWR0aHMgYW5kIHRoaXMgaXMgbm90IHZpc3VhbGx5IGdvb2QuXG4gICAgY29uc3QgaXNOb3RUYWJsZUdyYXBoaWNUZW1wRml4ID0gZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5pbmRleE9mKCdUQUJMRScpID09PSAtMTtcblxuICAgIGNvbnN0IGFyZWFQcm9wZXJ0eSA9XG4gICAgICBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgaXNOb3RUYWJsZUdyYXBoaWNUZW1wRml4ID8gZ3JhcGhpY2FsRWxlbWVudC5pY29uIDogbnVsbDtcbiAgICBjb25zdCBzdHJldGNoSGVpZ2h0ID0gYXJlYVByb3BlcnR5ICE9PSAnRU5UUllfRVhJVCc7XG4gICAgY29uc3QgYXJpYUxhYmVsRm9yQXJlYSA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvblxuICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKGdyYXBoaWNhbEVsZW1lbnQuaWNvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudClcbiAgICAgIDogbm90aGluZztcbiAgICBjb25zdCBjYWxjdWxhdGVkRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICBjb2FjaERpbWVuc2lvbixcbiAgICAgIHRydWUsXG4gICAgICBzdHJldGNoSGVpZ2h0LFxuICAgICk7XG4gICAgY29uc3QgY2FsY3VsYXRlZFBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24oXG4gICAgICBncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICBjb2FjaERpbWVuc2lvbixcbiAgICAgIHRydWUsXG4gICAgKTtcblxuICAgIGxldCBlbGVtZW50TW91bnRpbmcgPSAnZnJlZSc7XG4gICAgaWYgKGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24ueSA9PT0gdGhpcy5jb2FjaEJvcmRlck9mZnNldCAqIC0xKSB7XG4gICAgICBlbGVtZW50TW91bnRpbmcgPSAndXBwZXItYm9yZGVyJztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbi55ICsgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24uaCA9PT1cbiAgICAgIGNvYWNoRGltZW5zaW9uLmggKyB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0XG4gICAgKSB7XG4gICAgICBlbGVtZW50TW91bnRpbmcgPSAnbG93ZXItYm9yZGVyJztcbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0PVwiJHtjYWxjdWxhdGVkUG9zaXRpb24ueX1weFwiXG4gICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZFBvc2l0aW9uLnh9cHhcIlxuICAgICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZERpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgaGVpZ2h0PVwiJHtjYWxjdWxhdGVkRGltZW5zaW9uLmh9cHhcIlxuICAgICAgICB6LWluZGV4PVwiJHtncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnp9XCJcbiAgICAgID5cbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWFcbiAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICctLXNiYi1yZXNlcnZhdGlvbi1hcmVhLXdpZHRoJzogZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24udyAqIHRoaXMuYmFzZUdyaWRTaXplLFxuICAgICAgICAgICAgJy0tc2JiLXJlc2VydmF0aW9uLWFyZWEtaGVpZ2h0JzogZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24uaCAqIHRoaXMuYmFzZUdyaWRTaXplLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIG1vdW50aW5nPSR7ZWxlbWVudE1vdW50aW5nfVxuICAgICAgICAgIGJhY2tncm91bmQ9XCJkYXJrXCJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgIHRpdGxlPSR7YXJpYUxhYmVsRm9yQXJlYX1cbiAgICAgICAgPlxuICAgICAgICAgICR7YXJlYVByb3BlcnR5XG4gICAgICAgICAgICA/IGh0bWxgXG4gICAgICAgICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICAgICAgICAgIG5hbWU9JHthcmVhUHJvcGVydHl9XG4gICAgICAgICAgICAgICAgICByb3RhdGlvbj0ke3JvdGF0aW9ufVxuICAgICAgICAgICAgICAgICAgd2lkdGg9JHt0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICAgICAgICAgIGhlaWdodD0ke3RoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgICAgICAgICAgcm9sZT1cImltZ1wiXG4gICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICAgICAgICAgIGBcbiAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhPlxuICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlckVsZW1lbnRXaXRob3V0QXJlYShcbiAgICBncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCxcbiAgICByb3RhdGlvbjogbnVtYmVyLFxuICAgIGNvYWNoRGltZW5zaW9uOiBFbGVtZW50RGltZW5zaW9uLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZERpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgKTtcbiAgICBjb25zdCBjYWxjdWxhdGVkUG9zaXRpb24gPSB0aGlzLmdldENhbGN1bGF0ZWRQb3NpdGlvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24sXG4gICAgICBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbixcbiAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgaWNvbiBpcyB0aGUgZHJpdmVyIGFyZWEsIHRoZW4gaGVyZSBjb25jYXQgdGhlIHZlaGljbGUgdHlwZSB0byBnZXQgdGhlIHJpZ2h0IHZlaGljbGUgY2hhc3NpZSBpY29uXG4gICAgY29uc3QgaWNvbiA9XG4gICAgICBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgZ3JhcGhpY2FsRWxlbWVudC5pY29uLmluZGV4T2YoJ0RSSVZFUl9BUkVBJykgPT09IC0xXG4gICAgICAgID8gZ3JhcGhpY2FsRWxlbWVudC5pY29uXG4gICAgICAgIDogZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5jb25jYXQoJ18nLCB0aGlzLnNlYXRSZXNlcnZhdGlvbi52ZWhpY2xlVHlwZSk7XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0PVwiJHtjYWxjdWxhdGVkUG9zaXRpb24ueX1weFwiXG4gICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZFBvc2l0aW9uLnh9cHhcIlxuICAgICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZERpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgaGVpZ2h0PVwiJHtjYWxjdWxhdGVkRGltZW5zaW9uLmh9cHhcIlxuICAgICAgICB6LWluZGV4PVwiJHtncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnp9XCJcbiAgICAgID5cbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICBuYW1lPSR7aWNvbiA/PyBub3RoaW5nfVxuICAgICAgICAgIHdpZHRoPSR7Z3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24udyAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgIGhlaWdodD0ke2dyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLmggKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICByb3RhdGlvbj0ke3JvdGF0aW9ufVxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgP3N0cmV0Y2g9JHt0cnVlfVxuICAgICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljPlxuICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlcmVkU2VydmljZUVsZW1lbnRzKHNlcnZpY2VFbGVtZW50cz86IEJhc2VFbGVtZW50W10pOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgaWYgKCFzZXJ2aWNlRWxlbWVudHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBzZXJ2aWNlRWxlbWVudHM/Lm1hcCgoc2VydmljZUVsZW1lbnQ6IEJhc2VFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCB0aXRsZURlc2NyaXB0aW9uID0gc2VydmljZUVsZW1lbnQuaWNvblxuICAgICAgICA/IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oc2VydmljZUVsZW1lbnQuaWNvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudClcbiAgICAgICAgOiBudWxsO1xuICAgICAgY29uc3QgY2FsY3VsYXRlZGNDbXBhcnRtZW50TnVtYmVyRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKFxuICAgICAgICBzZXJ2aWNlRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICApO1xuICAgICAgY29uc3QgY2FsY3VsYXRlZGNDbXBhcnRtZW50TnVtYmVyUG9zaXRpb24gPSB0aGlzLmdldENhbGN1bGF0ZWRQb3NpdGlvbihcbiAgICAgICAgc2VydmljZUVsZW1lbnQucG9zaXRpb24sXG4gICAgICApO1xuICAgICAgY29uc3QgZWxlbWVudFJvdGF0aW9uID0gc2VydmljZUVsZW1lbnQucm90YXRpb24gfHwgMDtcbiAgICAgIGNvbnN0IGVsZW1lbnRGaXhlZFJvdGF0aW9uID0gdGhpcy5hbGlnblZlcnRpY2FsID8gZWxlbWVudFJvdGF0aW9uIC0gOTAgOiBlbGVtZW50Um90YXRpb247XG5cbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlclBvc2l0aW9uLnl9cHhcIlxuICAgICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZGNDbXBhcnRtZW50TnVtYmVyUG9zaXRpb24ueH1weFwiXG4gICAgICAgICAgd2lkdGg9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlckRpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgICBoZWlnaHQ9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlckRpbWVuc2lvbi5ofXB4XCJcbiAgICAgICAgICB6LWluZGV4PVwiJHtzZXJ2aWNlRWxlbWVudC5wb3NpdGlvbi56fVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpY1xuICAgICAgICAgICAgbmFtZT0ke3NlcnZpY2VFbGVtZW50Lmljb24gPz8gbm90aGluZ31cbiAgICAgICAgICAgIHdpZHRoPSR7c2VydmljZUVsZW1lbnQuZGltZW5zaW9uLncgKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICAgIGhlaWdodD0ke3NlcnZpY2VFbGVtZW50LmRpbWVuc2lvbi5oICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgICAucm90YXRpb249JHtlbGVtZW50Rml4ZWRSb3RhdGlvbn1cbiAgICAgICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIHRpdGxlPSR7dGl0bGVEZXNjcmlwdGlvbiA/PyBub3RoaW5nfVxuICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgICAgYDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYW5hZ2VzIHRoZSBzZWxlY3RlZCBwbGFjZSBldmVudCB0cmlnZ2VyZWQgZnJvbSB0aGUgcGxhY2VcbiAgICogRWFjaCBzZWxlY3Rpb24gZW1pdHMgYW4gYXJyYXkgb2YgYWxsIHNlbGVjdGVkIHBsYWNlc1xuICAgKiBAcGFyYW0gc2VsZWN0UGxhY2VFdmVudFxuICAgKi9cbiAgcHJpdmF0ZSBfb25TZWxlY3RQbGFjZShzZWxlY3RQbGFjZUV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkUGxhY2UgPSBzZWxlY3RQbGFjZUV2ZW50LmRldGFpbCBhcyBQbGFjZVNlbGVjdGlvbjtcbiAgICAvLyBXZSBoYXZlIHRvIHNldCBwcmV2ZW50Q29hY2hTY3JvbGxCeVBsYWNlQ2xpY2sgdG8gdHJ1ZSwgdG8gcHJldmVudCBhdXRvbWF0aWMgc2Nyb2xsaW5nIHRvIHRoZSBuZXcgZm9jdXNlZCBwbGFjZVxuICAgIHRoaXMucHJldmVudENvYWNoU2Nyb2xsQnlQbGFjZUNsaWNrID0gdHJ1ZTtcbiAgICB0aGlzLmlzQ29hY2hHcmlkRm9jdXNhYmxlID0gZmFsc2U7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRQbGFjZUNsaWNrKSB7XG4gICAgICAvLyBBZGQgcGxhY2UgdG8gcGxhY2UgY29sbGVjdGlvblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlcyhzZWxlY3RlZFBsYWNlKTtcbiAgICAgIHRoaXMudXBkYXRlQ3VycmVudFNlbGVjdGVkUGxhY2VJbkNvYWNoKHNlbGVjdGVkUGxhY2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uU2VsZWN0TmF2Q29hY2goZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWROYXZDb2FjaEluZGV4ID0gZXZlbnQuZGV0YWlsIGFzIG51bWJlcjtcbiAgICB0aGlzLmlzS2V5Ym9hcmROYXZpZ2F0aW9uID0gZmFsc2U7XG5cbiAgICBpZiAoc2VsZWN0ZWROYXZDb2FjaEluZGV4ICE9PSBudWxsICYmIHNlbGVjdGVkTmF2Q29hY2hJbmRleCAhPT0gdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4KSB7XG4gICAgICB0aGlzLnVuZm9jdXNQbGFjZUVsZW1lbnQoKTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9TZWxlY3RlZE5hdkNvYWNoKHNlbGVjdGVkTmF2Q29hY2hJbmRleCk7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5hdkNvYWNoSW5kZXggPT09IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCkge1xuICAgICAgdGhpcy51cGRhdGVDdXJyZW50U2VsZWN0ZWRDb2FjaCgpO1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbkZvY3VzTmF2Q29hY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljaykge1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1BsYWNlRWxlbWVudCh0aGlzLmN1cnJTZWxlY3RlZFBsYWNlKTtcbiAgICB9XG4gICAgdGhpcy5pc0F1dG9TY3JvbGxpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERlc2NyaXB0aW9uVGFibGVDb2FjaChjb2FjaEl0ZW06IENvYWNoSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKCFjb2FjaEl0ZW0ucGxhY2VzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9CTE9DS0VEX1RBQkxFX0NBUFRJT04nLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LCBbXG4gICAgICAgIGNvYWNoSXRlbS5pZCxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIGxldCB0YWJsZUNvYWNoRGVzY3JpcHRpb24gPSAnJztcbiAgICBjb25zdCBhcmVhRGVzY3JpcHRpb25zID0gdGhpcy5fZ2V0VGl0bGVEZXNjcmlwdGlvbkxpc3RTdHJpbmcoY29hY2hJdGVtLmdyYXBoaWNFbGVtZW50cyEpO1xuICAgIGNvbnN0IHNlcnZpY2VEZXNjcmlwdGlvbnMgPSB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uTGlzdFN0cmluZyhjb2FjaEl0ZW0uc2VydmljZUVsZW1lbnRzISk7XG5cbiAgICB0YWJsZUNvYWNoRGVzY3JpcHRpb24gPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9UQUJMRV9DQVBUSU9OJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCwgW1xuICAgICAgY29hY2hJdGVtLmlkLFxuICAgIF0pO1xuXG4gICAgaWYgKCEhYXJlYURlc2NyaXB0aW9ucyB8fCAhIXNlcnZpY2VEZXNjcmlwdGlvbnMpIHtcbiAgICAgIHRhYmxlQ29hY2hEZXNjcmlwdGlvbiArPVxuICAgICAgICAnLiAnICsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbignQ09BQ0hfQVZBSUxBQkxFX1NFUlZJQ0VTJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkgKyAnOiAnO1xuICAgICAgdGFibGVDb2FjaERlc2NyaXB0aW9uICs9IHNlcnZpY2VEZXNjcmlwdGlvbnMgKyAnLCAnICsgYXJlYURlc2NyaXB0aW9ucyArICcuJztcbiAgICB9XG4gICAgcmV0dXJuIHRhYmxlQ29hY2hEZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRpdGxlRGVzY3JpcHRpb25MaXN0U3RyaW5nKGRlc2NyaXB0aW9uc0VsZW1lbnRzOiBCYXNlRWxlbWVudFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCB1bmlxdWVEZXNjcmlwdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICByZXR1cm4gZGVzY3JpcHRpb25zRWxlbWVudHNcbiAgICAgID8ubWFwKChkZXNjcmlwdGlvbkVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgaWNvbiA9IGRlc2NyaXB0aW9uRWxlbWVudC5pY29uO1xuICAgICAgICBpZiAoIWljb24pIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uQWxyZWF5RXhpc3QgPSB1bmlxdWVEZXNjcmlwdGlvbnMuaW5kZXhPZihpY29uKSA+IC0xO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICAgZGVzY3JpcHRpb25FbGVtZW50Lmljb24hLFxuICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGlzVmFsaWREZXNjcmlwdGlvbiA9XG4gICAgICAgICAgdGhpcy5fbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMuaW5kZXhPZihpY29uKSA9PT0gLTEgJiZcbiAgICAgICAgICB0aGlzLl9ub3RBcmVhRWxlbWVudHMuaW5kZXhPZihpY29uKSA9PT0gLTE7XG5cbiAgICAgICAgaWYgKCFkZXNjcmlwdGlvbkFscmVheUV4aXN0KSB7XG4gICAgICAgICAgdW5pcXVlRGVzY3JpcHRpb25zLnB1c2goZGVzY3JpcHRpb25FbGVtZW50Lmljb24hKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISF0cmFuc2xhdGlvbiAmJiAhZGVzY3JpcHRpb25BbHJlYXlFeGlzdCAmJiBpc1ZhbGlkRGVzY3JpcHRpb24gPyB0cmFuc2xhdGlvbiA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoZGVzY3JpcHRpb24pID0+ICEhZGVzY3JpcHRpb24pXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24nOiBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFvQ00sNkJBQXlCLE1BQUE7OzBCQUQ5QixjQUFjLHNCQUFzQixDQUFDOzs7O29CQUNFOzs7Ozs7Ozs7Ozs7Ozs7O0FBQVIsRUFBQSxtQkFBUSxZQUEwQjtBQUFBOztBQUtoRTtBQUtBO0FBS0E7QUFLQTtBQUtBO0FBcEJ5Qix5QkFBQSxtQ0FBQSxrQkFBQSxNQUFBLCtCQUFtQyxJQUFLO0FBS3hDLHlCQUFBLGtDQUFBLGtCQUFBLE1BQUEsa0NBQUEsR0FBQSxrQkFBQSxNQUFBLDZCQUF5QixJQUFJO0FBSzdCLHlCQUFBLGtDQUFBLGtCQUFBLE1BQUEsZ0NBQUEsR0FBQSxrQkFBQSxNQUFBLDZC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
@@ -105,4 +105,4 @@ let SbbSeatReservationAreaElement = (() => {
105
105
  export {
106
106
  SbbSeatReservationAreaElement
107
107
  };
108
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24tYXJlYS9zZWF0LXJlc2VydmF0aW9uLWFyZWEuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLWFyZWEuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBWaXN1YWxpemUgYW4gYXJlYSB3aXRoIGEgc3BlY2lhbCBtZWFuaW5nIHdpdGhpbiBhIHdhZ29uLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhJylcbmNsYXNzIFNiYlNlYXRSZXNlcnZhdGlvbkFyZWFFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBNb3VudGluZyBQcm9wICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBtb3VudGluZzogJ2ZyZWUnIHwgJ3VwcGVyLWJvcmRlcicgfCAnbG93ZXItYm9yZGVyJyB8ICd1cHBlci10by1sb3dlci1ib3JkZXInID1cbiAgICAnZnJlZSc7XG5cbiAgLyoqIHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBhcmVhICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBiYWNrZ3JvdW5kOiAnbGlnaHQnIHwgJ2RhcmsnID0gJ2xpZ2h0JztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGA8c2xvdD48L3Nsb3Q+YDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYSc6IFNiYlNlYXRSZXNlcnZhdGlvbkFyZWFFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBWU0saUNBQTZCLE1BQUE7OzBCQURsQyxjQUFjLDJCQUEyQixDQUFDOzs7O29CQUNDOzs7Ozs7O0FBQVIsRUFBQSxtQkFBUSxZQUFVO0FBQUE7O0FBTXBELHFEQUFBLGtCQUFBLE1BQUEsd0JBQ0UsTUFBTTtBQUtSLHdEQUFBLGtCQUFBLE1BQUEsMkJBQUEsR0FBQSxrQkFBQSxNQUFBLDBCQUErQyxPQUFPOzs7O0lBTnRELElBQWdCLFdBQ1A7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBRFQsSUFBZ0IsU0FDUCxPQUFBO0FBQUEseUJBQUEsNEJBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxJQUtULElBQWdCLGFBQXVDO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUF2RCxJQUFnQixXQUF1QyxPQUFBO0FBQUEseUJBQUEsOEJBQUE7QUFBQSxJQUFBO0FBQUEsSUFFcEMsU0FBTTtBQUNoQixhQUFBO0FBQUEsSUFBQTtBQUFBLEtBVFQsNENBTUE7OzRCQVJDLGFBQ0EsU0FBUyxFQUFFLFNBQVMsS0FBQSxDQUFNLENBQUM7OEJBSzNCLGFBQ0EsU0FBUyxFQUFFLFNBQVMsS0FBQSxDQUFNLENBQUM7QUFMWixpQkFBQSxJQUFBLE1BQUEsc0JBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxZQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGNBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLFVBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUEsV0FDUDtBQUFBLFNBQUEsVUFBQSxhQUFBLHdCQUFBLDJCQUFBO0FBS08saUJBQUEsSUFBQSxNQUFBLHdCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsY0FBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxnQkFBQSxLQUFBLEtBQUEsQ0FBQSxRQUFBLElBQUEsWUFBQSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBQSxhQUF1QztBQUFBLFNBQUEsVUFBQSxhQUFBLDBCQUFBLDZCQUFBO0FBWnpELGlCQWlCQyxNQUFBLG1CQUFBLEVBQUEsT0FBQSxXQUFBLEdBQUEsa0JBQUEsRUFBQSxNQUFBLFNBQUEsTUFBQSxXQUFBLE1BQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSx1QkFBQTs7O1FBaEJ3QixHQUFNLFNBQW1CLE9BRDVDLGtCQUE2QixZQUFBLHVCQUFBLEdBQUM7OzsifQ==
108
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24tYXJlYS9zZWF0LXJlc2VydmF0aW9uLWFyZWEuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLWFyZWEuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBWaXN1YWxpemUgYW4gYXJlYSB3aXRoIGEgc3BlY2lhbCBtZWFuaW5nIHdpdGhpbiBhIHdhZ29uLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhJylcbmNsYXNzIFNiYlNlYXRSZXNlcnZhdGlvbkFyZWFFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBNb3VudGluZyBQcm9wICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBtb3VudGluZzogJ2ZyZWUnIHwgJ3VwcGVyLWJvcmRlcicgfCAnbG93ZXItYm9yZGVyJyB8ICd1cHBlci10by1sb3dlci1ib3JkZXInID1cbiAgICAnZnJlZSc7XG5cbiAgLyoqIHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBhcmVhICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBiYWNrZ3JvdW5kOiAnbGlnaHQnIHwgJ2RhcmsnID0gJ2xpZ2h0JztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGA8c2xvdD48L3Nsb3Q+YDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYSc6IFNiYlNlYXRSZXNlcnZhdGlvbkFyZWFFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBWU0saUNBQTZCLE1BQUE7OzBCQURsQyxjQUFjLDJCQUEyQixDQUFDOzs7O29CQUNDOzs7Ozs7O0FBQVIsRUFBQSxtQkFBUSxZQUFVO0FBQUE7O0FBTXBELHFEQUFBLGtCQUFBLE1BQUEsd0JBQ0UsTUFBTTtBQUtSLHdEQUFBLGtCQUFBLE1BQUEsMkJBQUEsR0FBQSxrQkFBQSxNQUFBLDBCQUErQyxPQUFPOzs7O0lBTnRELElBQWdCLFdBQVE7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQXhCLElBQWdCLFNBQVEsT0FBQTtBQUFBLHlCQUFBLDRCQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFNeEIsSUFBZ0IsYUFBVTtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBMUIsSUFBZ0IsV0FBVSxPQUFBO0FBQUEseUJBQUEsOEJBQUE7QUFBQSxJQUFBO0FBQUEsSUFFUCxTQUFNO0FBQ3ZCLGFBQU87QUFBQSxJQUFBO0FBQUEsS0FUVCw0Q0FNQTs7NEJBUkMsYUFDQSxTQUFTLEVBQUUsU0FBUyxLQUFBLENBQU0sQ0FBQzs4QkFLM0IsYUFDQSxTQUFTLEVBQUUsU0FBUyxLQUFBLENBQU0sQ0FBQztBQUw1QixpQkFBQSxJQUFBLE1BQUEsc0JBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxZQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGNBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFnQixVQUFRLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFSLFdBQVE7QUFBQSxJQUFBLEtBQUEsVUFBQSxhQUFBLHdCQUFBLDJCQUFBO0FBTXhCLGlCQUFBLElBQUEsTUFBQSx3QkFBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLGNBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsZ0JBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFnQixZQUFVLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFWLGFBQVU7QUFBQSxJQUFBLEtBQUEsVUFBQSxhQUFBLDBCQUFBLDZCQUFBO0FBWjVCLGlCQUFBLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7UUFDeUIsR0FBQSxTQUF5QixPQUQ1QyxrQkFBQSxZQUFBLHVCQUFBLEdBQThCOzs7In0=
@@ -1,2 +1,5 @@
1
+ /**
2
+ * @entrypoint
3
+ */
1
4
  export * from './seat-reservation-area/seat-reservation-area.component.js';
2
5
  //# sourceMappingURL=seat-reservation-area.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"seat-reservation-area.d.ts","sourceRoot":"","sources":["../../../../src/elements-experimental/seat-reservation/seat-reservation-area.ts"],"names":[],"mappings":"AAAA,cAAc,4DAA4D,CAAC"}
1
+ {"version":3,"file":"seat-reservation-area.d.ts","sourceRoot":"","sources":["../../../../src/elements-experimental/seat-reservation/seat-reservation-area.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,4DAA4D,CAAC"}
@@ -11,8 +11,7 @@ const svgImage = (src) => {
11
11
  `;
12
12
  };
13
13
  const svgImageByOSDMCode = (osdmCode) => {
14
- var _a, _b;
15
- return ((_a = mapIconToSvg[osdmCode]) == null ? void 0 : _a.svg) ? svgImage(mapIconToSvg[osdmCode].svg) : ((_b = mapIconToSvg[osdmCode]) == null ? void 0 : _b.svgName) ? html`<sbb-icon name="${mapIconToSvg[osdmCode].svgName}"></sbb-icon>` : null;
14
+ return mapIconToSvg[osdmCode]?.svg ? svgImage(mapIconToSvg[osdmCode].svg) : mapIconToSvg[osdmCode]?.svgName ? html`<sbb-icon name="${mapIconToSvg[osdmCode].svgName}"></sbb-icon>` : null;
16
15
  };
17
16
  const interiorTable = html`
18
17
  <sbb-table-wrapper>
@@ -323,4 +322,4 @@ export {
323
322
  assetsTemplate,
324
323
  svgImageByOSDMCode
325
324
  };
326
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1hc3NldHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMvc2VhdC1yZXNlcnZhdGlvbi1hc3NldHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaHRtbCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyB1bnNhZmVIVE1MIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvdW5zYWZlLWh0bWwuanMnO1xuXG5pbXBvcnQgeyBzdmdzLCBtYXBJY29uVG9TdmcgfSBmcm9tICcuLi9jb21tb24uanMnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3RhYmxlLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLmpzJztcblxuY29uc3Qgc3ZnSW1hZ2UgPSAoc3JjOiBzdHJpbmcpOiBUZW1wbGF0ZVJlc3VsdCA9PiB7XG4gIHJldHVybiBodG1sYFxuICAgIDxkaXYgY2xhc3M9XCJzdG9yeS1hc3NldFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzdG9yeS1hc3NldF9fcHJldmlld1wiPiR7dW5zYWZlSFRNTChzcmMpfTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgYDtcbn07XG5cbi8qKlxuICogc3ZnSW1hZ2VCeU9TRE1Db2RlIEZ1bmN0aW9uIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgc3ZnIGltYWdlIGJ5IE9TRE0gQ29kZVxuICogQHBhcmFtIG9zZG1Db2RlXG4gKiBAcmV0dXJucyBUaGUgU1ZHIEltYWdlIGFzIFRlbXBsYXRlUmVzdWx0IGlmIGl0IG1hdGNoZXMgdGhlIE9TRE0gY29kZSwgb3IgbnVsbCBpZiBpdCdzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGNvbnN0IHN2Z0ltYWdlQnlPU0RNQ29kZSA9IChvc2RtQ29kZTogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsID0+IHtcbiAgcmV0dXJuIG1hcEljb25Ub1N2Z1tvc2RtQ29kZV0/LnN2Z1xuICAgID8gc3ZnSW1hZ2UobWFwSWNvblRvU3ZnW29zZG1Db2RlXS5zdmcpXG4gICAgOiBtYXBJY29uVG9Tdmdbb3NkbUNvZGVdPy5zdmdOYW1lXG4gICAgICA/IGh0bWxgPHNiYi1pY29uIG5hbWU9XCIke21hcEljb25Ub1N2Z1tvc2RtQ29kZV0uc3ZnTmFtZX1cIj48L3NiYi1pY29uPmBcbiAgICAgIDogbnVsbDtcbn07XG5cbmNvbnN0IGludGVyaW9yVGFibGUgPSBodG1sYFxuICA8c2JiLXRhYmxlLXdyYXBwZXI+XG4gICAgPHRhYmxlIGNsYXNzPVwic2JiLXRhYmxlXCI+XG4gICAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5TVkc8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkZpZ21hPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5Db2RlPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQUNFX0JJQ1lDTEVfRlJFRScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBsYWNlLUJpa2U6IEF2YWlsYWJsZTwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX0JJQ1lDTEVfRlJFRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQUNFX0JJQ1lDTEVfU0VMRUNURUQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1CaWtlOiBTZWxlY3RlZDwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX0JJQ1lDTEVfU0VMRUNURUQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9CSUNZQ0xFX0FMTE9DQVRFRCcpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBsYWNlLUJpa2U6IFVuYXZhaWxhYmxlPC90ZD5cbiAgICAgICAgICA8dGQ+UExBQ0VfQklDWUNMRV9BTExPQ0FURUQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9CSUNZQ0xFX1JFU1RSSUNURUQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1CaWtlOiBOb3QgYm9va2FibGU8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9CSUNZQ0xFX1JFU1RSSUNURUQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9TRUFUX0ZSRUUnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1TZWF0OiBBdmFpbGFibGU8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9TRUFUX0ZSRUU8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9TRUFUX1NFTEVDVEVEJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtU2VhdDogU2VsZWN0ZWQ8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9TRUFUX1NFTEVDVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfU0VBVF9BTExPQ0FURUQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1TZWF0OiBVbmF2YWlsYWJsZTwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX1NFQVRfQUxMT0NBVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfU0VBVF9SRVNUUklDVEVEJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtU2VhdDogTm90IGJvb2thYmxlPC90ZD5cbiAgICAgICAgICA8dGQ+UExBQ0VfU0VBVF9SRVNUUklDVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgPC9zYmItdGFibGUtd3JhcHBlcj5cbmA7XG5jb25zdCBsYXlvdXRJdGVtc1RhYmxlID0gaHRtbGBcbiAgPHNiYi10YWJsZS13cmFwcGVyPlxuICAgIDx0YWJsZSBjbGFzcz1cInNiYi10YWJsZVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U1ZHPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5GaWdtYTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+T1NETSBDb2RlPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0VBU1lfQUNDRVNTX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5FYXN5IEFjY2VzcyBBcmVhPC90ZD5cbiAgICAgICAgICA8dGQ+RUFTWV9BQ0NFU1NfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0VOVFJZX0VYSVQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5FbnRyYW5jZTwvdGQ+XG4gICAgICAgICAgPHRkPkVOVFJZX0VYSVQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdMVUdHQUdFX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5MdWdnYWdlPC90ZD5cbiAgICAgICAgICA8dGQ+TFVHR0FHRV9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnTVVMVElfRlVOQ1RJT05fQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPk11bHRpIEZ1bmN0aW9uIEFyZWE8L3RkPlxuICAgICAgICAgIDx0ZD5NVUxUSV9GVU5DVElPTl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBWUdST1VORF9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxheWdyb3VuZDwvdGQ+XG4gICAgICAgICAgPHRkPlBMQVlHUk9VTkRfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BSQU1fQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlByYW08L3RkPlxuICAgICAgICAgIDx0ZD5QUkFNX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdTS0lfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlNraTwvdGQ+XG4gICAgICAgICAgPHRkPlNLSV9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnU1RBSVJfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlN0YWlyPC90ZD5cbiAgICAgICAgICA8dGQ+U1RBSVJfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1RPSUxFVF9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+VG9pbGV0PC90ZD5cbiAgICAgICAgICA8dGQ+VE9JTEVUX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdUT0lMRVRfV0hFRUxDSEFJUl9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+VG9pbGV0LUhhbmRpY2FwPC90ZD5cbiAgICAgICAgICA8dGQ+VE9JTEVUX1dIRUVMQ0hBSVJfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1dBUkRST0JFX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5XYXJkcm9iZTwvdGQ+XG4gICAgICAgICAgPHRkPldBUkRST0JFX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICA8L3NiYi10YWJsZS13cmFwcGVyPlxuYDtcbmNvbnN0IHNlcnZpY2VJY29uVGFibGUgPSBodG1sYFxuICA8c2JiLXRhYmxlLXdyYXBwZXI+XG4gICAgPHRhYmxlIGFyaWEtbGFiZWw9XCJBdmFpbGFibGUgU2VydmljZSBJY29uc1wiIGNsYXNzPVwic2JiLXRhYmxlXCI+XG4gICAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5TVkc8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkZpZ21hPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5PU0RNIENvZGU8L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQklTVFJPJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+QmlzdHJvPC90ZD5cbiAgICAgICAgICA8dGQ+QklTVFJPPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQlVTSU5FU1MnKX08L3RkPlxuICAgICAgICAgIDx0ZD5CdXNpbmVzczwvdGQ+XG4gICAgICAgICAgPHRkPkJVU0lORVNTPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBWUdST1VORF9JQ09OJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RmFtaWx5PC90ZD5cbiAgICAgICAgICA8dGQ+UExBWUdST1VORF9JQ09OPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnTFVHR0FHRV9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+THVnZ2FnZTwvdGQ+XG4gICAgICAgICAgPHRkPkxVR0dBR0VfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ01VTFRJX0ZVTkNUSU9OX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5NdWx0aWZ1bmN0aW9uPC90ZD5cbiAgICAgICAgICA8dGQ+TVVMVElfRlVOQ1RJT05fQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BSQU1fSUNPTicpfTwvdGQ+XG4gICAgICAgICAgPHRkPlByYW08L3RkPlxuICAgICAgICAgIDx0ZD5QUkFNX0lDT048L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdFQVNZX0FDQ0VTU19BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RWFzeSBBY2Nlc3MgQXJlYTwvdGQ+XG4gICAgICAgICAgPHRkPkVBU1lfQUNDRVNTX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdSRVNUQVVSQU5UX0lDT04nKX08L3RkPlxuICAgICAgICAgIDx0ZD5SZXN0YXVyYW50PC90ZD5cbiAgICAgICAgICA8dGQ+UkVTVEFVUkFOVF9JQ09OPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnU0lMRU5DRV9BUkVBX0lDT04nKX08L3RkPlxuICAgICAgICAgIDx0ZD5TaWxlbmNlPC90ZD5cbiAgICAgICAgICA8dGQ+U0lMRU5DRV9BUkVBX0lDT048L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdUT0lMRVRfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlRvaWxldDwvdGQ+XG4gICAgICAgICAgPHRkPlRPSUxFVF9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnVE9JTEVUX1dIRUVMQ0hBSVJfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlRvaWxldC1QUk08L3RkPlxuICAgICAgICAgIDx0ZD5UT0lMRVRfV0hFRUxDSEFJUl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnV0hFRUxDSEFJUl9JQ09OJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+V2hlZWxjaGFpcjwvdGQ+XG4gICAgICAgICAgPHRkPldIRUVMQ0hBSVJfSUNPTjwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1dJRkknKX08L3RkPlxuICAgICAgICAgIDx0ZD5XaWZpPC90ZD5cbiAgICAgICAgICA8dGQ+V0lGSTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIDwvc2JiLXRhYmxlLXdyYXBwZXI+XG5gO1xuY29uc3QgY2hhc3Npc1RhYmxlID0gaHRtbGBcbiAgPHNiYi10YWJsZS13cmFwcGVyPlxuICAgIDx0YWJsZSBjbGFzcz1cInNiYi10YWJsZVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U1ZHPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5GaWdtYTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+T1NETSBDb2RlPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0RSSVZFUl9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RHJpdmVyOiBUcmFpbjwvdGQ+XG4gICAgICAgICAgPHRkPkRSSVZFUl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnRFJJVkVSX0FSRUFfRlVMTF9UUkFJTicpfTwvdGQ+XG4gICAgICAgICAgPHRkPkRyaXZlcjogVHJhaW48L3RkPlxuICAgICAgICAgIDx0ZD5EUklWRVJfQVJFQV9GVUxMX1RSQUlOPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnRFJJVkVSX0FSRUFfRlVMTF9CVVMnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Ecml2ZXI6IEJ1czwvdGQ+XG4gICAgICAgICAgPHRkPkRSSVZFUl9BUkVBX0ZVTExfQlVTPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09NUEFSVE1FTlRfUEFTU0FHRV9ISUdIJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGFzc2FnZS1Db21wYXJ0bWVudDogVG9wPC90ZD5cbiAgICAgICAgICA8dGQ+Q09NUEFSVE1FTlRfUEFTU0FHRTxiciAvPkNPTVBBUlRNRU5UX1BBU1NBR0VfSElHSDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0NPTVBBUlRNRU5UX1BBU1NBR0UnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QYXNzYWdlLUNvbXBhcnRtZW50OiBNaWRkbGU8L3RkPlxuICAgICAgICAgIDx0ZD5DT01QQVJUTUVOVF9QQVNTQUdFPGJyIC8+Q09NUEFSVE1FTlRfUEFTU0FHRV9NSURETEU8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdDT01QQVJUTUVOVF9QQVNTQUdFX0xPVycpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBhc3NhZ2UtQ29tcGFydG1lbnQ6IEJvdHRvbTwvdGQ+XG4gICAgICAgICAgPHRkPkNPTVBBUlRNRU5UX1BBU1NBR0U8YnIgLz5DT01QQVJUTUVOVF9QQVNTQUdFX0xPVzwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0NPQUNIX1BBU1NBR0UnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QYXNzYWdlLVdhZ2dvbiBUeXBlOiBMZWZ0PC90ZD5cbiAgICAgICAgICA8dGQ+Q09BQ0hfUEFTU0FHRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZShzdmdzLmNoYXNzaXNQYXNzYWdlV2FnZ29uQm90dG9tUmlnaHQpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBhc3NhZ2UtV2FnZ29uIFR5cGU6IFJpZ2h0PC90ZD5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1zYmItY29sb3Itd2hpdGUpIDUlLCB2YXIoLS1zYmItY29sb3ItcmVkKSk7XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBUT0RPOiBjaGVjayBpZiBzdGlsbCBpbiB1c2UsIG1heSBiZSBkZWxldGVkXG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09BQ0hfV0FMTF9OT19QQVNTQUdFJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+Um93LUVtcHR5OiBUb3AvTGVmdDwvdGQ+XG4gICAgICAgICAgPHRkPkNPQUNIX1dBTExfTk9fUEFTU0FHRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0NPQUNIX0JPUkRFUl9NSURETEUnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Sb3ctRW1wdHk6IE1pZGRsZTwvdGQ+XG4gICAgICAgICAgPHRkPkNPQUNIX0JPUkRFUl9NSURETEU8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2Uoc3Zncy5jaGFzc2lzU2VwYXJhdG9yKX08L3RkPlxuICAgICAgICAgIDx0ZD5TZXBhcmF0b3I8L3RkPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLXNiYi1jb2xvci13aGl0ZSkgNSUsIHZhcigtLXNiYi1jb2xvci1yZWQpKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgVE9ETzogY2hlY2sgaWYgc3RpbGwgaW4gdXNlLCBtYXkgYmUgZGVsZXRlZFxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1RBQkxFJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+VGFibGU8L3RkPlxuICAgICAgICAgIDx0ZD5UQUJMRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIDwvc2JiLXRhYmxlLXdyYXBwZXI+XG5gO1xuXG5leHBvcnQgY29uc3QgYXNzZXRzVGVtcGxhdGU6IFRlbXBsYXRlUmVzdWx0ID0gaHRtbGBcbiAgPHN0eWxlPlxuICAgIC5zdG9yeS1hc3NldCB7XG4gICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItY29sb3Itd2hpdGUpO1xuICAgIH1cbiAgPC9zdHlsZT5cbiAgPGgxPkxpc3Qgb2YgYWxsIGN1cnJlbnRseSBhdmFpbGFibGUgYXNzZXRzLjwvaDE+XG4gIDxoMj5JbnRlcmlvcjwvaDI+XG4gICR7aW50ZXJpb3JUYWJsZX1cbiAgPGgyPkxheW91dDwvaDI+XG4gICR7bGF5b3V0SXRlbXNUYWJsZX1cbiAgPGgyPlNlcnZpY2UgSWNvbnM8L2gyPlxuICAke3NlcnZpY2VJY29uVGFibGV9XG4gIDxoMj5DaGFzc2lzPC9oMj5cbiAgJHtjaGFzc2lzVGFibGV9XG5gO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBUUEsTUFBTSxXQUFXLENBQUMsUUFBK0I7QUFDeEMsU0FBQTtBQUFBO0FBQUEsMkNBRWtDLFdBQVcsR0FBRyxDQUFDO0FBQUE7QUFBQTtBQUcxRDtBQU9hLE1BQUEscUJBQXFCLENBQUMsYUFBMkM7O0FBQzVFLFdBQU8sa0JBQWEsUUFBUSxNQUFyQixtQkFBd0IsT0FDM0IsU0FBUyxhQUFhLFFBQVEsRUFBRSxHQUFHLE1BQ25DLGtCQUFhLFFBQVEsTUFBckIsbUJBQXdCLFdBQ3RCLHVCQUF1QixhQUFhLFFBQVEsRUFBRSxPQUFPLGtCQUNyRDtBQUNSO0FB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
325
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1hc3NldHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMvc2VhdC1yZXNlcnZhdGlvbi1hc3NldHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaHRtbCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyB1bnNhZmVIVE1MIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvdW5zYWZlLWh0bWwuanMnO1xuXG5pbXBvcnQgeyBzdmdzLCBtYXBJY29uVG9TdmcgfSBmcm9tICcuLi9jb21tb24uanMnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3RhYmxlLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLmpzJztcblxuY29uc3Qgc3ZnSW1hZ2UgPSAoc3JjOiBzdHJpbmcpOiBUZW1wbGF0ZVJlc3VsdCA9PiB7XG4gIHJldHVybiBodG1sYFxuICAgIDxkaXYgY2xhc3M9XCJzdG9yeS1hc3NldFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzdG9yeS1hc3NldF9fcHJldmlld1wiPiR7dW5zYWZlSFRNTChzcmMpfTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgYDtcbn07XG5cbi8qKlxuICogc3ZnSW1hZ2VCeU9TRE1Db2RlIEZ1bmN0aW9uIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgc3ZnIGltYWdlIGJ5IE9TRE0gQ29kZVxuICogQHBhcmFtIG9zZG1Db2RlXG4gKiBAcmV0dXJucyBUaGUgU1ZHIEltYWdlIGFzIFRlbXBsYXRlUmVzdWx0IGlmIGl0IG1hdGNoZXMgdGhlIE9TRE0gY29kZSwgb3IgbnVsbCBpZiBpdCdzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGNvbnN0IHN2Z0ltYWdlQnlPU0RNQ29kZSA9IChvc2RtQ29kZTogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsID0+IHtcbiAgcmV0dXJuIG1hcEljb25Ub1N2Z1tvc2RtQ29kZV0/LnN2Z1xuICAgID8gc3ZnSW1hZ2UobWFwSWNvblRvU3ZnW29zZG1Db2RlXS5zdmcpXG4gICAgOiBtYXBJY29uVG9Tdmdbb3NkbUNvZGVdPy5zdmdOYW1lXG4gICAgICA/IGh0bWxgPHNiYi1pY29uIG5hbWU9XCIke21hcEljb25Ub1N2Z1tvc2RtQ29kZV0uc3ZnTmFtZX1cIj48L3NiYi1pY29uPmBcbiAgICAgIDogbnVsbDtcbn07XG5cbmNvbnN0IGludGVyaW9yVGFibGUgPSBodG1sYFxuICA8c2JiLXRhYmxlLXdyYXBwZXI+XG4gICAgPHRhYmxlIGNsYXNzPVwic2JiLXRhYmxlXCI+XG4gICAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5TVkc8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkZpZ21hPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5Db2RlPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQUNFX0JJQ1lDTEVfRlJFRScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBsYWNlLUJpa2U6IEF2YWlsYWJsZTwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX0JJQ1lDTEVfRlJFRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQUNFX0JJQ1lDTEVfU0VMRUNURUQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1CaWtlOiBTZWxlY3RlZDwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX0JJQ1lDTEVfU0VMRUNURUQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9CSUNZQ0xFX0FMTE9DQVRFRCcpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBsYWNlLUJpa2U6IFVuYXZhaWxhYmxlPC90ZD5cbiAgICAgICAgICA8dGQ+UExBQ0VfQklDWUNMRV9BTExPQ0FURUQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9CSUNZQ0xFX1JFU1RSSUNURUQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1CaWtlOiBOb3QgYm9va2FibGU8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9CSUNZQ0xFX1JFU1RSSUNURUQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9TRUFUX0ZSRUUnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1TZWF0OiBBdmFpbGFibGU8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9TRUFUX0ZSRUU8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9TRUFUX1NFTEVDVEVEJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtU2VhdDogU2VsZWN0ZWQ8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9TRUFUX1NFTEVDVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfU0VBVF9BTExPQ0FURUQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1TZWF0OiBVbmF2YWlsYWJsZTwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX1NFQVRfQUxMT0NBVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfU0VBVF9SRVNUUklDVEVEJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtU2VhdDogTm90IGJvb2thYmxlPC90ZD5cbiAgICAgICAgICA8dGQ+UExBQ0VfU0VBVF9SRVNUUklDVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgPC9zYmItdGFibGUtd3JhcHBlcj5cbmA7XG5jb25zdCBsYXlvdXRJdGVtc1RhYmxlID0gaHRtbGBcbiAgPHNiYi10YWJsZS13cmFwcGVyPlxuICAgIDx0YWJsZSBjbGFzcz1cInNiYi10YWJsZVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U1ZHPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5GaWdtYTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+T1NETSBDb2RlPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0VBU1lfQUNDRVNTX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5FYXN5IEFjY2VzcyBBcmVhPC90ZD5cbiAgICAgICAgICA8dGQ+RUFTWV9BQ0NFU1NfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0VOVFJZX0VYSVQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5FbnRyYW5jZTwvdGQ+XG4gICAgICAgICAgPHRkPkVOVFJZX0VYSVQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdMVUdHQUdFX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5MdWdnYWdlPC90ZD5cbiAgICAgICAgICA8dGQ+TFVHR0FHRV9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnTVVMVElfRlVOQ1RJT05fQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPk11bHRpIEZ1bmN0aW9uIEFyZWE8L3RkPlxuICAgICAgICAgIDx0ZD5NVUxUSV9GVU5DVElPTl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBWUdST1VORF9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxheWdyb3VuZDwvdGQ+XG4gICAgICAgICAgPHRkPlBMQVlHUk9VTkRfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BSQU1fQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlByYW08L3RkPlxuICAgICAgICAgIDx0ZD5QUkFNX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdTS0lfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlNraTwvdGQ+XG4gICAgICAgICAgPHRkPlNLSV9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnU1RBSVJfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlN0YWlyPC90ZD5cbiAgICAgICAgICA8dGQ+U1RBSVJfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1RPSUxFVF9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+VG9pbGV0PC90ZD5cbiAgICAgICAgICA8dGQ+VE9JTEVUX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdUT0lMRVRfV0hFRUxDSEFJUl9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+VG9pbGV0LUhhbmRpY2FwPC90ZD5cbiAgICAgICAgICA8dGQ+VE9JTEVUX1dIRUVMQ0hBSVJfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1dBUkRST0JFX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5XYXJkcm9iZTwvdGQ+XG4gICAgICAgICAgPHRkPldBUkRST0JFX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICA8L3NiYi10YWJsZS13cmFwcGVyPlxuYDtcbmNvbnN0IHNlcnZpY2VJY29uVGFibGUgPSBodG1sYFxuICA8c2JiLXRhYmxlLXdyYXBwZXI+XG4gICAgPHRhYmxlIGFyaWEtbGFiZWw9XCJBdmFpbGFibGUgU2VydmljZSBJY29uc1wiIGNsYXNzPVwic2JiLXRhYmxlXCI+XG4gICAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5TVkc8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkZpZ21hPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5PU0RNIENvZGU8L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQklTVFJPJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+QmlzdHJvPC90ZD5cbiAgICAgICAgICA8dGQ+QklTVFJPPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQlVTSU5FU1MnKX08L3RkPlxuICAgICAgICAgIDx0ZD5CdXNpbmVzczwvdGQ+XG4gICAgICAgICAgPHRkPkJVU0lORVNTPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBWUdST1VORF9JQ09OJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RmFtaWx5PC90ZD5cbiAgICAgICAgICA8dGQ+UExBWUdST1VORF9JQ09OPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnTFVHR0FHRV9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+THVnZ2FnZTwvdGQ+XG4gICAgICAgICAgPHRkPkxVR0dBR0VfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ01VTFRJX0ZVTkNUSU9OX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5NdWx0aWZ1bmN0aW9uPC90ZD5cbiAgICAgICAgICA8dGQ+TVVMVElfRlVOQ1RJT05fQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BSQU1fSUNPTicpfTwvdGQ+XG4gICAgICAgICAgPHRkPlByYW08L3RkPlxuICAgICAgICAgIDx0ZD5QUkFNX0lDT048L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdFQVNZX0FDQ0VTU19BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RWFzeSBBY2Nlc3MgQXJlYTwvdGQ+XG4gICAgICAgICAgPHRkPkVBU1lfQUNDRVNTX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdSRVNUQVVSQU5UX0lDT04nKX08L3RkPlxuICAgICAgICAgIDx0ZD5SZXN0YXVyYW50PC90ZD5cbiAgICAgICAgICA8dGQ+UkVTVEFVUkFOVF9JQ09OPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnU0lMRU5DRV9BUkVBX0lDT04nKX08L3RkPlxuICAgICAgICAgIDx0ZD5TaWxlbmNlPC90ZD5cbiAgICAgICAgICA8dGQ+U0lMRU5DRV9BUkVBX0lDT048L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdUT0lMRVRfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlRvaWxldDwvdGQ+XG4gICAgICAgICAgPHRkPlRPSUxFVF9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnVE9JTEVUX1dIRUVMQ0hBSVJfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlRvaWxldC1QUk08L3RkPlxuICAgICAgICAgIDx0ZD5UT0lMRVRfV0hFRUxDSEFJUl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnV0hFRUxDSEFJUl9JQ09OJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+V2hlZWxjaGFpcjwvdGQ+XG4gICAgICAgICAgPHRkPldIRUVMQ0hBSVJfSUNPTjwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1dJRkknKX08L3RkPlxuICAgICAgICAgIDx0ZD5XaWZpPC90ZD5cbiAgICAgICAgICA8dGQ+V0lGSTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIDwvc2JiLXRhYmxlLXdyYXBwZXI+XG5gO1xuY29uc3QgY2hhc3Npc1RhYmxlID0gaHRtbGBcbiAgPHNiYi10YWJsZS13cmFwcGVyPlxuICAgIDx0YWJsZSBjbGFzcz1cInNiYi10YWJsZVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U1ZHPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5GaWdtYTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+T1NETSBDb2RlPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0RSSVZFUl9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RHJpdmVyOiBUcmFpbjwvdGQ+XG4gICAgICAgICAgPHRkPkRSSVZFUl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnRFJJVkVSX0FSRUFfRlVMTF9UUkFJTicpfTwvdGQ+XG4gICAgICAgICAgPHRkPkRyaXZlcjogVHJhaW48L3RkPlxuICAgICAgICAgIDx0ZD5EUklWRVJfQVJFQV9GVUxMX1RSQUlOPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnRFJJVkVSX0FSRUFfRlVMTF9CVVMnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Ecml2ZXI6IEJ1czwvdGQ+XG4gICAgICAgICAgPHRkPkRSSVZFUl9BUkVBX0ZVTExfQlVTPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09NUEFSVE1FTlRfUEFTU0FHRV9ISUdIJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGFzc2FnZS1Db21wYXJ0bWVudDogVG9wPC90ZD5cbiAgICAgICAgICA8dGQ+Q09NUEFSVE1FTlRfUEFTU0FHRTxiciAvPkNPTVBBUlRNRU5UX1BBU1NBR0VfSElHSDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0NPTVBBUlRNRU5UX1BBU1NBR0UnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QYXNzYWdlLUNvbXBhcnRtZW50OiBNaWRkbGU8L3RkPlxuICAgICAgICAgIDx0ZD5DT01QQVJUTUVOVF9QQVNTQUdFPGJyIC8+Q09NUEFSVE1FTlRfUEFTU0FHRV9NSURETEU8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdDT01QQVJUTUVOVF9QQVNTQUdFX0xPVycpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBhc3NhZ2UtQ29tcGFydG1lbnQ6IEJvdHRvbTwvdGQ+XG4gICAgICAgICAgPHRkPkNPTVBBUlRNRU5UX1BBU1NBR0U8YnIgLz5DT01QQVJUTUVOVF9QQVNTQUdFX0xPVzwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0NPQUNIX1BBU1NBR0UnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QYXNzYWdlLVdhZ2dvbiBUeXBlOiBMZWZ0PC90ZD5cbiAgICAgICAgICA8dGQ+Q09BQ0hfUEFTU0FHRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZShzdmdzLmNoYXNzaXNQYXNzYWdlV2FnZ29uQm90dG9tUmlnaHQpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBhc3NhZ2UtV2FnZ29uIFR5cGU6IFJpZ2h0PC90ZD5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1zYmItY29sb3Itd2hpdGUpIDUlLCB2YXIoLS1zYmItY29sb3ItcmVkKSk7XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBUT0RPOiBjaGVjayBpZiBzdGlsbCBpbiB1c2UsIG1heSBiZSBkZWxldGVkXG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09BQ0hfV0FMTF9OT19QQVNTQUdFJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+Um93LUVtcHR5OiBUb3AvTGVmdDwvdGQ+XG4gICAgICAgICAgPHRkPkNPQUNIX1dBTExfTk9fUEFTU0FHRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0NPQUNIX0JPUkRFUl9NSURETEUnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Sb3ctRW1wdHk6IE1pZGRsZTwvdGQ+XG4gICAgICAgICAgPHRkPkNPQUNIX0JPUkRFUl9NSURETEU8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2Uoc3Zncy5jaGFzc2lzU2VwYXJhdG9yKX08L3RkPlxuICAgICAgICAgIDx0ZD5TZXBhcmF0b3I8L3RkPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLXNiYi1jb2xvci13aGl0ZSkgNSUsIHZhcigtLXNiYi1jb2xvci1yZWQpKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgVE9ETzogY2hlY2sgaWYgc3RpbGwgaW4gdXNlLCBtYXkgYmUgZGVsZXRlZFxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1RBQkxFJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+VGFibGU8L3RkPlxuICAgICAgICAgIDx0ZD5UQUJMRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIDwvc2JiLXRhYmxlLXdyYXBwZXI+XG5gO1xuXG5leHBvcnQgY29uc3QgYXNzZXRzVGVtcGxhdGU6IFRlbXBsYXRlUmVzdWx0ID0gaHRtbGBcbiAgPHN0eWxlPlxuICAgIC5zdG9yeS1hc3NldCB7XG4gICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItY29sb3Itd2hpdGUpO1xuICAgIH1cbiAgPC9zdHlsZT5cbiAgPGgxPkxpc3Qgb2YgYWxsIGN1cnJlbnRseSBhdmFpbGFibGUgYXNzZXRzLjwvaDE+XG4gIDxoMj5JbnRlcmlvcjwvaDI+XG4gICR7aW50ZXJpb3JUYWJsZX1cbiAgPGgyPkxheW91dDwvaDI+XG4gICR7bGF5b3V0SXRlbXNUYWJsZX1cbiAgPGgyPlNlcnZpY2UgSWNvbnM8L2gyPlxuICAke3NlcnZpY2VJY29uVGFibGV9XG4gIDxoMj5DaGFzc2lzPC9oMj5cbiAgJHtjaGFzc2lzVGFibGV9XG5gO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBUUEsTUFBTSxXQUFXLENBQUMsUUFBK0I7QUFDL0MsU0FBTztBQUFBO0FBQUEsMkNBRWtDLFdBQVcsR0FBRyxDQUFDO0FBQUE7QUFBQTtBQUcxRDtBQU9PLE1BQU0scUJBQXFCLENBQUMsYUFBMkM7QUFDNUUsU0FBTyxhQUFhLFFBQVEsR0FBRyxNQUMzQixTQUFTLGFBQWEsUUFBUSxFQUFFLEdBQUcsSUFDbkMsYUFBYSxRQUFRLEdBQUcsVUFDdEIsdUJBQXVCLGFBQWEsUUFBUSxFQUFFLE9BQU8sa0JBQ3JEO0FBQ1I7QUFFQSxNQUFNLGdCQUFnQjtBQUFB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