@sbb-esta/lyne-elements 1.14.1 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/autocomplete/autocomplete.d.ts +1 -1
  2. package/autocomplete/autocomplete.d.ts.map +1 -1
  3. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +1 -1
  4. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  5. package/autocomplete-grid/autocomplete-grid.js +6 -6
  6. package/autocomplete.js +20 -19
  7. package/calendar/calendar.d.ts +1 -1
  8. package/calendar/calendar.d.ts.map +1 -1
  9. package/calendar.js +25 -27
  10. package/checkbox/checkbox-panel/checkbox-panel.d.ts +1 -1
  11. package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  12. package/checkbox/checkbox-panel.js +5 -5
  13. package/checkbox/common.js +1 -1
  14. package/clock/clock.d.ts +1 -1
  15. package/clock/clock.d.ts.map +1 -1
  16. package/clock.js +2 -2
  17. package/container/sticky-bar/sticky-bar.d.ts +29 -2
  18. package/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  19. package/container/sticky-bar.js +69 -31
  20. package/core/controllers/media-matchers-controller.d.ts +32 -0
  21. package/core/controllers/media-matchers-controller.d.ts.map +1 -0
  22. package/core/controllers.d.ts +1 -0
  23. package/core/controllers.d.ts.map +1 -1
  24. package/core/controllers.js +75 -33
  25. package/core/dom/breakpoint.d.ts +2 -1
  26. package/core/dom/breakpoint.d.ts.map +1 -1
  27. package/core/dom.js +7 -7
  28. package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  29. package/core/mixins.js +8 -1
  30. package/core/styles/core/mediaqueries.scss +1 -2
  31. package/core/styles/mixins/buttons.scss +5 -5
  32. package/core/testing/event-spy.d.ts +6 -4
  33. package/core/testing/event-spy.d.ts.map +1 -1
  34. package/core/testing.js +82 -55
  35. package/custom-elements.json +609 -62
  36. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  37. package/development/autocomplete/autocomplete.d.ts +1 -1
  38. package/development/autocomplete/autocomplete.d.ts.map +1 -1
  39. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +1 -1
  40. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  41. package/development/autocomplete-grid/autocomplete-grid.js +4 -3
  42. package/development/autocomplete.js +4 -3
  43. package/development/calendar/calendar.d.ts +1 -1
  44. package/development/calendar/calendar.d.ts.map +1 -1
  45. package/development/calendar.js +8 -11
  46. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +1 -1
  47. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  48. package/development/checkbox/checkbox-panel.js +2 -2
  49. package/development/checkbox/common.js +2 -2
  50. package/development/clock/clock.d.ts +1 -1
  51. package/development/clock/clock.d.ts.map +1 -1
  52. package/development/clock.js +3 -3
  53. package/development/container/sticky-bar/sticky-bar.d.ts +29 -2
  54. package/development/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  55. package/development/container/sticky-bar.js +149 -36
  56. package/development/core/controllers/media-matchers-controller.d.ts +32 -0
  57. package/development/core/controllers/media-matchers-controller.d.ts.map +1 -0
  58. package/development/core/controllers.d.ts +1 -0
  59. package/development/core/controllers.d.ts.map +1 -1
  60. package/development/core/controllers.js +65 -1
  61. package/development/core/dom/breakpoint.d.ts +2 -1
  62. package/development/core/dom/breakpoint.d.ts.map +1 -1
  63. package/development/core/dom.js +2 -2
  64. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  65. package/development/core/mixins.js +9 -2
  66. package/development/core/testing/event-spy.d.ts +6 -4
  67. package/development/core/testing/event-spy.d.ts.map +1 -1
  68. package/development/core/testing.js +35 -1
  69. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  70. package/development/datepicker/datepicker.js +1 -1
  71. package/development/dialog/dialog.js +2 -2
  72. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +2 -0
  73. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts.map +1 -1
  74. package/development/expansion-panel/expansion-panel-header.js +7 -3
  75. package/development/file-selector/file-selector.d.ts +5 -0
  76. package/development/file-selector/file-selector.d.ts.map +1 -1
  77. package/development/file-selector.js +8 -1
  78. package/development/flip-card/flip-card/flip-card.d.ts +4 -0
  79. package/development/flip-card/flip-card/flip-card.d.ts.map +1 -1
  80. package/development/flip-card/flip-card-details.js +4 -6
  81. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts +1 -1
  82. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts.map +1 -1
  83. package/development/flip-card/flip-card-summary.js +9 -10
  84. package/development/flip-card/flip-card.js +26 -2
  85. package/development/form-field/form-field.js +5 -3
  86. package/development/icon/icon.d.ts +1 -1
  87. package/development/icon.js +1 -1
  88. package/development/image/image.d.ts.map +1 -1
  89. package/development/image.js +3 -19
  90. package/development/map-container.js +3 -2
  91. package/development/menu/menu/menu.d.ts +1 -0
  92. package/development/menu/menu/menu.d.ts.map +1 -1
  93. package/development/menu/menu.js +15 -11
  94. package/development/navigation/navigation-section.js +4 -14
  95. package/development/navigation/navigation.js +2 -7
  96. package/development/notification.js +3 -2
  97. package/development/paginator/paginator/paginator.d.ts +1 -5
  98. package/development/paginator/paginator/paginator.d.ts.map +1 -1
  99. package/development/paginator/paginator.js +19 -27
  100. package/development/popover/popover/popover.d.ts.map +1 -1
  101. package/development/popover/popover.js +9 -16
  102. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +1 -1
  103. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  104. package/development/radio-button/radio-button-panel.js +2 -2
  105. package/development/sbb-tokens-BdGhUJjM.js +33 -0
  106. package/development/select/select.d.ts +6 -5
  107. package/development/select/select.d.ts.map +1 -1
  108. package/development/select.js +23 -14
  109. package/development/slider/slider.d.ts +5 -0
  110. package/development/slider/slider.d.ts.map +1 -1
  111. package/development/slider.js +8 -1
  112. package/development/table/table-wrapper/table-wrapper.d.ts +1 -1
  113. package/development/table/table-wrapper/table-wrapper.d.ts.map +1 -1
  114. package/development/table/table-wrapper.js +1 -1
  115. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +2 -1
  116. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
  117. package/development/timetable-occupancy-icon.js +11 -9
  118. package/development/toggle-check/toggle-check.d.ts +1 -1
  119. package/development/toggle-check/toggle-check.d.ts.map +1 -1
  120. package/development/toggle-check.js +2 -2
  121. package/dialog/dialog.js +1 -1
  122. package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +2 -0
  123. package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts.map +1 -1
  124. package/expansion-panel/expansion-panel-header.js +25 -23
  125. package/file-selector/file-selector.d.ts +5 -0
  126. package/file-selector/file-selector.d.ts.map +1 -1
  127. package/file-selector.js +7 -0
  128. package/flip-card/flip-card/flip-card.d.ts +4 -0
  129. package/flip-card/flip-card/flip-card.d.ts.map +1 -1
  130. package/flip-card/flip-card-details.js +6 -6
  131. package/flip-card/flip-card-summary/flip-card-summary.d.ts +1 -1
  132. package/flip-card/flip-card-summary/flip-card-summary.d.ts.map +1 -1
  133. package/flip-card/flip-card-summary.js +8 -8
  134. package/flip-card/flip-card.js +56 -42
  135. package/icon/icon.d.ts +1 -1
  136. package/image/image.d.ts.map +1 -1
  137. package/image.js +46 -45
  138. package/map-container.js +7 -7
  139. package/menu/menu/menu.d.ts +1 -0
  140. package/menu/menu/menu.d.ts.map +1 -1
  141. package/menu/menu.js +45 -41
  142. package/navigation/navigation-section.js +7 -7
  143. package/navigation/navigation.js +8 -8
  144. package/package.json +1 -1
  145. package/paginator/paginator/paginator.d.ts +1 -5
  146. package/paginator/paginator/paginator.d.ts.map +1 -1
  147. package/paginator/paginator.js +50 -52
  148. package/popover/popover/popover.d.ts.map +1 -1
  149. package/popover/popover.js +42 -46
  150. package/radio-button/radio-button-panel/radio-button-panel.d.ts +1 -1
  151. package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  152. package/radio-button/radio-button-panel.js +7 -7
  153. package/sbb-tokens-Dx20OtVg.js +18 -0
  154. package/select/select.d.ts +6 -5
  155. package/select/select.d.ts.map +1 -1
  156. package/select.js +55 -53
  157. package/slider/slider.d.ts +5 -0
  158. package/slider/slider.d.ts.map +1 -1
  159. package/slider.js +12 -5
  160. package/table/table-wrapper/table-wrapper.d.ts +1 -1
  161. package/table/table-wrapper/table-wrapper.d.ts.map +1 -1
  162. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +2 -1
  163. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
  164. package/timetable-occupancy-icon.js +45 -44
  165. package/toggle-check/toggle-check.d.ts +1 -1
  166. package/toggle-check/toggle-check.d.ts.map +1 -1
  167. package/toggle-check.js +1 -1
@@ -40,7 +40,7 @@ const SbbCheckboxCommonElementMixin = (superClass) => {
40
40
  this._group = this.closest("sbb-checkbox-group");
41
41
  ["disabled", "required", "size"].forEach((p) => this.requestUpdate(p));
42
42
  }
43
- async willUpdate(changedProperties) {
43
+ willUpdate(changedProperties) {
44
44
  super.willUpdate(changedProperties);
45
45
  if (changedProperties.has("checked") || changedProperties.has("indeterminate")) {
46
46
  this.internals.ariaChecked = this.indeterminate ? "mixed" : `${this.checked}`;
@@ -152,4 +152,4 @@ export {
152
152
  SbbCheckboxCommonElementMixin,
153
153
  checkboxCommon as checkboxCommonStyle
154
154
  };
155
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY2hlY2tib3gvY29tbW9uL2NoZWNrYm94LWNvbW1vbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExpdEVsZW1lbnQsIFByb3BlcnR5VmFsdWVzIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBDb25zdHJ1Y3RvcixcbiAgdHlwZSBTYmJEaXNhYmxlZE1peGluVHlwZSxcbiAgU2JiRm9ybUFzc29jaWF0ZWRDaGVja2JveE1peGluLFxuICB0eXBlIFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpblR5cGUsXG4gIHR5cGUgU2JiUmVxdWlyZWRNaXhpblR5cGUsXG59IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiQ2hlY2tib3hHcm91cEVsZW1lbnQgfSBmcm9tICcuLi9jaGVja2JveC1ncm91cC5qcyc7XG5cbmV4cG9ydCB0eXBlIFNiYkNoZWNrYm94U2l6ZSA9ICd4cycgfCAncycgfCAnbSc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYkNoZWNrYm94Q29tbW9uRWxlbWVudE1peGluVHlwZVxuICBleHRlbmRzIFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpblR5cGVcbiAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkRpc2FibGVkTWl4aW5UeXBlPiwgUGFydGlhbDxTYmJSZXF1aXJlZE1peGluVHlwZT5cbntcbiAgcHVibGljIGFjY2Vzc29yIGluZGV0ZXJtaW5hdGU6IGJvb2xlYW47XG5cbiAgcHVibGljIGdldCBncm91cCgpOiBTYmJDaGVja2JveEdyb3VwRWxlbWVudCB8IG51bGw7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJDaGVja2JveENvbW1vbkVsZW1lbnRNaXhpbiA9IDxUIGV4dGVuZHMgQ29uc3RydWN0b3I8TGl0RWxlbWVudD4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQ29uc3RydWN0b3I8U2JiQ2hlY2tib3hDb21tb25FbGVtZW50TWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJDaGVja2JveENvbW1vbkVsZW1lbnRcbiAgICBleHRlbmRzIFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpbihzdXBlckNsYXNzKVxuICAgIGltcGxlbWVudHMgUGFydGlhbDxTYmJDaGVja2JveENvbW1vbkVsZW1lbnRNaXhpblR5cGU+XG4gIHtcbiAgICAvKiogV2hldGhlciB0aGUgY2hlY2tib3ggaXMgaW5kZXRlcm1pbmF0ZS4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gICAgcHVibGljIGFjY2Vzc29yIGluZGV0ZXJtaW5hdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGNvbm5lY3RlZCBjaGVja2JveCBncm91cC4gKi9cbiAgICBwdWJsaWMgZ2V0IGdyb3VwKCk6IFNiYkNoZWNrYm94R3JvdXBFbGVtZW50IHwgbnVsbCB7XG4gICAgICByZXR1cm4gdGhpcy5fZ3JvdXA7XG4gICAgfVxuICAgIHByaXZhdGUgX2dyb3VwOiBTYmJDaGVja2JveEdyb3VwRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICAgIHRoaXMuX2dyb3VwID0gdGhpcy5jbG9zZXN0KCdzYmItY2hlY2tib3gtZ3JvdXAnKSBhcyBTYmJDaGVja2JveEdyb3VwRWxlbWVudDtcblxuICAgICAgLy8gV2UgbmVlZCB0byBjYWxsIHJlcXVlc3RVcGRhdGUgdG8gdXBkYXRlIHRoZSByZWZsZWN0ZWQgYXR0cmlidXRlc1xuICAgICAgWydkaXNhYmxlZCcsICdyZXF1aXJlZCcsICdzaXplJ10uZm9yRWFjaCgocCkgPT4gdGhpcy5yZXF1ZXN0VXBkYXRlKHApKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdjaGVja2VkJykgfHwgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdpbmRldGVybWluYXRlJykpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYUNoZWNrZWQgPSB0aGlzLmluZGV0ZXJtaW5hdGUgPyAnbWl4ZWQnIDogYCR7dGhpcy5jaGVja2VkfWA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzRGlzYWJsZWRFeHRlcm5hbGx5KCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXA/LmRpc2FibGVkID8/IGZhbHNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBpc1JlcXVpcmVkRXh0ZXJuYWxseSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwPy5yZXF1aXJlZCA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2l0aFVzZXJJbnRlcmFjdGlvbigpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLmluZGV0ZXJtaW5hdGUpIHtcbiAgICAgICAgdGhpcy5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBTYmJDaGVja2JveENvbW1vbkVsZW1lbnQgYXMgdW5rbm93biBhcyBDb25zdHJ1Y3RvcjxTYmJDaGVja2JveENvbW1vbkVsZW1lbnRNaXhpblR5cGU+ICYgVDtcbn07XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQXlCYSxNQUFBLGdDQUFnQyxDQUMzQyxlQUNzRDtNQUN2Qyw0QkFBd0IsTUFBQTs7c0JBQzdCLCtCQUErQixVQUFVOzs7O0FBRHBDLFdBQUEsbUJBQ0wsWUFBMEM7QUFBQTs7QUFNbEQ7QUFBZ0IsMkJBQUEsaUNBQUEsa0JBQUEsTUFBQSw2QkFBeUIsS0FBSztBQU10QyxhQUFNLFVBQUEsa0JBQUEsTUFBQSxnQ0FBQSxHQUFtQztBQUFBLE1BQUE7QUFBQTtBQUFBLE1BTmpELElBQWdCLGdCQUErQjtBQUFBLGVBQUEsbUJBQUE7QUFBQSxNQUFBO0FBQUEsTUFBL0MsSUFBZ0IsY0FBK0IsT0FBQTtBQUFBLDJCQUFBLGlDQUFBO0FBQUEsTUFBQTtBQUFBO0FBQUEsTUFHL0MsSUFBVyxRQUFLO0FBQ2QsZUFBTyxLQUFLO0FBQUEsTUFBQTtBQUFBLE1BSUUsb0JBQWlCO0FBQy9CLGNBQU0sa0JBQWlCO0FBQ2xCLGFBQUEsU0FBUyxLQUFLLFFBQVEsb0JBQW9CO0FBRzlDLFNBQUEsWUFBWSxZQUFZLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQyxDQUFDO0FBQUEsTUFBQTtBQUFBLE1BR3BELE1BQU0sV0FBVyxtQkFBdUM7QUFDekUsY0FBTSxXQUFXLGlCQUFpQjtBQUVsQyxZQUFJLGtCQUFrQixJQUFJLFNBQVMsS0FBSyxrQkFBa0IsSUFBSSxlQUFlLEdBQUc7QUFDOUUsZUFBSyxVQUFVLGNBQWMsS0FBSyxnQkFBZ0IsVUFBVSxHQUFHLEtBQUssT0FBTztBQUFBLFFBQUE7QUFBQSxNQUM3RTtBQUFBLE1BR2lCLHVCQUFvQjs7QUFDOUIsaUJBQUFBLE1BQUEsS0FBSyxVQUFMLGdCQUFBQSxJQUFZLGFBQVk7QUFBQSxNQUFBO0FBQUEsTUFHZCx1QkFBb0I7O0FBQzlCLGlCQUFBQSxNQUFBLEtBQUssVUFBTCxnQkFBQUEsSUFBWSxhQUFZO0FBQUEsTUFBQTtBQUFBLE1BR2Qsc0JBQW1CO0FBQ3BDLFlBQUksS0FBSyxlQUFlO0FBQ3RCLGVBQUssZ0JBQWdCO0FBQUEsUUFBQTtBQUFBLE1BQ3ZCO0FBQUEsT0FuQ0Y7O21DQUZDLGFBQ0EsU0FBUyxFQUFFLE1BQU0sUUFBQSxDQUFTLENBQUM7QUFDWixtQkFBQSxJQUFBLE1BQUEsMkJBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxpQkFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxtQkFBQSxLQUFBLEtBQUEsQ0FBQSxRQUFBLElBQUEsZUFBQSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsWUFBQSxnQkFBK0I7QUFBQSxXQUFBLFVBQUEsYUFBQSw2QkFBQSxnQ0FBQTs7VUFQbEM7QUFBQTtBQTZDUixTQUFBO0FBQ1Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=
155
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY2hlY2tib3gvY29tbW9uL2NoZWNrYm94LWNvbW1vbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExpdEVsZW1lbnQsIFByb3BlcnR5VmFsdWVzIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBDb25zdHJ1Y3RvcixcbiAgdHlwZSBTYmJEaXNhYmxlZE1peGluVHlwZSxcbiAgU2JiRm9ybUFzc29jaWF0ZWRDaGVja2JveE1peGluLFxuICB0eXBlIFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpblR5cGUsXG4gIHR5cGUgU2JiUmVxdWlyZWRNaXhpblR5cGUsXG59IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiQ2hlY2tib3hHcm91cEVsZW1lbnQgfSBmcm9tICcuLi9jaGVja2JveC1ncm91cC5qcyc7XG5cbmV4cG9ydCB0eXBlIFNiYkNoZWNrYm94U2l6ZSA9ICd4cycgfCAncycgfCAnbSc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYkNoZWNrYm94Q29tbW9uRWxlbWVudE1peGluVHlwZVxuICBleHRlbmRzIFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpblR5cGVcbiAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkRpc2FibGVkTWl4aW5UeXBlPiwgUGFydGlhbDxTYmJSZXF1aXJlZE1peGluVHlwZT5cbntcbiAgcHVibGljIGFjY2Vzc29yIGluZGV0ZXJtaW5hdGU6IGJvb2xlYW47XG5cbiAgcHVibGljIGdldCBncm91cCgpOiBTYmJDaGVja2JveEdyb3VwRWxlbWVudCB8IG51bGw7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJDaGVja2JveENvbW1vbkVsZW1lbnRNaXhpbiA9IDxUIGV4dGVuZHMgQ29uc3RydWN0b3I8TGl0RWxlbWVudD4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQ29uc3RydWN0b3I8U2JiQ2hlY2tib3hDb21tb25FbGVtZW50TWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJDaGVja2JveENvbW1vbkVsZW1lbnRcbiAgICBleHRlbmRzIFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpbihzdXBlckNsYXNzKVxuICAgIGltcGxlbWVudHMgUGFydGlhbDxTYmJDaGVja2JveENvbW1vbkVsZW1lbnRNaXhpblR5cGU+XG4gIHtcbiAgICAvKiogV2hldGhlciB0aGUgY2hlY2tib3ggaXMgaW5kZXRlcm1pbmF0ZS4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gICAgcHVibGljIGFjY2Vzc29yIGluZGV0ZXJtaW5hdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGNvbm5lY3RlZCBjaGVja2JveCBncm91cC4gKi9cbiAgICBwdWJsaWMgZ2V0IGdyb3VwKCk6IFNiYkNoZWNrYm94R3JvdXBFbGVtZW50IHwgbnVsbCB7XG4gICAgICByZXR1cm4gdGhpcy5fZ3JvdXA7XG4gICAgfVxuICAgIHByaXZhdGUgX2dyb3VwOiBTYmJDaGVja2JveEdyb3VwRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICAgIHRoaXMuX2dyb3VwID0gdGhpcy5jbG9zZXN0KCdzYmItY2hlY2tib3gtZ3JvdXAnKSBhcyBTYmJDaGVja2JveEdyb3VwRWxlbWVudDtcblxuICAgICAgLy8gV2UgbmVlZCB0byBjYWxsIHJlcXVlc3RVcGRhdGUgdG8gdXBkYXRlIHRoZSByZWZsZWN0ZWQgYXR0cmlidXRlc1xuICAgICAgWydkaXNhYmxlZCcsICdyZXF1aXJlZCcsICdzaXplJ10uZm9yRWFjaCgocCkgPT4gdGhpcy5yZXF1ZXN0VXBkYXRlKHApKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdjaGVja2VkJykgfHwgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdpbmRldGVybWluYXRlJykpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYUNoZWNrZWQgPSB0aGlzLmluZGV0ZXJtaW5hdGUgPyAnbWl4ZWQnIDogYCR7dGhpcy5jaGVja2VkfWA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzRGlzYWJsZWRFeHRlcm5hbGx5KCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXA/LmRpc2FibGVkID8/IGZhbHNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBpc1JlcXVpcmVkRXh0ZXJuYWxseSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwPy5yZXF1aXJlZCA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2l0aFVzZXJJbnRlcmFjdGlvbigpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLmluZGV0ZXJtaW5hdGUpIHtcbiAgICAgICAgdGhpcy5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBTYmJDaGVja2JveENvbW1vbkVsZW1lbnQgYXMgdW5rbm93biBhcyBDb25zdHJ1Y3RvcjxTYmJDaGVja2JveENvbW1vbkVsZW1lbnRNaXhpblR5cGU+ICYgVDtcbn07XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQXlCYSxNQUFBLGdDQUFnQyxDQUMzQyxlQUNzRDtNQUN2Qyw0QkFBd0IsTUFBQTs7c0JBQzdCLCtCQUErQixVQUFVOzs7O0FBRHBDLFdBQUEsbUJBQ0wsWUFBMEM7QUFBQTs7QUFNbEQ7QUFBZ0IsMkJBQUEsaUNBQUEsa0JBQUEsTUFBQSw2QkFBeUIsS0FBSztBQU10QyxhQUFNLFVBQUEsa0JBQUEsTUFBQSxnQ0FBQSxHQUFtQztBQUFBLE1BQUE7QUFBQTtBQUFBLE1BTmpELElBQWdCLGdCQUErQjtBQUFBLGVBQUEsbUJBQUE7QUFBQSxNQUFBO0FBQUEsTUFBL0MsSUFBZ0IsY0FBK0IsT0FBQTtBQUFBLDJCQUFBLGlDQUFBO0FBQUEsTUFBQTtBQUFBO0FBQUEsTUFHL0MsSUFBVyxRQUFLO0FBQ2QsZUFBTyxLQUFLO0FBQUEsTUFBQTtBQUFBLE1BSUUsb0JBQWlCO0FBQy9CLGNBQU0sa0JBQWlCO0FBQ2xCLGFBQUEsU0FBUyxLQUFLLFFBQVEsb0JBQW9CO0FBRzlDLFNBQUEsWUFBWSxZQUFZLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQyxDQUFDO0FBQUEsTUFBQTtBQUFBLE1BR3BELFdBQVcsbUJBQXVDO0FBQ25FLGNBQU0sV0FBVyxpQkFBaUI7QUFFbEMsWUFBSSxrQkFBa0IsSUFBSSxTQUFTLEtBQUssa0JBQWtCLElBQUksZUFBZSxHQUFHO0FBQzlFLGVBQUssVUFBVSxjQUFjLEtBQUssZ0JBQWdCLFVBQVUsR0FBRyxLQUFLLE9BQU87QUFBQSxRQUFBO0FBQUEsTUFDN0U7QUFBQSxNQUdpQix1QkFBb0I7O0FBQzlCLGlCQUFBQSxNQUFBLEtBQUssVUFBTCxnQkFBQUEsSUFBWSxhQUFZO0FBQUEsTUFBQTtBQUFBLE1BR2QsdUJBQW9COztBQUM5QixpQkFBQUEsTUFBQSxLQUFLLFVBQUwsZ0JBQUFBLElBQVksYUFBWTtBQUFBLE1BQUE7QUFBQSxNQUdkLHNCQUFtQjtBQUNwQyxZQUFJLEtBQUssZUFBZTtBQUN0QixlQUFLLGdCQUFnQjtBQUFBLFFBQUE7QUFBQSxNQUN2QjtBQUFBLE9BbkNGOzttQ0FGQyxhQUNBLFNBQVMsRUFBRSxNQUFNLFFBQUEsQ0FBUyxDQUFDO0FBQ1osbUJBQUEsSUFBQSxNQUFBLDJCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsaUJBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsbUJBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLGVBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFlBQUEsZ0JBQStCO0FBQUEsV0FBQSxVQUFBLGFBQUEsNkJBQUEsZ0NBQUE7O1VBUGxDO0FBQUE7QUE2Q1IsU0FBQTtBQUNUOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9
@@ -28,7 +28,7 @@ export declare class SbbClockElement extends LitElement {
28
28
  private _moveHoursHandFn;
29
29
  /** Callback function for minutes hand. */
30
30
  private _moveMinutesHandFn;
31
- protected willUpdate(changedProperties: PropertyValues<this>): Promise<void>;
31
+ protected willUpdate(changedProperties: PropertyValues<this>): void;
32
32
  protected firstUpdated(changedProperties: PropertyValues<this>): Promise<void>;
33
33
  disconnectedCallback(): void;
34
34
  private _handlePageVisibilityChange;
@@ -1 +1 @@
1
- {"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../../../src/elements/clock/clock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAkB,UAAU,EAAE,MAAM,KAAK,CAAC;AAIjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AA2CrD;;GAEG;AACH,qBAEM,eAAgB,SAAQ,UAAU;IACtC,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD;;;OAGG;IACH,SAA4B,GAAG,EAAE,OAAO,GAAG,IAAI,CAAQ;IAEvD,kCAAkC;IAClC,OAAO,CAAC,eAAe,CAAe;IAEtC,oCAAoC;IACpC,OAAO,CAAC,iBAAiB,CAAe;IAExC,oCAAoC;IACpC,OAAO,CAAC,iBAAiB,CAAe;IAExC,wCAAwC;IACxC,OAAO,CAAC,MAAM,CAAU;IAExB,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAU;IAE1B,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAU;IAE1B,0CAA0C;IAC1C,OAAO,CAAC,aAAa,CAAC,CAAiC;IAEvD,wCAAwC;IACxC,OAAO,CAAC,gBAAgB,CAAqC;IAE7D,0CAA0C;IAC1C,OAAO,CAAC,kBAAkB,CAAuC;cAExC,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;cAQlE,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7E,oBAAoB,IAAI,IAAI;IAK5C,OAAO,CAAC,2BAA2B,CAMjC;YAEY,sBAAsB;IAUpC,6FAA6F;YAC/E,WAAW;IAsBzB,sDAAsD;YACxC,UAAU;IAcxB,uEAAuE;IACvE,OAAO,CAAC,yBAAyB;IA4CjC,yGAAyG;IACzG,OAAO,CAAC,kBAAkB;IAW1B,sDAAsD;IACtD,OAAO,CAAC,eAAe;IAOvB,6CAA6C;IAC7C,OAAO,CAAC,cAAc;IAYtB,+CAA+C;IAC/C,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,sBAAsB;IAK9B;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,2BAA2B;IAMnC,OAAO,CAAC,6BAA6B;cAOlB,MAAM,IAAI,cAAc;CA4B5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,WAAW,EAAE,eAAe,CAAC;KAC9B;CACF"}
1
+ {"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../../../src/elements/clock/clock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAkB,UAAU,EAAE,MAAM,KAAK,CAAC;AAIjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AA2CrD;;GAEG;AACH,qBAEM,eAAgB,SAAQ,UAAU;IACtC,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD;;;OAGG;IACH,SAA4B,GAAG,EAAE,OAAO,GAAG,IAAI,CAAQ;IAEvD,kCAAkC;IAClC,OAAO,CAAC,eAAe,CAAe;IAEtC,oCAAoC;IACpC,OAAO,CAAC,iBAAiB,CAAe;IAExC,oCAAoC;IACpC,OAAO,CAAC,iBAAiB,CAAe;IAExC,wCAAwC;IACxC,OAAO,CAAC,MAAM,CAAU;IAExB,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAU;IAE1B,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAU;IAE1B,0CAA0C;IAC1C,OAAO,CAAC,aAAa,CAAC,CAAiC;IAEvD,wCAAwC;IACxC,OAAO,CAAC,gBAAgB,CAAqC;IAE7D,0CAA0C;IAC1C,OAAO,CAAC,kBAAkB,CAAuC;cAE9C,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQnD,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7E,oBAAoB,IAAI,IAAI;IAK5C,OAAO,CAAC,2BAA2B,CAMjC;YAEY,sBAAsB;IAUpC,6FAA6F;YAC/E,WAAW;IAsBzB,sDAAsD;YACxC,UAAU;IAcxB,uEAAuE;IACvE,OAAO,CAAC,yBAAyB;IA4CjC,yGAAyG;IACzG,OAAO,CAAC,kBAAkB;IAW1B,sDAAsD;IACtD,OAAO,CAAC,eAAe;IAOvB,6CAA6C;IAC7C,OAAO,CAAC,cAAc;IAYtB,+CAA+C;IAC/C,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,sBAAsB;IAK9B;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,2BAA2B;IAMnC,OAAO,CAAC,6BAA6B;cAOlB,MAAM,IAAI,cAAc;CA4B5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,WAAW,EAAE,eAAe,CAAC;KAC9B;CACF"}
@@ -177,10 +177,10 @@ let SbbClockElement = (() => {
177
177
  set now(value) {
178
178
  __privateSet(this, _now_accessor_storage, value);
179
179
  }
180
- async willUpdate(changedProperties) {
180
+ willUpdate(changedProperties) {
181
181
  super.willUpdate(changedProperties);
182
182
  if (!isServer && changedProperties.has("now")) {
183
- await this._startOrConfigureClock();
183
+ this._startOrConfigureClock();
184
184
  }
185
185
  }
186
186
  async firstUpdated(changedProperties) {
@@ -366,4 +366,4 @@ let SbbClockElement = (() => {
366
366
  export {
367
367
  SbbClockElement
368
368
  };
369
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2suanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9jbG9jay9hc3NldHMvc2JiX2Nsb2NrX2ZhY2Uuc3ZnP3JhdyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9jbG9jay9hc3NldHMvc2JiX2Nsb2NrX2hvdXJzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19taW51dGVzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19zZWNvbmRzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svY2xvY2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEwNSAxMDVcXFwiPjxnIGNsYXNzPVxcXCJmYWNlXFxcIj48Y2lyY2xlIGZpbGw9XFxcIiNGRkZcXFwiIGN4PVxcXCI1Mi41XFxcIiBjeT1cXFwiNTIuNVxcXCIgcj1cXFwiNTIuNVxcXCIvPjxwYXRoIGQ9XFxcIk01MC43NSA0aDMuNXYxMmgtMy41ek01MC43NSA4OWgzLjV2MTJoLTMuNXpNNzUuMjMzIDkuNjIzbDMuMDMgMS43NS02IDEwLjM5Mi0zLjAzLTEuNzV6TTMyLjczNCA4My4yMzNsMy4wMyAxLjc1LTYgMTAuMzkyLTMuMDMtMS43NXpNOTMuNjI4IDI2LjczMmwxLjc1IDMuMDMxLTEwLjM5MiA2LTEuNzUtMy4wM3pNMjAuMDE3IDY5LjIzNGwxLjc1IDMuMDMxLTEwLjM5MiA2LTEuNzUtMy4wM3pNMTAxIDUwLjc1djMuNUg4OXYtMy41ek0xNiA1MC43NXYzLjVINHYtMy41ek05NS4zNzkgNzUuMjMybC0xLjc1IDMuMDMxLTEwLjM5Mi02IDEuNzUtMy4wM3pNMjEuNzY2IDMyLjczNGwtMS43NSAzLjAzMS0xMC4zOTItNiAxLjc1LTMuMDN6TTc4LjI2NyA5My42M2wtMy4wMyAxLjc1LTYtMTAuMzkzIDMuMDMtMS43NXpNMzUuNzY2IDIwLjAxNWwtMy4wMyAxLjc1LTYtMTAuMzkyIDMuMDMtMS43NXpcXFwiLz48Zz48cGF0aCBkPVxcXCJNNTYuODczIDQuMTlsMS4zOTIuMTQ3LS4zNjYgMy40OC0xLjM5Mi0uMTQ1ek00Ny4xMDEgOTcuMTc3bDEuMzkzLjE0Ni0uMzY2IDMuNDgxLTEuMzkyLS4xNDZ6TTYxLjg5NiA0LjkxNGwxLjM3LjI5LS43MjggMy40MjQtMS4zNy0uMjl6TTQyLjQ1OCA5Ni4zNjZsMS4zNy4yOS0uNzI4IDMuNDI0LTEuMzctLjI5MXpNNjYuODI1IDYuMTU3bDEuMzMyLjQzMi0xLjA4MiAzLjMzLTEuMzMxLS40MzR6TTM3LjkzMSA5NS4wODVsMS4zMzIuNDMyLTEuMDgyIDMuMzMtMS4zMzEtLjQzM3pNNzEuNTg0IDcuOTA2bDEuMjguNTY5LTEuNDI0IDMuMTk3LTEuMjgtLjU3ek0zMy41NiA5My4zMmwxLjI3OC41NjktMS40MjMgMy4xOTctMS4yOC0uNTd6TTgwLjQ0IDEyLjg1MmwxLjEzMy44MjMtMi4wNTggMi44MzEtMS4xMzItLjgyM3pNMjUuNDgxIDg4LjQ5NGwxLjEzMy44MjItMi4wNTcgMi44MzItMS4xMzMtLjgyM3pNODQuNDMgMTUuOTg2bDEuMDQuOTM3LTIuMzQyIDIuNi0xLjA0LS45MzZ6TTIxLjg3IDg1LjQ2OWwxLjA0LjkzNi0yLjM0MSAyLjYwMS0xLjA0LS45Mzd6TTg4LjA3MiAxOS41MjJsLjkzNyAxLjA0LTIuNiAyLjM0My0uOTM3LTEuMDR6TTE4LjU5MyA4Mi4wODhsLjkzNyAxLjA0LTIuNjAxIDIuMzQyLS45MzctMS4wNHpNOTEuMzI4IDIzLjQyNWwuODIzIDEuMTMzLTIuODMyIDIuMDU3LS44MjMtMS4xMzJ6TTE1LjY4NCA3OC4zODVsLjgyMyAxLjEzMi0yLjgzMiAyLjA1OC0uODIyLTEuMTMzek05Ni41MiAzMi4xMjhsLjU3IDEuMjc5LTMuMTk4IDEuNDIzLS41Ny0xLjI3OHpNMTEuMTA5IDcwLjE2MWwuNTY5IDEuMjc5LTMuMTk3IDEuNDIzLS41Ny0xLjI3OXpNOTguNDA3IDM2Ljg1bC40MzMgMS4zMzItMy4zMyAxLjA4MS0uNDMyLTEuMzMxek05LjQ4MyA2NS43NGwuNDMyIDEuMzMtMy4zMjkgMS4wODItLjQzMi0xLjMzMXpNOTkuNzk1IDQxLjcyNmwuMjkxIDEuMzctMy40MjMuNzI3LS4yOS0xLjM3ek04LjM0IDYxLjE3bC4yOTIgMS4zNy0zLjQyNC43MjgtLjI5LTEuMzd6TTEwMC42NiA0Ni43M2wuMTQ2IDEuMzkzLTMuNDguMzY2LS4xNDctMS4zOTJ6TTcuNjc0IDU2LjUwNmwuMTQ2IDEuMzkyLTMuNDguMzY2LS4xNDctMS4zOTJ6TTEwMC44MTEgNTYuODczbC0uMTQ2IDEuMzkyLTMuNDgtLjM2NS4xNDUtMS4zOTN6TTcuODIxIDQ3LjEwMWwtLjE0NiAxLjM5Mi0zLjQ4LS4zNjUuMTQ1LTEuMzkzek0xMDAuMDkgNjEuODk1bC0uMjkxIDEuMzY5LTMuNDI0LS43MjguMjkxLTEuMzY5ek04LjYzMSA0Mi40NmwtLjI5MSAxLjM3LTMuNDIzLS43MjguMjktMS4zN3pNOTguODQgNjYuODI3bC0uNDMyIDEuMzMxLTMuMzI5LTEuMDgxLjQzMy0xLjMzMnpNOS45MTggMzcuOTNsLS40MzMgMS4zMzEtMy4zMjktMS4wODIuNDMzLTEuMzMxek05Ny4wOTggNzEuNTg1bC0uNTY5IDEuMjgtMy4xOTctMS40MjQuNTctMS4yOHpNMTEuNjc3IDMzLjU1OGwtLjU3IDEuMjgtMy4xOTctMS40MjQuNTctMS4yNzl6TTkyLjE0OSA4MC40MzlsLS44MjMgMS4xMzMtMi44MzItMi4wNTguODIzLTEuMTMyek0xNi41MDYgMjUuNDgybC0uODIzIDEuMTMzLTIuODMxLTIuMDU3LjgyMy0xLjEzM3pNODkuMDE3IDg0LjQzMWwtLjkzNyAxLjA0LTIuNi0yLjM0MS45MzYtMS4wNHpNMTkuNTI4IDIxLjg2OWwtLjkzNiAxLjA0LTIuNjAxLTIuMzQyLjkzNi0xLjA0ek04NS40OCA4OC4wNzZsLTEuMDQxLjkzNi0yLjM0Mi0yLjYgMS4wNC0uOTM3ek0yMi45MSAxOC41OWwtMS4wNC45MzctMi4zNDEtMi42MDEgMS4wNC0uOTM3ek04MS41NzQgOTEuMzI4bC0xLjEzMy44MjMtMi4wNTctMi44MzEgMS4xMzItLjgyM3pNMjYuNjE3IDE1LjY4NGwtMS4xMzMuODIzLTIuMDU3LTIuODMyIDEuMTMyLS44MjN6TTcyLjg3MyA5Ni41MjRsLTEuMjc5LjU3LTEuNDIzLTMuMTk4IDEuMjc4LS41N3pNMzQuODM4IDExLjEwNWwtMS4yNzkuNTctMS40MjMtMy4xOTggMS4yNzktLjU3ek02OC4xNTEgOTguNDA1bC0xLjMzMS40MzItMS4wODItMy4zMjkgMS4zMzItLjQzMnpNMzkuMjU5IDkuNDg1bC0xLjMzMi40MzMtMS4wODEtMy4zMyAxLjMzMS0uNDMyek02My4yNzIgOTkuNzk5bC0xLjM2OS4yOS0uNzI4LTMuNDIyIDEuMzctLjI5MXpNNDMuODMgOC4zMzdsLTEuMzY5LjI5MS0uNzI3LTMuNDIzIDEuMzctLjI5MXpNNTguMjcgMTAwLjY2MmwtMS4zOTMuMTQ2LS4zNjYtMy40OCAxLjM5My0uMTQ3ek00OC40OTQgNy42NzJsLTEuMzkyLjE0Ny0uMzY2LTMuNDgxIDEuMzkyLS4xNDd6XFxcIi8+PC9nPjwvZz48L3N2Zz5cXG5cIiIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmb2N1c2FibGU9XFxcImZhbHNlXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDUgMTA1XFxcIj48cGF0aCBpZD1cXFwibW9kX2Nsb2NrX3N2Z19ob3Vyc1xcXCIgZD1cXFwiTTU1LjcgNjQuNWgtNi40bC42LTQ0aDUuMnpcXFwiLz48L3N2Zz5cXG5cIiIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmb2N1c2FibGU9XFxcImZhbHNlXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDUgMTA1XFxcIj48cGF0aCBkPVxcXCJNNTUuMSw2NC41aC01LjJsMC44LTU4aDMuNkw1NS4xLDY0LjV6XFxcIi8+PC9zdmc+XFxuXCIiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZm9jdXNhYmxlPVxcXCJmYWxzZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTA1IDEwNVxcXCI+PHBhdGggZD1cXFwiTTU3LjgsMjEuM2MwLTIuOS0yLjQtNS4yLTUuMi01LjJzLTUuMywyLjMtNS4zLDUuMmMwLDIuNywyLDQuOCw0LjUsNS4yVjY5aDEuNVYyNi41QzU1LjgsMjYuMiw1Ny44LDI0LDU3LjgsMjEuM3pcXFwiLz48L3N2Zz5cXG5cIiIsImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiVGltZSB9IGZyb20gJy4uL2NvcmUvaW50ZXJmYWNlcy5qcyc7XG5cbmltcG9ydCBjbG9ja0ZhY2VTVkcgZnJvbSAnLi9hc3NldHMvc2JiX2Nsb2NrX2ZhY2Uuc3ZnP3Jhdyc7XG5pbXBvcnQgY2xvY2tIYW5kbGVIb3Vyc1NWRyBmcm9tICcuL2Fzc2V0cy9zYmJfY2xvY2tfaG91cnMuc3ZnP3Jhdyc7XG5pbXBvcnQgY2xvY2tIYW5kbGVNaW51dGVzU1ZHIGZyb20gJy4vYXNzZXRzL3NiYl9jbG9ja19taW51dGVzLnN2Zz9yYXcnO1xuaW1wb3J0IGNsb2NrSGFuZGxlU2Vjb25kc1NWRyBmcm9tICcuL2Fzc2V0cy9zYmJfY2xvY2tfc2Vjb25kcy5zdmc/cmF3JztcbmltcG9ydCBzdHlsZSBmcm9tICcuL2Nsb2NrLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKiBOdW1iZXIgb2YgaG91cnMgb24gdGhlIGNsb2NrIGZhY2UuICovXG5jb25zdCBUT1RBTF9IT1VSU19PTl9DTE9DS19GQUNFID0gMTI7XG5cbi8qKiBOdW1iZXIgb2YgbWludXRlcyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbmNvbnN0IFRPVEFMX01JTlVURVNfT05fQ0xPQ0tfRkFDRSA9IDYwO1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgb24gdGhlIGNsb2NrIGZhY2UuICovXG5jb25zdCBUT1RBTF9TRUNPTkRTX09OX0NMT0NLX0ZBQ0UgPSA2MDtcblxuLyoqIFRpbWVvdXQgZm9yIHRoZSBjbG9jayBzdGFydC4gKi9cbmNvbnN0IElOSVRJQUxfVElNRU9VVF9EVVJBVElPTiA9IDUwO1xuXG4vKiogQW5nbGUgaW4gYSBzaW5nbGUgcm90YXRpb24uICovXG5jb25zdCBGVUxMX0FOR0xFID0gMzYwO1xuXG4vKiogQW5nbGUgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgaG91cnM6IDM2MC8xMiwgbWVhbnMgYSBmdWxsIHJvdGF0aW9uIC8gbnVtYmVyIG9mIGhvdXJzIGluIGEgcm90YXRpb24uICovXG5jb25zdCBIT1VSU19BTkdMRSA9IDMwO1xuXG4vKiogQW5nbGUgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgbWludXRlczogMzYwLzYwLCBtZWFucyBhIGZ1bGwgcm90YXRpb24gLyBudW1iZXIgb2YgbWludXRlcyBpbiBvbmUgaG91ci4gKi9cbmNvbnN0IE1JTlVURVNfQU5HTEUgPSA2O1xuXG4vKiogQW5nbGUgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgc2Vjb25kcyBmb3IgU0JCIGNsb2NrIGN1c3RvbSBiZWhhdmlvci4gKi9cbmNvbnN0IFNCQl9TRUNPTkRTX0FOR0xFID0gMzYwIC8gNTguNTtcblxuLyoqIE51bWJlciBvZiBzZWNvbmRzIGluIGEgbWludXRlLiAqL1xuY29uc3QgU0VDT05EU19JTl9BX01JTlVURSA9IDYwO1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgaW4gYW4gaG91ci4gKi9cbmNvbnN0IFNFQ09ORFNfSU5fQU5fSE9VUiA9IDM2MDA7XG5cbmNvbnN0IEFERF9FVkVOVF9MSVNURU5FUl9PUFRJT05TOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyA9IHtcbiAgb25jZTogdHJ1ZSxcbiAgcGFzc2l2ZTogdHJ1ZSxcbn07XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gYW5hbG9nIGNsb2NrIHdpdGggdGhlIGNsYXNzaWMgU0JCIGZhY2UuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1jbG9jaycpXG5jbGFzcyBTYmJDbG9ja0VsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqXG4gICAqIERlZmluZSBhIHNwZWNpZmljIHRpbWUgd2hpY2ggdGhlIGNsb2NrIHNob3VsZCBzaG93IHN0YXRpY2FsbHkuXG4gICAqIEBwYXJhbSB2YWx1ZSBISDpNTTpzc1xuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIG5vdzogU2JiVGltZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGhvdXIgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfY2xvY2tIYW5kSG91cnMhOiBIVE1MRWxlbWVudDtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBtaW51dGUgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfY2xvY2tIYW5kTWludXRlcyE6IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHNlY29uZCBoYW5kLiAqL1xuICBwcml2YXRlIF9jbG9ja0hhbmRTZWNvbmRzITogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqIEhvdXJzIHZhbHVlIGZvciB0aGUgY3VycmVudCBkYXRlLiAqL1xuICBwcml2YXRlIF9ob3VycyE6IG51bWJlcjtcblxuICAvKiogTWludXRlcyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgZGF0ZS4gKi9cbiAgcHJpdmF0ZSBfbWludXRlcyE6IG51bWJlcjtcblxuICAvKiogU2Vjb25kcyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgZGF0ZS4gKi9cbiAgcHJpdmF0ZSBfc2Vjb25kcyE6IG51bWJlcjtcblxuICAvKiogTW92ZSB0aGUgbWludXRlcyBoYW5kIGV2ZXJ5IG1pbnV0ZS4gKi9cbiAgcHJpdmF0ZSBfaGFuZE1vdmVtZW50PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgaG91cnMgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfbW92ZUhvdXJzSGFuZEZuID0gKCk6IHZvaWQgPT4gdGhpcy5fbW92ZUhvdXJzSGFuZCgpO1xuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgbWludXRlcyBoYW5kLiAqL1xuICBwcml2YXRlIF9tb3ZlTWludXRlc0hhbmRGbiA9ICgpOiB2b2lkID0+IHRoaXMuX21vdmVNaW51dGVzSGFuZCgpO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IFByb21pc2U8dm9pZD4ge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCFpc1NlcnZlciAmJiBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25vdycpKSB7XG4gICAgICBhd2FpdCB0aGlzLl9zdGFydE9yQ29uZmlndXJlQ2xvY2soKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IFByb21pc2U8dm9pZD4ge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgdGhpcy5faGFuZGxlUGFnZVZpc2liaWxpdHlDaGFuZ2UsIGZhbHNlKTtcbiAgICAgIGF3YWl0IHRoaXMuX3N0YXJ0T3JDb25maWd1cmVDbG9jaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAnaGlkZGVuJykge1xuICAgICAgYXdhaXQgdGhpcy5fc3RvcENsb2NrKCk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5ub3cpIHtcbiAgICAgIGF3YWl0IHRoaXMuX3N0YXJ0Q2xvY2soKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBhc3luYyBfc3RhcnRPckNvbmZpZ3VyZUNsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm5vdykge1xuICAgICAgYXdhaXQgdGhpcy5fc3RvcENsb2NrKCk7XG4gICAgICB0aGlzLl9yZXNldFNlY29uZHNIYW5kQW5pbWF0aW9uKCk7XG4gICAgICB0aGlzLl9zZXRIYW5kc1N0YXJ0aW5nUG9zaXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5fc3RhcnRDbG9jaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTdGFydHMgdGhlIGNsb2NrIGJ5IGRlZmluaW5nIHRoZSBoYW5kcyBzdGFydGluZyBwb3NpdGlvbiB0aGVuIHN0YXJ0aW5nIHRoZSBhbmltYXRpb25zLiAqL1xuICBwcml2YXRlIGFzeW5jIF9zdGFydENsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2FuaW1hdGlvbmVuZCcsXG4gICAgICB0aGlzLl9tb3ZlSG91cnNIYW5kRm4sXG4gICAgICBBRERfRVZFTlRfTElTVEVORVJfT1BUSU9OUyxcbiAgICApO1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnYW5pbWF0aW9uZW5kJyxcbiAgICAgIHRoaXMuX21vdmVNaW51dGVzSGFuZEZuLFxuICAgICAgQUREX0VWRU5UX0xJU1RFTkVSX09QVElPTlMsXG4gICAgKTtcblxuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3NldEhhbmRzU3RhcnRpbmdQb3NpdGlvbigpO1xuXG4gICAgICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1jbG9jay1hbmltYXRpb24tcGxheS1zdGF0ZScsICdydW5uaW5nJyk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0sIElOSVRJQUxfVElNRU9VVF9EVVJBVElPTiksXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBTdG9wcyB0aGUgY2xvY2sgYnkgcmVtb3ZpbmcgYWxsIHRoZSBhbmltYXRpb25zLiAqL1xuICBwcml2YXRlIGFzeW5jIF9zdG9wQ2xvY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9oYW5kTW92ZW1lbnQpO1xuXG4gICAgdGhpcy5fcmVtb3ZlU2Vjb25kc0FuaW1hdGlvblN0eWxlcygpO1xuICAgIHRoaXMuX3JlbW92ZUhvdXJzQW5pbWF0aW9uU3R5bGVzKCk7XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZUhvdXJzSGFuZEZuKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLl9tb3ZlTWludXRlc0hhbmRGbik7XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRNaW51dGVzPy5jbGFzc0xpc3QuYWRkKCdzYmItY2xvY2tfX2hhbmQtbWludXRlcy0tbm8tdHJhbnNpdGlvbicpO1xuXG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLWNsb2NrLWFuaW1hdGlvbi1wbGF5LXN0YXRlJywgJ3BhdXNlZCcpO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gZm9yIHRoZSB0aHJlZSBoYW5kcyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbiAgcHJpdmF0ZSBfc2V0SGFuZHNTdGFydGluZ1Bvc2l0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2Fzc2lnbkN1cnJlbnRUaW1lKCk7XG4gICAgY29uc3QgcmVtYWluaW5nU2Vjb25kcyA9IFRPVEFMX1NFQ09ORFNfT05fQ0xPQ0tfRkFDRSAtIHRoaXMuX3NlY29uZHM7XG4gICAgY29uc3QgcmVtYWluaW5nTWludXRlcyA9IFRPVEFMX01JTlVURVNfT05fQ0xPQ0tfRkFDRSAtIHRoaXMuX21pbnV0ZXM7XG4gICAgY29uc3QgcmVtYWluaW5nSG91cnMgPSBUT1RBTF9IT1VSU19PTl9DTE9DS19GQUNFIC0gdGhpcy5faG91cnM7XG5cbiAgICBsZXQgaG91cnNBbmltYXRpb25EdXJhdGlvbiA9IDA7XG4gICAgbGV0IGhhc1JlbWFpbmluZ01pbnV0ZXNPclNlY29uZHMgPSAwO1xuXG4gICAgaWYgKHJlbWFpbmluZ1NlY29uZHMgPiAwKSB7XG4gICAgICBob3Vyc0FuaW1hdGlvbkR1cmF0aW9uICs9IHJlbWFpbmluZ1NlY29uZHM7XG4gICAgICBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzID0gMTtcbiAgICB9XG5cbiAgICBpZiAocmVtYWluaW5nTWludXRlcyA+IDApIHtcbiAgICAgIGhvdXJzQW5pbWF0aW9uRHVyYXRpb24gKz1cbiAgICAgICAgKHJlbWFpbmluZ01pbnV0ZXMgLSBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzKSAqIFNFQ09ORFNfSU5fQV9NSU5VVEU7XG4gICAgICBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzID0gMTtcbiAgICB9XG5cbiAgICBpZiAocmVtYWluaW5nSG91cnMgPiAwKSB7XG4gICAgICBob3Vyc0FuaW1hdGlvbkR1cmF0aW9uICs9XG4gICAgICAgIChyZW1haW5pbmdIb3VycyAtIGhhc1JlbWFpbmluZ01pbnV0ZXNPclNlY29uZHMpICogU0VDT05EU19JTl9BTl9IT1VSO1xuICAgIH1cblxuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScsXG4gICAgICBgJHtNYXRoLmNlaWwodGhpcy5faG91cnMgKiBIT1VSU19BTkdMRSArIHRoaXMuX21pbnV0ZXMgLyAyKX1kZWdgLFxuICAgICk7XG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1kdXJhdGlvbicsIGAke2hvdXJzQW5pbWF0aW9uRHVyYXRpb259c2ApO1xuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLXN0YXJ0LWFuZ2xlJyxcbiAgICAgIGAke01hdGguY2VpbCh0aGlzLl9zZWNvbmRzICogU0JCX1NFQ09ORFNfQU5HTEUpfWRlZ2AsXG4gICAgKTtcbiAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1zYmItY2xvY2stc2Vjb25kcy1hbmltYXRpb24tZHVyYXRpb24nLCBgJHtyZW1haW5pbmdTZWNvbmRzfXNgKTtcblxuICAgIHRoaXMuX3NldE1pbnV0ZXNIYW5kKCk7XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5jbGFzc0xpc3QuYWRkKCdzYmItY2xvY2tfX2hhbmQtc2Vjb25kcy0taW5pdGlhbC1taW51dGUnKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8uY2xhc3NMaXN0LmFkZCgnc2JiLWNsb2NrX19oYW5kLWhvdXJzLS1pbml0aWFsLWhvdXInKTtcblxuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWluaXRpYWxpemVkJywgdHJ1ZSk7XG4gIH1cblxuICAvKiogR2l2ZW4gdGhlIGN1cnJlbnQgZGF0ZSwgY2FsY3VsYXRlcyB0aGUgaGgvbW0vc3MgdmFsdWVzIGFuZCB0aGUgaGgvbW0vc3MgbGVmdCB0byB0aGUgbmV4dCBtaWRuaWdodC4gKi9cbiAgcHJpdmF0ZSBfYXNzaWduQ3VycmVudFRpbWUoKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMubm93ID8gbnVsbCA6IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IGRhdGVcbiAgICAgID8gW2RhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCksIGRhdGUuZ2V0U2Vjb25kcygpXVxuICAgICAgOiB0aGlzLm5vdyEuc3BsaXQoJzonKS5tYXAoKHApID0+ICtwKTtcblxuICAgIHRoaXMuX2hvdXJzID0gaG91cnMgJSAxMjtcbiAgICB0aGlzLl9taW51dGVzID0gbWludXRlcztcbiAgICB0aGlzLl9zZWNvbmRzID0gc2Vjb25kcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGZvciB0aGUgbWludXRlcyBoYW5kLiAqL1xuICBwcml2YXRlIF9zZXRNaW51dGVzSGFuZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRNaW51dGVzPy5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgYHJvdGF0ZVooJHtNYXRoLmNlaWwodGhpcy5fbWludXRlcyAqIE1JTlVURVNfQU5HTEUpfWRlZylgLFxuICAgICk7XG4gIH1cblxuICAvKiogTW92ZSB0aGUgaG91cnMgaGFuZCB0byB0aGUgbmV4dCB2YWx1ZS4gKi9cbiAgcHJpdmF0ZSBfbW92ZUhvdXJzSGFuZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZW1vdmVIb3Vyc0FuaW1hdGlvblN0eWxlcygpO1xuXG4gICAgbGV0IGhvdXJzQW5nbGUgPSBNYXRoLmNlaWwodGhpcy5faG91cnMgKiBIT1VSU19BTkdMRSArIHRoaXMuX21pbnV0ZXMgLyAyKTtcblxuICAgIGlmIChob3Vyc0FuZ2xlID49IEZVTExfQU5HTEUpIHtcbiAgICAgIGhvdXJzQW5nbGUgLT0gRlVMTF9BTkdMRTtcbiAgICB9XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8uc3R5bGUuc2V0UHJvcGVydHkoJ3RyYW5zZm9ybScsIGByb3RhdGVaKCR7aG91cnNBbmdsZX1kZWcpYCk7XG4gIH1cblxuICAvKiogTW92ZSB0aGUgbWludXRlcyBoYW5kIHRvIHRoZSBuZXh0IHZhbHVlLiAqL1xuICBwcml2YXRlIF9tb3ZlTWludXRlc0hhbmQoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4pO1xuXG4gICAgdGhpcy5fcmVtb3ZlU2Vjb25kc0FuaW1hdGlvblN0eWxlcygpO1xuXG4gICAgdGhpcy5fYWRkTWludXRlc0FuZFNldEhhbmRzKCk7XG5cbiAgICB0aGlzLl9oYW5kTW92ZW1lbnQgPSBzZXRJbnRlcnZhbChcbiAgICAgICgpID0+IHRoaXMuX2FkZE1pbnV0ZXNBbmRTZXRIYW5kcygpLFxuICAgICAgVE9UQUxfU0VDT05EU19PTl9DTE9DS19GQUNFICogMTAwMCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkTWludXRlc0FuZFNldEhhbmRzKCk6IHZvaWQge1xuICAgIHRoaXMuX21pbnV0ZXMrKztcbiAgICB0aGlzLl9zZXRNaW51dGVzSGFuZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92aW5nIGFuaW1hdGlvbiBieSBvdmVycmlkaW5nIHdpdGggZW1wdHkgc3RyaW5nLFxuICAgKiB0aGVuIHRyaWdnZXJpbmcgYSByZWZsb3cgYW5kIHJlIGFkZCBvcmlnaW5hbCBhbmltYXRpb24gYnkgcmVtb3Zpbmcgb3ZlcnJpZGUuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9yZXNldFNlY29uZHNIYW5kQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY2xvY2tIYW5kU2Vjb25kcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzLnN0eWxlLmFuaW1hdGlvbiA9ICcnO1xuICAgIC8vIEhhY2sgdG8gdHJpZ2dlciByZWZsb3dcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC1leHByZXNzaW9uc1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMub2Zmc2V0SGVpZ2h0O1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2FuaW1hdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgZG9jdW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCB0aGlzLl9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSk7XG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVIb3Vyc0hhbmRGbik7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4pO1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faGFuZE1vdmVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZUhvdXJzQW5pbWF0aW9uU3R5bGVzKCk6IHZvaWQge1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5jbGFzc0xpc3QucmVtb3ZlKCdzYmItY2xvY2tfX2hhbmQtaG91cnMtLWluaXRpYWwtaG91cicpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlU2Vjb25kc0FuaW1hdGlvblN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5jbGFzc0xpc3QucmVtb3ZlKCdzYmItY2xvY2tfX2hhbmQtc2Vjb25kcy0taW5pdGlhbC1taW51dGUnKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRNaW51dGVzPy5jbGFzc0xpc3QucmVtb3ZlKCdzYmItY2xvY2tfX2hhbmQtbWludXRlcy0tbm8tdHJhbnNpdGlvbicpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLXN0YXJ0LWFuZ2xlJyk7XG4gICAgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYmItY2xvY2stc2Vjb25kcy1hbmltYXRpb24tZHVyYXRpb24nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1jbG9ja1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1jbG9ja19fZmFjZVwiIC5pbm5lckhUTUw9JHtjbG9ja0ZhY2VTVkd9Pjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1jbG9ja19faGFuZC1ob3Vyc1wiXG4gICAgICAgICAgLmlubmVySFRNTD0ke2Nsb2NrSGFuZGxlSG91cnNTVkd9XG4gICAgICAgICAgJHtyZWYoKGU/OiBFbGVtZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jbG9ja0hhbmRIb3VycyA9IGUgYXMgSFRNTFNwYW5FbGVtZW50O1xuICAgICAgICAgIH0pfVxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwic2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMgc2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMtLW5vLXRyYW5zaXRpb25cIlxuICAgICAgICAgIC5pbm5lckhUTUw9JHtjbG9ja0hhbmRsZU1pbnV0ZXNTVkd9XG4gICAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcyA9IGVsIGFzIEhUTUxTcGFuRWxlbWVudDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1jbG9ja19faGFuZC1zZWNvbmRzXCJcbiAgICAgICAgICAuaW5uZXJIVE1MPSR7Y2xvY2tIYW5kbGVTZWNvbmRzU1ZHfVxuICAgICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMgPSBlbCBhcyBIVE1MU3BhbkVsZW1lbnQ7XG4gICAgICAgICAgfSl9XG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItY2xvY2snOiBTYmJDbG9ja0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6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
369
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2suanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9jbG9jay9hc3NldHMvc2JiX2Nsb2NrX2ZhY2Uuc3ZnP3JhdyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9jbG9jay9hc3NldHMvc2JiX2Nsb2NrX2hvdXJzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19taW51dGVzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19zZWNvbmRzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svY2xvY2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEwNSAxMDVcXFwiPjxnIGNsYXNzPVxcXCJmYWNlXFxcIj48Y2lyY2xlIGZpbGw9XFxcIiNGRkZcXFwiIGN4PVxcXCI1Mi41XFxcIiBjeT1cXFwiNTIuNVxcXCIgcj1cXFwiNTIuNVxcXCIvPjxwYXRoIGQ9XFxcIk01MC43NSA0aDMuNXYxMmgtMy41ek01MC43NSA4OWgzLjV2MTJoLTMuNXpNNzUuMjMzIDkuNjIzbDMuMDMgMS43NS02IDEwLjM5Mi0zLjAzLTEuNzV6TTMyLjczNCA4My4yMzNsMy4wMyAxLjc1LTYgMTAuMzkyLTMuMDMtMS43NXpNOTMuNjI4IDI2LjczMmwxLjc1IDMuMDMxLTEwLjM5MiA2LTEuNzUtMy4wM3pNMjAuMDE3IDY5LjIzNGwxLjc1IDMuMDMxLTEwLjM5MiA2LTEuNzUtMy4wM3pNMTAxIDUwLjc1djMuNUg4OXYtMy41ek0xNiA1MC43NXYzLjVINHYtMy41ek05NS4zNzkgNzUuMjMybC0xLjc1IDMuMDMxLTEwLjM5Mi02IDEuNzUtMy4wM3pNMjEuNzY2IDMyLjczNGwtMS43NSAzLjAzMS0xMC4zOTItNiAxLjc1LTMuMDN6TTc4LjI2NyA5My42M2wtMy4wMyAxLjc1LTYtMTAuMzkzIDMuMDMtMS43NXpNMzUuNzY2IDIwLjAxNWwtMy4wMyAxLjc1LTYtMTAuMzkyIDMuMDMtMS43NXpcXFwiLz48Zz48cGF0aCBkPVxcXCJNNTYuODczIDQuMTlsMS4zOTIuMTQ3LS4zNjYgMy40OC0xLjM5Mi0uMTQ1ek00Ny4xMDEgOTcuMTc3bDEuMzkzLjE0Ni0uMzY2IDMuNDgxLTEuMzkyLS4xNDZ6TTYxLjg5NiA0LjkxNGwxLjM3LjI5LS43MjggMy40MjQtMS4zNy0uMjl6TTQyLjQ1OCA5Ni4zNjZsMS4zNy4yOS0uNzI4IDMuNDI0LTEuMzctLjI5MXpNNjYuODI1IDYuMTU3bDEuMzMyLjQzMi0xLjA4MiAzLjMzLTEuMzMxLS40MzR6TTM3LjkzMSA5NS4wODVsMS4zMzIuNDMyLTEuMDgyIDMuMzMtMS4zMzEtLjQzM3pNNzEuNTg0IDcuOTA2bDEuMjguNTY5LTEuNDI0IDMuMTk3LTEuMjgtLjU3ek0zMy41NiA5My4zMmwxLjI3OC41NjktMS40MjMgMy4xOTctMS4yOC0uNTd6TTgwLjQ0IDEyLjg1MmwxLjEzMy44MjMtMi4wNTggMi44MzEtMS4xMzItLjgyM3pNMjUuNDgxIDg4LjQ5NGwxLjEzMy44MjItMi4wNTcgMi44MzItMS4xMzMtLjgyM3pNODQuNDMgMTUuOTg2bDEuMDQuOTM3LTIuMzQyIDIuNi0xLjA0LS45MzZ6TTIxLjg3IDg1LjQ2OWwxLjA0LjkzNi0yLjM0MSAyLjYwMS0xLjA0LS45Mzd6TTg4LjA3MiAxOS41MjJsLjkzNyAxLjA0LTIuNiAyLjM0My0uOTM3LTEuMDR6TTE4LjU5MyA4Mi4wODhsLjkzNyAxLjA0LTIuNjAxIDIuMzQyLS45MzctMS4wNHpNOTEuMzI4IDIzLjQyNWwuODIzIDEuMTMzLTIuODMyIDIuMDU3LS44MjMtMS4xMzJ6TTE1LjY4NCA3OC4zODVsLjgyMyAxLjEzMi0yLjgzMiAyLjA1OC0uODIyLTEuMTMzek05Ni41MiAzMi4xMjhsLjU3IDEuMjc5LTMuMTk4IDEuNDIzLS41Ny0xLjI3OHpNMTEuMTA5IDcwLjE2MWwuNTY5IDEuMjc5LTMuMTk3IDEuNDIzLS41Ny0xLjI3OXpNOTguNDA3IDM2Ljg1bC40MzMgMS4zMzItMy4zMyAxLjA4MS0uNDMyLTEuMzMxek05LjQ4MyA2NS43NGwuNDMyIDEuMzMtMy4zMjkgMS4wODItLjQzMi0xLjMzMXpNOTkuNzk1IDQxLjcyNmwuMjkxIDEuMzctMy40MjMuNzI3LS4yOS0xLjM3ek04LjM0IDYxLjE3bC4yOTIgMS4zNy0zLjQyNC43MjgtLjI5LTEuMzd6TTEwMC42NiA0Ni43M2wuMTQ2IDEuMzkzLTMuNDguMzY2LS4xNDctMS4zOTJ6TTcuNjc0IDU2LjUwNmwuMTQ2IDEuMzkyLTMuNDguMzY2LS4xNDctMS4zOTJ6TTEwMC44MTEgNTYuODczbC0uMTQ2IDEuMzkyLTMuNDgtLjM2NS4xNDUtMS4zOTN6TTcuODIxIDQ3LjEwMWwtLjE0NiAxLjM5Mi0zLjQ4LS4zNjUuMTQ1LTEuMzkzek0xMDAuMDkgNjEuODk1bC0uMjkxIDEuMzY5LTMuNDI0LS43MjguMjkxLTEuMzY5ek04LjYzMSA0Mi40NmwtLjI5MSAxLjM3LTMuNDIzLS43MjguMjktMS4zN3pNOTguODQgNjYuODI3bC0uNDMyIDEuMzMxLTMuMzI5LTEuMDgxLjQzMy0xLjMzMnpNOS45MTggMzcuOTNsLS40MzMgMS4zMzEtMy4zMjktMS4wODIuNDMzLTEuMzMxek05Ny4wOTggNzEuNTg1bC0uNTY5IDEuMjgtMy4xOTctMS40MjQuNTctMS4yOHpNMTEuNjc3IDMzLjU1OGwtLjU3IDEuMjgtMy4xOTctMS40MjQuNTctMS4yNzl6TTkyLjE0OSA4MC40MzlsLS44MjMgMS4xMzMtMi44MzItMi4wNTguODIzLTEuMTMyek0xNi41MDYgMjUuNDgybC0uODIzIDEuMTMzLTIuODMxLTIuMDU3LjgyMy0xLjEzM3pNODkuMDE3IDg0LjQzMWwtLjkzNyAxLjA0LTIuNi0yLjM0MS45MzYtMS4wNHpNMTkuNTI4IDIxLjg2OWwtLjkzNiAxLjA0LTIuNjAxLTIuMzQyLjkzNi0xLjA0ek04NS40OCA4OC4wNzZsLTEuMDQxLjkzNi0yLjM0Mi0yLjYgMS4wNC0uOTM3ek0yMi45MSAxOC41OWwtMS4wNC45MzctMi4zNDEtMi42MDEgMS4wNC0uOTM3ek04MS41NzQgOTEuMzI4bC0xLjEzMy44MjMtMi4wNTctMi44MzEgMS4xMzItLjgyM3pNMjYuNjE3IDE1LjY4NGwtMS4xMzMuODIzLTIuMDU3LTIuODMyIDEuMTMyLS44MjN6TTcyLjg3MyA5Ni41MjRsLTEuMjc5LjU3LTEuNDIzLTMuMTk4IDEuMjc4LS41N3pNMzQuODM4IDExLjEwNWwtMS4yNzkuNTctMS40MjMtMy4xOTggMS4yNzktLjU3ek02OC4xNTEgOTguNDA1bC0xLjMzMS40MzItMS4wODItMy4zMjkgMS4zMzItLjQzMnpNMzkuMjU5IDkuNDg1bC0xLjMzMi40MzMtMS4wODEtMy4zMyAxLjMzMS0uNDMyek02My4yNzIgOTkuNzk5bC0xLjM2OS4yOS0uNzI4LTMuNDIyIDEuMzctLjI5MXpNNDMuODMgOC4zMzdsLTEuMzY5LjI5MS0uNzI3LTMuNDIzIDEuMzctLjI5MXpNNTguMjcgMTAwLjY2MmwtMS4zOTMuMTQ2LS4zNjYtMy40OCAxLjM5My0uMTQ3ek00OC40OTQgNy42NzJsLTEuMzkyLjE0Ny0uMzY2LTMuNDgxIDEuMzkyLS4xNDd6XFxcIi8+PC9nPjwvZz48L3N2Zz5cXG5cIiIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmb2N1c2FibGU9XFxcImZhbHNlXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDUgMTA1XFxcIj48cGF0aCBpZD1cXFwibW9kX2Nsb2NrX3N2Z19ob3Vyc1xcXCIgZD1cXFwiTTU1LjcgNjQuNWgtNi40bC42LTQ0aDUuMnpcXFwiLz48L3N2Zz5cXG5cIiIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmb2N1c2FibGU9XFxcImZhbHNlXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDUgMTA1XFxcIj48cGF0aCBkPVxcXCJNNTUuMSw2NC41aC01LjJsMC44LTU4aDMuNkw1NS4xLDY0LjV6XFxcIi8+PC9zdmc+XFxuXCIiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZm9jdXNhYmxlPVxcXCJmYWxzZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTA1IDEwNVxcXCI+PHBhdGggZD1cXFwiTTU3LjgsMjEuM2MwLTIuOS0yLjQtNS4yLTUuMi01LjJzLTUuMywyLjMtNS4zLDUuMmMwLDIuNywyLDQuOCw0LjUsNS4yVjY5aDEuNVYyNi41QzU1LjgsMjYuMiw1Ny44LDI0LDU3LjgsMjEuM3pcXFwiLz48L3N2Zz5cXG5cIiIsImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiVGltZSB9IGZyb20gJy4uL2NvcmUvaW50ZXJmYWNlcy5qcyc7XG5cbmltcG9ydCBjbG9ja0ZhY2VTVkcgZnJvbSAnLi9hc3NldHMvc2JiX2Nsb2NrX2ZhY2Uuc3ZnP3Jhdyc7XG5pbXBvcnQgY2xvY2tIYW5kbGVIb3Vyc1NWRyBmcm9tICcuL2Fzc2V0cy9zYmJfY2xvY2tfaG91cnMuc3ZnP3Jhdyc7XG5pbXBvcnQgY2xvY2tIYW5kbGVNaW51dGVzU1ZHIGZyb20gJy4vYXNzZXRzL3NiYl9jbG9ja19taW51dGVzLnN2Zz9yYXcnO1xuaW1wb3J0IGNsb2NrSGFuZGxlU2Vjb25kc1NWRyBmcm9tICcuL2Fzc2V0cy9zYmJfY2xvY2tfc2Vjb25kcy5zdmc/cmF3JztcbmltcG9ydCBzdHlsZSBmcm9tICcuL2Nsb2NrLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKiBOdW1iZXIgb2YgaG91cnMgb24gdGhlIGNsb2NrIGZhY2UuICovXG5jb25zdCBUT1RBTF9IT1VSU19PTl9DTE9DS19GQUNFID0gMTI7XG5cbi8qKiBOdW1iZXIgb2YgbWludXRlcyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbmNvbnN0IFRPVEFMX01JTlVURVNfT05fQ0xPQ0tfRkFDRSA9IDYwO1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgb24gdGhlIGNsb2NrIGZhY2UuICovXG5jb25zdCBUT1RBTF9TRUNPTkRTX09OX0NMT0NLX0ZBQ0UgPSA2MDtcblxuLyoqIFRpbWVvdXQgZm9yIHRoZSBjbG9jayBzdGFydC4gKi9cbmNvbnN0IElOSVRJQUxfVElNRU9VVF9EVVJBVElPTiA9IDUwO1xuXG4vKiogQW5nbGUgaW4gYSBzaW5nbGUgcm90YXRpb24uICovXG5jb25zdCBGVUxMX0FOR0xFID0gMzYwO1xuXG4vKiogQW5nbGUgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgaG91cnM6IDM2MC8xMiwgbWVhbnMgYSBmdWxsIHJvdGF0aW9uIC8gbnVtYmVyIG9mIGhvdXJzIGluIGEgcm90YXRpb24uICovXG5jb25zdCBIT1VSU19BTkdMRSA9IDMwO1xuXG4vKiogQW5nbGUgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgbWludXRlczogMzYwLzYwLCBtZWFucyBhIGZ1bGwgcm90YXRpb24gLyBudW1iZXIgb2YgbWludXRlcyBpbiBvbmUgaG91ci4gKi9cbmNvbnN0IE1JTlVURVNfQU5HTEUgPSA2O1xuXG4vKiogQW5nbGUgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgc2Vjb25kcyBmb3IgU0JCIGNsb2NrIGN1c3RvbSBiZWhhdmlvci4gKi9cbmNvbnN0IFNCQl9TRUNPTkRTX0FOR0xFID0gMzYwIC8gNTguNTtcblxuLyoqIE51bWJlciBvZiBzZWNvbmRzIGluIGEgbWludXRlLiAqL1xuY29uc3QgU0VDT05EU19JTl9BX01JTlVURSA9IDYwO1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgaW4gYW4gaG91ci4gKi9cbmNvbnN0IFNFQ09ORFNfSU5fQU5fSE9VUiA9IDM2MDA7XG5cbmNvbnN0IEFERF9FVkVOVF9MSVNURU5FUl9PUFRJT05TOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyA9IHtcbiAgb25jZTogdHJ1ZSxcbiAgcGFzc2l2ZTogdHJ1ZSxcbn07XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gYW5hbG9nIGNsb2NrIHdpdGggdGhlIGNsYXNzaWMgU0JCIGZhY2UuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1jbG9jaycpXG5jbGFzcyBTYmJDbG9ja0VsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqXG4gICAqIERlZmluZSBhIHNwZWNpZmljIHRpbWUgd2hpY2ggdGhlIGNsb2NrIHNob3VsZCBzaG93IHN0YXRpY2FsbHkuXG4gICAqIEBwYXJhbSB2YWx1ZSBISDpNTTpzc1xuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIG5vdzogU2JiVGltZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGhvdXIgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfY2xvY2tIYW5kSG91cnMhOiBIVE1MRWxlbWVudDtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBtaW51dGUgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfY2xvY2tIYW5kTWludXRlcyE6IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHNlY29uZCBoYW5kLiAqL1xuICBwcml2YXRlIF9jbG9ja0hhbmRTZWNvbmRzITogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqIEhvdXJzIHZhbHVlIGZvciB0aGUgY3VycmVudCBkYXRlLiAqL1xuICBwcml2YXRlIF9ob3VycyE6IG51bWJlcjtcblxuICAvKiogTWludXRlcyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgZGF0ZS4gKi9cbiAgcHJpdmF0ZSBfbWludXRlcyE6IG51bWJlcjtcblxuICAvKiogU2Vjb25kcyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgZGF0ZS4gKi9cbiAgcHJpdmF0ZSBfc2Vjb25kcyE6IG51bWJlcjtcblxuICAvKiogTW92ZSB0aGUgbWludXRlcyBoYW5kIGV2ZXJ5IG1pbnV0ZS4gKi9cbiAgcHJpdmF0ZSBfaGFuZE1vdmVtZW50PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgaG91cnMgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfbW92ZUhvdXJzSGFuZEZuID0gKCk6IHZvaWQgPT4gdGhpcy5fbW92ZUhvdXJzSGFuZCgpO1xuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgbWludXRlcyBoYW5kLiAqL1xuICBwcml2YXRlIF9tb3ZlTWludXRlc0hhbmRGbiA9ICgpOiB2b2lkID0+IHRoaXMuX21vdmVNaW51dGVzSGFuZCgpO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCFpc1NlcnZlciAmJiBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25vdycpKSB7XG4gICAgICB0aGlzLl9zdGFydE9yQ29uZmlndXJlQ2xvY2soKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IFByb21pc2U8dm9pZD4ge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgdGhpcy5faGFuZGxlUGFnZVZpc2liaWxpdHlDaGFuZ2UsIGZhbHNlKTtcbiAgICAgIGF3YWl0IHRoaXMuX3N0YXJ0T3JDb25maWd1cmVDbG9jaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAnaGlkZGVuJykge1xuICAgICAgYXdhaXQgdGhpcy5fc3RvcENsb2NrKCk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5ub3cpIHtcbiAgICAgIGF3YWl0IHRoaXMuX3N0YXJ0Q2xvY2soKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBhc3luYyBfc3RhcnRPckNvbmZpZ3VyZUNsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm5vdykge1xuICAgICAgYXdhaXQgdGhpcy5fc3RvcENsb2NrKCk7XG4gICAgICB0aGlzLl9yZXNldFNlY29uZHNIYW5kQW5pbWF0aW9uKCk7XG4gICAgICB0aGlzLl9zZXRIYW5kc1N0YXJ0aW5nUG9zaXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5fc3RhcnRDbG9jaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTdGFydHMgdGhlIGNsb2NrIGJ5IGRlZmluaW5nIHRoZSBoYW5kcyBzdGFydGluZyBwb3NpdGlvbiB0aGVuIHN0YXJ0aW5nIHRoZSBhbmltYXRpb25zLiAqL1xuICBwcml2YXRlIGFzeW5jIF9zdGFydENsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2FuaW1hdGlvbmVuZCcsXG4gICAgICB0aGlzLl9tb3ZlSG91cnNIYW5kRm4sXG4gICAgICBBRERfRVZFTlRfTElTVEVORVJfT1BUSU9OUyxcbiAgICApO1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnYW5pbWF0aW9uZW5kJyxcbiAgICAgIHRoaXMuX21vdmVNaW51dGVzSGFuZEZuLFxuICAgICAgQUREX0VWRU5UX0xJU1RFTkVSX09QVElPTlMsXG4gICAgKTtcblxuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3NldEhhbmRzU3RhcnRpbmdQb3NpdGlvbigpO1xuXG4gICAgICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1jbG9jay1hbmltYXRpb24tcGxheS1zdGF0ZScsICdydW5uaW5nJyk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0sIElOSVRJQUxfVElNRU9VVF9EVVJBVElPTiksXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBTdG9wcyB0aGUgY2xvY2sgYnkgcmVtb3ZpbmcgYWxsIHRoZSBhbmltYXRpb25zLiAqL1xuICBwcml2YXRlIGFzeW5jIF9zdG9wQ2xvY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9oYW5kTW92ZW1lbnQpO1xuXG4gICAgdGhpcy5fcmVtb3ZlU2Vjb25kc0FuaW1hdGlvblN0eWxlcygpO1xuICAgIHRoaXMuX3JlbW92ZUhvdXJzQW5pbWF0aW9uU3R5bGVzKCk7XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZUhvdXJzSGFuZEZuKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLl9tb3ZlTWludXRlc0hhbmRGbik7XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRNaW51dGVzPy5jbGFzc0xpc3QuYWRkKCdzYmItY2xvY2tfX2hhbmQtbWludXRlcy0tbm8tdHJhbnNpdGlvbicpO1xuXG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLWNsb2NrLWFuaW1hdGlvbi1wbGF5LXN0YXRlJywgJ3BhdXNlZCcpO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gZm9yIHRoZSB0aHJlZSBoYW5kcyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbiAgcHJpdmF0ZSBfc2V0SGFuZHNTdGFydGluZ1Bvc2l0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2Fzc2lnbkN1cnJlbnRUaW1lKCk7XG4gICAgY29uc3QgcmVtYWluaW5nU2Vjb25kcyA9IFRPVEFMX1NFQ09ORFNfT05fQ0xPQ0tfRkFDRSAtIHRoaXMuX3NlY29uZHM7XG4gICAgY29uc3QgcmVtYWluaW5nTWludXRlcyA9IFRPVEFMX01JTlVURVNfT05fQ0xPQ0tfRkFDRSAtIHRoaXMuX21pbnV0ZXM7XG4gICAgY29uc3QgcmVtYWluaW5nSG91cnMgPSBUT1RBTF9IT1VSU19PTl9DTE9DS19GQUNFIC0gdGhpcy5faG91cnM7XG5cbiAgICBsZXQgaG91cnNBbmltYXRpb25EdXJhdGlvbiA9IDA7XG4gICAgbGV0IGhhc1JlbWFpbmluZ01pbnV0ZXNPclNlY29uZHMgPSAwO1xuXG4gICAgaWYgKHJlbWFpbmluZ1NlY29uZHMgPiAwKSB7XG4gICAgICBob3Vyc0FuaW1hdGlvbkR1cmF0aW9uICs9IHJlbWFpbmluZ1NlY29uZHM7XG4gICAgICBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzID0gMTtcbiAgICB9XG5cbiAgICBpZiAocmVtYWluaW5nTWludXRlcyA+IDApIHtcbiAgICAgIGhvdXJzQW5pbWF0aW9uRHVyYXRpb24gKz1cbiAgICAgICAgKHJlbWFpbmluZ01pbnV0ZXMgLSBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzKSAqIFNFQ09ORFNfSU5fQV9NSU5VVEU7XG4gICAgICBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzID0gMTtcbiAgICB9XG5cbiAgICBpZiAocmVtYWluaW5nSG91cnMgPiAwKSB7XG4gICAgICBob3Vyc0FuaW1hdGlvbkR1cmF0aW9uICs9XG4gICAgICAgIChyZW1haW5pbmdIb3VycyAtIGhhc1JlbWFpbmluZ01pbnV0ZXNPclNlY29uZHMpICogU0VDT05EU19JTl9BTl9IT1VSO1xuICAgIH1cblxuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScsXG4gICAgICBgJHtNYXRoLmNlaWwodGhpcy5faG91cnMgKiBIT1VSU19BTkdMRSArIHRoaXMuX21pbnV0ZXMgLyAyKX1kZWdgLFxuICAgICk7XG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1kdXJhdGlvbicsIGAke2hvdXJzQW5pbWF0aW9uRHVyYXRpb259c2ApO1xuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLXN0YXJ0LWFuZ2xlJyxcbiAgICAgIGAke01hdGguY2VpbCh0aGlzLl9zZWNvbmRzICogU0JCX1NFQ09ORFNfQU5HTEUpfWRlZ2AsXG4gICAgKTtcbiAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1zYmItY2xvY2stc2Vjb25kcy1hbmltYXRpb24tZHVyYXRpb24nLCBgJHtyZW1haW5pbmdTZWNvbmRzfXNgKTtcblxuICAgIHRoaXMuX3NldE1pbnV0ZXNIYW5kKCk7XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5jbGFzc0xpc3QuYWRkKCdzYmItY2xvY2tfX2hhbmQtc2Vjb25kcy0taW5pdGlhbC1taW51dGUnKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8uY2xhc3NMaXN0LmFkZCgnc2JiLWNsb2NrX19oYW5kLWhvdXJzLS1pbml0aWFsLWhvdXInKTtcblxuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWluaXRpYWxpemVkJywgdHJ1ZSk7XG4gIH1cblxuICAvKiogR2l2ZW4gdGhlIGN1cnJlbnQgZGF0ZSwgY2FsY3VsYXRlcyB0aGUgaGgvbW0vc3MgdmFsdWVzIGFuZCB0aGUgaGgvbW0vc3MgbGVmdCB0byB0aGUgbmV4dCBtaWRuaWdodC4gKi9cbiAgcHJpdmF0ZSBfYXNzaWduQ3VycmVudFRpbWUoKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMubm93ID8gbnVsbCA6IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IGRhdGVcbiAgICAgID8gW2RhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCksIGRhdGUuZ2V0U2Vjb25kcygpXVxuICAgICAgOiB0aGlzLm5vdyEuc3BsaXQoJzonKS5tYXAoKHApID0+ICtwKTtcblxuICAgIHRoaXMuX2hvdXJzID0gaG91cnMgJSAxMjtcbiAgICB0aGlzLl9taW51dGVzID0gbWludXRlcztcbiAgICB0aGlzLl9zZWNvbmRzID0gc2Vjb25kcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGZvciB0aGUgbWludXRlcyBoYW5kLiAqL1xuICBwcml2YXRlIF9zZXRNaW51dGVzSGFuZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRNaW51dGVzPy5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgYHJvdGF0ZVooJHtNYXRoLmNlaWwodGhpcy5fbWludXRlcyAqIE1JTlVURVNfQU5HTEUpfWRlZylgLFxuICAgICk7XG4gIH1cblxuICAvKiogTW92ZSB0aGUgaG91cnMgaGFuZCB0byB0aGUgbmV4dCB2YWx1ZS4gKi9cbiAgcHJpdmF0ZSBfbW92ZUhvdXJzSGFuZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZW1vdmVIb3Vyc0FuaW1hdGlvblN0eWxlcygpO1xuXG4gICAgbGV0IGhvdXJzQW5nbGUgPSBNYXRoLmNlaWwodGhpcy5faG91cnMgKiBIT1VSU19BTkdMRSArIHRoaXMuX21pbnV0ZXMgLyAyKTtcblxuICAgIGlmIChob3Vyc0FuZ2xlID49IEZVTExfQU5HTEUpIHtcbiAgICAgIGhvdXJzQW5nbGUgLT0gRlVMTF9BTkdMRTtcbiAgICB9XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8uc3R5bGUuc2V0UHJvcGVydHkoJ3RyYW5zZm9ybScsIGByb3RhdGVaKCR7aG91cnNBbmdsZX1kZWcpYCk7XG4gIH1cblxuICAvKiogTW92ZSB0aGUgbWludXRlcyBoYW5kIHRvIHRoZSBuZXh0IHZhbHVlLiAqL1xuICBwcml2YXRlIF9tb3ZlTWludXRlc0hhbmQoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4pO1xuXG4gICAgdGhpcy5fcmVtb3ZlU2Vjb25kc0FuaW1hdGlvblN0eWxlcygpO1xuXG4gICAgdGhpcy5fYWRkTWludXRlc0FuZFNldEhhbmRzKCk7XG5cbiAgICB0aGlzLl9oYW5kTW92ZW1lbnQgPSBzZXRJbnRlcnZhbChcbiAgICAgICgpID0+IHRoaXMuX2FkZE1pbnV0ZXNBbmRTZXRIYW5kcygpLFxuICAgICAgVE9UQUxfU0VDT05EU19PTl9DTE9DS19GQUNFICogMTAwMCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkTWludXRlc0FuZFNldEhhbmRzKCk6IHZvaWQge1xuICAgIHRoaXMuX21pbnV0ZXMrKztcbiAgICB0aGlzLl9zZXRNaW51dGVzSGFuZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92aW5nIGFuaW1hdGlvbiBieSBvdmVycmlkaW5nIHdpdGggZW1wdHkgc3RyaW5nLFxuICAgKiB0aGVuIHRyaWdnZXJpbmcgYSByZWZsb3cgYW5kIHJlIGFkZCBvcmlnaW5hbCBhbmltYXRpb24gYnkgcmVtb3Zpbmcgb3ZlcnJpZGUuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9yZXNldFNlY29uZHNIYW5kQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY2xvY2tIYW5kU2Vjb25kcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzLnN0eWxlLmFuaW1hdGlvbiA9ICcnO1xuICAgIC8vIEhhY2sgdG8gdHJpZ2dlciByZWZsb3dcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC1leHByZXNzaW9uc1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMub2Zmc2V0SGVpZ2h0O1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2FuaW1hdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgZG9jdW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCB0aGlzLl9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSk7XG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVIb3Vyc0hhbmRGbik7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4pO1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faGFuZE1vdmVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZUhvdXJzQW5pbWF0aW9uU3R5bGVzKCk6IHZvaWQge1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5jbGFzc0xpc3QucmVtb3ZlKCdzYmItY2xvY2tfX2hhbmQtaG91cnMtLWluaXRpYWwtaG91cicpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlU2Vjb25kc0FuaW1hdGlvblN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5jbGFzc0xpc3QucmVtb3ZlKCdzYmItY2xvY2tfX2hhbmQtc2Vjb25kcy0taW5pdGlhbC1taW51dGUnKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRNaW51dGVzPy5jbGFzc0xpc3QucmVtb3ZlKCdzYmItY2xvY2tfX2hhbmQtbWludXRlcy0tbm8tdHJhbnNpdGlvbicpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLXN0YXJ0LWFuZ2xlJyk7XG4gICAgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYmItY2xvY2stc2Vjb25kcy1hbmltYXRpb24tZHVyYXRpb24nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1jbG9ja1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1jbG9ja19fZmFjZVwiIC5pbm5lckhUTUw9JHtjbG9ja0ZhY2VTVkd9Pjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1jbG9ja19faGFuZC1ob3Vyc1wiXG4gICAgICAgICAgLmlubmVySFRNTD0ke2Nsb2NrSGFuZGxlSG91cnNTVkd9XG4gICAgICAgICAgJHtyZWYoKGU/OiBFbGVtZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jbG9ja0hhbmRIb3VycyA9IGUgYXMgSFRNTFNwYW5FbGVtZW50O1xuICAgICAgICAgIH0pfVxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwic2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMgc2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMtLW5vLXRyYW5zaXRpb25cIlxuICAgICAgICAgIC5pbm5lckhUTUw9JHtjbG9ja0hhbmRsZU1pbnV0ZXNTVkd9XG4gICAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcyA9IGVsIGFzIEhUTUxTcGFuRWxlbWVudDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1jbG9ja19faGFuZC1zZWNvbmRzXCJcbiAgICAgICAgICAuaW5uZXJIVE1MPSR7Y2xvY2tIYW5kbGVTZWNvbmRzU1ZHfVxuICAgICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMgPSBlbCBhcyBIVE1MU3BhbkVsZW1lbnQ7XG4gICAgICAgICAgfSl9XG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItY2xvY2snOiBTYmJDbG9ja0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxNQUFlLGVBQUE7QUNBZixNQUFlLHNCQUFBO0FDQWYsTUFBZSx3QkFBQTtBQ0FmLE1BQWUsd0JBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNjZixNQUFNLDRCQUE0QjtBQUdsQyxNQUFNLDhCQUE4QjtBQUdwQyxNQUFNLDhCQUE4QjtBQUdwQyxNQUFNLDJCQUEyQjtBQUdqQyxNQUFNLGFBQWE7QUFHbkIsTUFBTSxjQUFjO0FBR3BCLE1BQU0sZ0JBQWdCO0FBR3RCLE1BQU0sb0JBQW9CLE1BQU07QUFHaEMsTUFBTSxzQkFBc0I7QUFHNUIsTUFBTSxxQkFBcUI7QUFFM0IsTUFBTSw2QkFBc0Q7QUFBQSxFQUMxRCxNQUFNO0FBQUEsRUFDTixTQUFTOztJQVFMLG1CQUFlLE1BQUE7OzBCQURwQixjQUFjLFdBQVcsQ0FBQzs7OztvQkFDRzs7OztBQUFSLEVBQUEsbUJBQVEsWUFBVTtBQUFBOztBQU8xQjtBQUFnQix5QkFBQSx1QkFBQSxrQkFBQSxNQUFBLG1CQUFzQixJQUFJO0FBRzlDLFdBQUEsa0JBQThCLGtCQUFBLE1BQUEsc0JBQUE7QUFxQmQsV0FBQSxtQkFBRyxNQUFZLEtBQUs7QUFHbEIsV0FBQSxxQkFBRyxNQUFZLEtBQUs7QUF3QnRDLFdBQTJCLDhCQUFHLFlBQTBCO0FBQzFELFlBQUEsU0FBUyxvQkFBb0IsVUFBVTtBQUN6QyxnQkFBTSxLQUFLLFdBQVU7QUFBQSxRQUFBLFdBQ1osQ0FBQyxLQUFLLEtBQUs7QUFDcEIsZ0JBQU0sS0FBSyxZQUFXO0FBQUEsUUFBQTtBQUFBLE1BRTFCO0FBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUF6RFksSUFBZ0IsTUFBMkI7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQTNDLElBQWdCLElBQTJCLE9BQUE7QUFBQSx5QkFBQSx1QkFBQTtBQUFBLElBQUE7QUFBQSxJQTZCcEMsV0FBVyxtQkFBdUM7QUFDbkUsWUFBTSxXQUFXLGlCQUFpQjtBQUVsQyxVQUFJLENBQUMsWUFBWSxrQkFBa0IsSUFBSSxLQUFLLEdBQUc7QUFDN0MsYUFBSyx1QkFBc0I7QUFBQSxNQUFBO0FBQUEsSUFDN0I7QUFBQSxJQUdpQixNQUFNLGFBQWEsbUJBQXVDO0FBQzNFLFlBQU0sYUFBYSxpQkFBaUI7QUFFcEMsVUFBSSxDQUFDLFVBQVU7QUFDYixpQkFBUyxpQkFBaUIsb0JBQW9CLEtBQUssNkJBQTZCLEtBQUs7QUFDckYsY0FBTSxLQUFLLHVCQUFzQjtBQUFBLE1BQUE7QUFBQSxJQUNuQztBQUFBLElBR2MsdUJBQW9CO0FBQ2xDLFlBQU0scUJBQW9CO0FBQzFCLFdBQUssc0JBQXFCO0FBQUEsSUFBQTtBQUFBLElBV3BCLE1BQU0seUJBQXNCO0FBQ2xDLFVBQUksS0FBSyxLQUFLO0FBQ1osY0FBTSxLQUFLLFdBQVU7QUFDckIsYUFBSywyQkFBMEI7QUFDL0IsYUFBSywwQkFBeUI7QUFBQSxNQUFBLE9BQ3pCO0FBQ0wsY0FBTSxLQUFLLFlBQVc7QUFBQSxNQUFBO0FBQUEsSUFDeEI7QUFBQTtBQUFBLElBSU0sTUFBTSxjQUFXOztBQUN2QixPQUFBQSxNQUFBLEtBQUssb0JBQUwsZ0JBQUFBLElBQXNCLGlCQUNwQixnQkFDQSxLQUFLLGtCQUNMO0FBRUYsaUJBQUssc0JBQUwsbUJBQXdCLGlCQUN0QixnQkFDQSxLQUFLLG9CQUNMO0FBR0YsWUFBTSxJQUFJLFFBQWMsQ0FBQyxZQUN2QixXQUFXLE1BQUs7O0FBQ2QsYUFBSywwQkFBeUI7QUFFekIsU0FBQUEsTUFBQSxLQUFBLFVBQUEsZ0JBQUFBLElBQU8sWUFBWSxvQ0FBb0M7O01BRTlELEdBQUcsd0JBQXdCLENBQUM7QUFBQSxJQUFBO0FBQUE7QUFBQSxJQUt4QixNQUFNLGFBQVU7O0FBQ3RCLG9CQUFjLEtBQUssYUFBYTtBQUVoQyxXQUFLLDhCQUE2QjtBQUNsQyxXQUFLLDRCQUEyQjtBQUVoQyxPQUFBQSxNQUFBLEtBQUssb0JBQUwsZ0JBQUFBLElBQXNCLG9CQUFvQixnQkFBZ0IsS0FBSztBQUMvRCxpQkFBSyxzQkFBTCxtQkFBd0Isb0JBQW9CLGdCQUFnQixLQUFLO0FBRTVELGlCQUFBLHNCQUFBLG1CQUFtQixVQUFVLElBQUk7QUFFakMsaUJBQUEsVUFBQSxtQkFBTyxZQUFZLG9DQUFvQztBQUFBLElBQVE7QUFBQTtBQUFBLElBSTlELDRCQUF5Qjs7QUFDL0IsV0FBSyxtQkFBa0I7QUFDakIsWUFBQSxtQkFBbUIsOEJBQThCLEtBQUs7QUFDdEQsWUFBQSxtQkFBbUIsOEJBQThCLEtBQUs7QUFDdEQsWUFBQSxpQkFBaUIsNEJBQTRCLEtBQUs7QUFFeEQsVUFBSSx5QkFBeUI7QUFDN0IsVUFBSSwrQkFBK0I7QUFFbkMsVUFBSSxtQkFBbUIsR0FBRztBQUNFLGtDQUFBO0FBQ0ssdUNBQUE7QUFBQSxNQUFBO0FBR2pDLFVBQUksbUJBQW1CLEdBQUc7QUFDeEIsbUNBQ0csbUJBQW1CLGdDQUFnQztBQUN2Qix1Q0FBQTtBQUFBLE1BQUE7QUFHakMsVUFBSSxpQkFBaUIsR0FBRztBQUN0QixtQ0FDRyxpQkFBaUIsZ0NBQWdDO0FBQUEsTUFBQTtBQUd0RCxPQUFBQSxNQUFBLEtBQUssVUFBTCxnQkFBQUEsSUFBWSxZQUNWLDJDQUNBLEdBQUcsS0FBSyxLQUFLLEtBQUssU0FBUyxjQUFjLEtBQUssV0FBVyxDQUFDLENBQUM7QUFFN0QsaUJBQUssVUFBTCxtQkFBWSxZQUFZLHdDQUF3QyxHQUFHLHNCQUFzQjtBQUNwRixpQkFBQSxVQUFBLG1CQUFPLFlBQ1YsNkNBQ0EsR0FBRyxLQUFLLEtBQUssS0FBSyxXQUFXLGlCQUFpQixDQUFDO0FBRWpELGlCQUFLLFVBQUwsbUJBQVksWUFBWSwwQ0FBMEMsR0FBRyxnQkFBZ0I7QUFFckYsV0FBSyxnQkFBZTtBQUVmLGlCQUFBLHNCQUFBLG1CQUFtQixVQUFVLElBQUk7QUFDakMsaUJBQUEsb0JBQUEsbUJBQWlCLFVBQVUsSUFBSTtBQUUvQixXQUFBLGdCQUFnQixvQkFBb0IsSUFBSTtBQUFBLElBQUE7QUFBQTtBQUFBLElBSXZDLHFCQUFrQjtBQUN4QixZQUFNLE9BQU8sS0FBSyxNQUFNLDJCQUFXO0FBQzdCLFlBQUEsQ0FBQyxPQUFPLFNBQVMsT0FBTyxJQUFJLE9BQzlCLENBQUMsS0FBSyxTQUFBLEdBQVksS0FBSyxjQUFjLEtBQUssWUFBWSxJQUN0RCxLQUFLLElBQUssTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXRDLFdBQUssU0FBUyxRQUFRO0FBQ3RCLFdBQUssV0FBVztBQUNoQixXQUFLLFdBQVc7QUFBQSxJQUFBO0FBQUE7QUFBQSxJQUlWLGtCQUFlOztBQUNoQixPQUFBQSxNQUFBLEtBQUEsc0JBQUEsZ0JBQUFBLElBQW1CLE1BQU0sWUFDNUIsYUFDQSxXQUFXLEtBQUssS0FBSyxLQUFLLFdBQVcsYUFBYSxDQUFDO0FBQUEsSUFBTTtBQUFBO0FBQUEsSUFLckQsaUJBQWM7O0FBQ3BCLFdBQUssNEJBQTJCO0FBRTVCLFVBQUEsYUFBYSxLQUFLLEtBQUssS0FBSyxTQUFTLGNBQWMsS0FBSyxXQUFXLENBQUM7QUFFeEUsVUFBSSxjQUFjLFlBQVk7QUFDZCxzQkFBQTtBQUFBLE1BQUE7QUFHaEIsT0FBQUEsTUFBQSxLQUFLLG9CQUFMLGdCQUFBQSxJQUFzQixNQUFNLFlBQVksYUFBYSxXQUFXLFVBQVU7QUFBQSxJQUFNO0FBQUE7QUFBQSxJQUkxRSxtQkFBZ0I7O0FBQ3RCLE9BQUFBLE1BQUEsS0FBSyxzQkFBTCxnQkFBQUEsSUFBd0Isb0JBQW9CLGdCQUFnQixLQUFLO0FBRWpFLFdBQUssOEJBQTZCO0FBRWxDLFdBQUssdUJBQXNCO0FBRTNCLFdBQUssZ0JBQWdCLFlBQ25CLE1BQU0sS0FBSyx1QkFBd0IsR0FDbkMsOEJBQThCLEdBQUk7QUFBQSxJQUFBO0FBQUEsSUFJOUIseUJBQXNCO0FBQ3ZCLFdBQUE7QUFDTCxXQUFLLGdCQUFlO0FBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQVFkLDZCQUEwQjtBQUM1QixVQUFBLENBQUMsS0FBSyxtQkFBbUI7QUFDM0I7QUFBQSxNQUFBO0FBRUcsV0FBQSxrQkFBa0IsTUFBTSxZQUFZO0FBR3pDLFdBQUssa0JBQWtCO0FBQ2xCLFdBQUEsa0JBQWtCLE1BQU0sZUFBZSxXQUFXO0FBQUEsSUFBQTtBQUFBLElBR2pELHdCQUFxQjs7QUFDakIsMkNBQUEsb0JBQW9CLG9CQUFvQixLQUFLO0FBQ3ZELE9BQUFBLE1BQUEsS0FBSyxvQkFBTCxnQkFBQUEsSUFBc0Isb0JBQW9CLGdCQUFnQixLQUFLO0FBQy9ELGlCQUFLLHNCQUFMLG1CQUF3QixvQkFBb0IsZ0JBQWdCLEtBQUs7QUFDakUsb0JBQWMsS0FBSyxhQUFhO0FBQUEsSUFBQTtBQUFBLElBRzFCLDhCQUEyQjs7QUFDNUIsT0FBQUEsTUFBQSxLQUFBLG9CQUFBLGdCQUFBQSxJQUFpQixVQUFVLE9BQU87QUFDbEMsV0FBQSxNQUFNLGVBQWUseUNBQXlDO0FBQzlELFdBQUEsTUFBTSxlQUFlLHNDQUFzQztBQUFBLElBQUE7QUFBQSxJQUcxRCxnQ0FBNkI7O0FBQzlCLE9BQUFBLE1BQUEsS0FBQSxzQkFBQSxnQkFBQUEsSUFBbUIsVUFBVSxPQUFPO0FBQ3BDLGlCQUFBLHNCQUFBLG1CQUFtQixVQUFVLE9BQU87QUFDcEMsV0FBQSxNQUFNLGVBQWUsMkNBQTJDO0FBQ2hFLFdBQUEsTUFBTSxlQUFlLHdDQUF3QztBQUFBLElBQUE7QUFBQSxJQUdqRCxTQUFNO0FBQ2hCLGFBQUE7QUFBQTtBQUFBLG1EQUV3QyxZQUFZO0FBQUE7QUFBQTtBQUFBLHVCQUd4QyxtQkFBbUI7QUFBQSxZQUM5QixJQUFJLENBQUMsTUFBcUI7QUFDMUIsYUFBSyxrQkFBa0I7QUFBQSxNQUFBLENBQ3hCLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFJVyxxQkFBcUI7QUFBQSxZQUNoQyxJQUFJLENBQUMsT0FBc0I7QUFDM0IsYUFBSyxvQkFBb0I7QUFBQSxNQUFBLENBQzFCLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFJVyxxQkFBcUI7QUFBQSxZQUNoQyxJQUFJLENBQUMsT0FBc0I7QUFDM0IsYUFBSyxvQkFBb0I7QUFBQSxNQUFBLENBQzFCLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBO0FBQUEsS0F2UUU7O0FBQVgsc0JBQUEsQ0FBQSxVQUFVO0FBQWlCLGlCQUFBLElBQUEsTUFBQSxpQkFBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLE9BQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsU0FBQSxLQUFBLEtBQUEsQ0FBQSxRQUFBLElBQUEsS0FBQSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBQSxNQUEyQjtBQUFBLFNBQUEsVUFBQSxhQUFBLG1CQUFBLHNCQUFBO0FBUHpELGlCQW1SQyxNQUFBLG1CQUFBLEVBQUEsT0FBQSxXQUFBLEdBQUEsa0JBQUEsRUFBQSxNQUFBLFNBQUEsTUFBQSxXQUFBLE1BQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSx1QkFBQTs7O1FBbFJ3QixHQUFNLFNBQW1CLE9BRDVDLGtCQUFlLFlBQUEsdUJBQUEsR0FBQzs7OyJ9
@@ -1,8 +1,13 @@
1
1
  import { CSSResultGroup, LitElement, PropertyValues, TemplateResult } from 'lit';
2
+ declare const SbbStickyBarElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbUpdateSchedulerMixinType> & typeof LitElement;
2
3
  /**
3
4
  * A container that sticks to the bottom of the page if slotted into `sbb-container`.
4
5
  *
5
6
  * @slot - Use the unnamed slot to add content to the sticky bar.
7
+ * @event {CustomEvent<void>} willStick - Emits when the animation from normal content flow to `position: sticky` starts. Can be canceled.
8
+ * @event {CustomEvent<void>} didStick - Emits when the animation from normal content flow to `position: sticky` ends.
9
+ * @event {CustomEvent<void>} willUnstick - Emits when the animation from `position: sticky` to normal content flow starts. Can be canceled.
10
+ * @event {CustomEvent<void>} didUnstick - Emits when the animation from `position: sticky` to normal content flow ends.
6
11
  * @cssprop [--sbb-sticky-bar-padding-block=var(--sbb-spacing-responsive-xs)] - Block padding of the sticky bar.
7
12
  * @cssprop [--sbb-sticky-bar-bottom-overlapping-height=0px] - Define an additional area where
8
13
  * the sticky bar overlaps the following content on the bottom.
@@ -10,15 +15,36 @@ import { CSSResultGroup, LitElement, PropertyValues, TemplateResult } from 'lit'
10
15
  * @cssprop [--sbb-sticky-bar-z-index] - To specify a custom stack order,
11
16
  * the `z-index` can be overridden by defining this CSS variable.
12
17
  */
13
- export declare class SbbStickyBarElement extends LitElement {
18
+ export declare class SbbStickyBarElement extends SbbStickyBarElement_base {
14
19
  static styles: CSSResultGroup;
20
+ static readonly events: {
21
+ readonly willStick: "willStick";
22
+ readonly didStick: "didStick";
23
+ readonly willUnstick: "willUnstick";
24
+ readonly didUnstick: "didUnstick";
25
+ };
15
26
  /** Color of the container, like transparent, white etc. */
16
27
  accessor color: 'white' | 'milk' | null;
28
+ /** The state of the component. */
29
+ private set _state(value);
30
+ private get _state();
31
+ private _willStick;
32
+ private _didStick;
33
+ private _willUnstick;
34
+ private _didUnstick;
17
35
  private _intersector?;
18
36
  private _observer;
19
37
  connectedCallback(): void;
38
+ disconnectedCallback(): void;
20
39
  protected firstUpdated(changedProperties: PropertyValues<this>): void;
21
- private _toggleShadowVisibility;
40
+ private _detectStickyState;
41
+ /** Animates from normal content flow position to `position: sticky`. */
42
+ stick(): void;
43
+ /** Animates `position: sticky` to normal content flow position. */
44
+ unstick(): void;
45
+ private _stickyCallback;
46
+ private _unstickyCallback;
47
+ private _onAnimationEnd;
22
48
  protected render(): TemplateResult;
23
49
  }
24
50
  declare global {
@@ -26,4 +52,5 @@ declare global {
26
52
  'sbb-sticky-bar': SbbStickyBarElement;
27
53
  }
28
54
  }
55
+ export {};
29
56
  //# sourceMappingURL=sticky-bar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sticky-bar.d.ts","sourceRoot":"","sources":["../../../../../src/elements/container/sticky-bar/sticky-bar.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EAEnB,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAOb;;;;;;;;;;GAUG;AACH,qBAKM,mBAAoB,SAAQ,UAAU;IAC1C,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,2DAA2D;IAC3D,SAA6C,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAQ;IAEnF,OAAO,CAAC,YAAY,CAAC,CAAkB;IACvC,OAAO,CAAC,SAAS,CAKd;IAEa,iBAAiB,IAAI,IAAI;cAYtB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAU9E,OAAO,CAAC,uBAAuB;cAOZ,MAAM,IAAI,cAAc;CAU5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,gBAAgB,EAAE,mBAAmB,CAAC;KACvC;CACF"}
1
+ {"version":3,"file":"sticky-bar.d.ts","sourceRoot":"","sources":["../../../../../src/elements/container/sticky-bar/sticky-bar.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EAEnB,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;;AAWb;;;;;;;;;;;;;;GAcG;AACH,qBAKM,mBAAoB,SAAQ,wBAAmC;IACnE,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,gBAAuB,MAAM;;;;;MAKlB;IAEX,2DAA2D;IAC3D,SAA6C,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAQ;IAEnF,kCAAkC;IAClC,OAAO,KAAK,MAAM,QAEjB;IACD,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,CAAC,UAAU,CAA8E;IAChG,OAAO,CAAC,SAAS,CAA6E;IAC9F,OAAO,CAAC,YAAY,CAGlB;IACF,OAAO,CAAC,WAAW,CAA+E;IAElG,OAAO,CAAC,YAAY,CAAC,CAAkB;IACvC,OAAO,CAAC,SAAS,CAKd;IAEa,iBAAiB,IAAI,IAAI;IAgBzB,oBAAoB,IAAI,IAAI;cAMzB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAU9E,OAAO,CAAC,kBAAkB;IA+B1B,wEAAwE;IACjE,KAAK,IAAI,IAAI;IAWpB,mEAAmE;IAC5D,OAAO,IAAI,IAAI;IAYtB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,eAAe;cAWJ,MAAM,IAAI,cAAc;CAU5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,gBAAgB,EAAE,mBAAmB,CAAC;KACvC;CACF"}
@@ -7,9 +7,11 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
7
7
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
8
  import { __runInitializers, __esDecorate } from "tslib";
9
9
  import { IntersectionController } from "@lit-labs/observers/intersection-controller.js";
10
- import { css, html, LitElement } from "lit";
10
+ import { css, LitElement, html } from "lit";
11
11
  import { customElement, property } from "lit/decorators.js";
12
12
  import { hostAttributes } from "../core/decorators.js";
13
+ import { EventEmitter } from "../core/eventing.js";
14
+ import { SbbUpdateSchedulerMixin } from "../core/mixins.js";
13
15
  const style = css`*,
14
16
  ::before,
15
17
  ::after {
@@ -17,7 +19,10 @@ const style = css`*,
17
19
  }
18
20
 
19
21
  :host {
22
+ --sbb-sticky-bar-position: sticky;
20
23
  --sbb-sticky-bar-padding-block: var(--sbb-spacing-responsive-xs);
24
+ --sbb-sticky-bar-border-radius: var(--sbb-border-radius-8x);
25
+ --sbb-sticky-bar-animation-easing: var(--sbb-animation-easing);
21
26
  --sbb-sticky-bar-fade-in-animation-duration: var(
22
27
  --sbb-disable-animation-zero-time,
23
28
  var(--sbb-animation-duration-5x)
@@ -26,31 +31,71 @@ const style = css`*,
26
31
  --sbb-disable-animation-zero-time,
27
32
  var(--sbb-animation-duration-2x)
28
33
  );
29
- --sbb-sticky-bar-animation-easing: var(--sbb-animation-easing);
30
- --sbb-sticky-bar-border-radius: var(--sbb-border-radius-8x);
34
+ --sbb-sticky-bar-slide-vertically-animation-duration: var(
35
+ --sbb-disable-animation-zero-duration,
36
+ var(--sbb-animation-duration-4x)
37
+ );
38
+ --sbb-sticky-bar-slide-vertically-animation-easing: ease-out;
39
+ --sbb-sticky-bar-slide-vertically-animation-delay: 0s;
40
+ --sbb-sticky-bar-slide-vertically-animation-name: unset;
41
+ --_sbb-sticky-bar-background-animation-duration: var(
42
+ --sbb-sticky-bar-fade-out-animation-duration
43
+ );
44
+ --_sbb-sticky-bar-intersector-background-color: transparent;
45
+ --_sbb-sticky-bar-forced-colors-border: none;
31
46
  display: contents;
32
47
  }
33
48
 
34
- :host([data-sticking]) {
49
+ :host([data-sticking]:not([data-state=unsticky])) {
35
50
  --sbb-sticky-bar-sticky-background-color: var(
36
51
  --sbb-container-background-color,
37
52
  var(--sbb-color-white)
38
53
  );
54
+ --_sbb-sticky-bar-intersector-background-color: var(--sbb-sticky-bar-sticky-background-color);
55
+ --_sbb-sticky-bar-background-animation-duration: var(--sbb-sticky-bar-fade-in-animation-duration);
56
+ }
57
+ @media (forced-colors: active) {
58
+ :host([data-sticking]:not([data-state=unsticky])) {
59
+ --_sbb-sticky-bar-forced-colors-border: var(--sbb-border-width-1x) solid CanvasText;
60
+ }
39
61
  }
40
62
 
41
- :host([data-sticking][color=white]) {
63
+ :host([data-sticking]:not([data-state=unsticky])[color=white]) {
42
64
  --sbb-sticky-bar-sticky-background-color: var(--sbb-color-white);
43
65
  }
44
66
 
45
- :host([data-sticking][color=milk]) {
67
+ :host([data-sticking]:not([data-state=unsticky])[color=milk]) {
46
68
  --sbb-sticky-bar-sticky-background-color: var(--sbb-color-milk);
47
69
  }
48
70
 
71
+ :host(:is([data-sticking]:is([data-slide-vertically], [data-state=sticking], [data-state=unsticking]),
72
+ [data-state=unsticky])) {
73
+ --_sbb-sticky-bar-background-animation-duration: 0s;
74
+ }
75
+
76
+ :host([data-sticking]:is([data-slide-vertically]:not([data-state=unsticky], [data-state=unsticking]),
77
+ [data-state=sticking])) {
78
+ --sbb-sticky-bar-slide-vertically-animation-name: slide-in;
79
+ }
80
+
81
+ :host([data-sticking][data-state=unsticking]) {
82
+ --sbb-sticky-bar-slide-vertically-animation-name: slide-out;
83
+ }
84
+
85
+ :host(:is(:not([data-initialized]), [data-state=unsticky])) {
86
+ --sbb-sticky-bar-position: relative;
87
+ }
88
+
49
89
  .sbb-sticky-bar__wrapper {
50
- position: sticky;
90
+ position: var(--sbb-sticky-bar-position);
51
91
  inset-block-end: 0;
52
92
  display: block;
53
93
  z-index: var(--sbb-sticky-bar-z-index);
94
+ animation-name: var(--sbb-sticky-bar-slide-vertically-animation-name);
95
+ animation-duration: var(--sbb-sticky-bar-slide-vertically-animation-duration);
96
+ animation-timing-function: var(--sbb-sticky-bar-slide-vertically-animation-easing);
97
+ animation-delay: var(--sbb-sticky-bar-slide-vertically-animation-delay);
98
+ animation-fill-mode: backwards;
54
99
  }
55
100
  .sbb-sticky-bar__wrapper::after, .sbb-sticky-bar__wrapper::before {
56
101
  content: "";
@@ -75,18 +120,10 @@ const style = css`*,
75
120
  }
76
121
  .sbb-sticky-bar__wrapper::after {
77
122
  background-color: var(--sbb-sticky-bar-sticky-background-color, transparent);
78
- transition: background-color var(--sbb-sticky-bar-fade-out-animation-duration) var(--sbb-sticky-bar-animation-easing);
79
123
  border-start-start-radius: var(--sbb-sticky-bar-border-radius);
80
124
  border-start-end-radius: var(--sbb-sticky-bar-border-radius);
81
- }
82
- :host([data-sticking]) .sbb-sticky-bar__wrapper::after {
83
- transition-duration: var(--sbb-sticky-bar-fade-in-animation-duration);
84
- }
85
- @media (forced-colors: active) {
86
- :host([data-sticking]) .sbb-sticky-bar__wrapper::after {
87
- border-block-start: var(--sbb-border-width-1x) solid CanvasText;
88
- border-radius: 0;
89
- }
125
+ transition: background-color var(--_sbb-sticky-bar-background-animation-duration) var(--sbb-sticky-bar-animation-easing);
126
+ border: var(--_sbb-sticky-bar-forced-colors-border);
90
127
  }
91
128
 
92
129
  .sbb-sticky-bar {
@@ -101,12 +138,11 @@ const style = css`*,
101
138
  z-index: -1;
102
139
  border-start-start-radius: var(--sbb-sticky-bar-border-radius);
103
140
  border-start-end-radius: var(--sbb-sticky-bar-border-radius);
104
- transition: box-shadow var(--sbb-sticky-bar-fade-out-animation-duration) var(--sbb-sticky-bar-animation-easing);
141
+ transition: box-shadow var(--_sbb-sticky-bar-background-animation-duration) var(--sbb-sticky-bar-animation-easing);
105
142
  clip-path: polygon(-50% calc(-1 * var(--sbb-shadow-elevation-level-11-shadow-1-blur)), 150% calc(-1 * var(--sbb-shadow-elevation-level-11-shadow-1-blur)), 150% 50%, -50% 50%);
106
143
  }
107
- :host([data-sticking]) .sbb-sticky-bar::before {
144
+ :host([data-sticking]:not([data-state=unsticky])) .sbb-sticky-bar::before {
108
145
  box-shadow: var(--sbb-shadow-elevation-level-11-shadow-2-offset-x) var(--sbb-shadow-elevation-level-11-shadow-2-offset-y) var(--sbb-shadow-elevation-level-11-shadow-2-blur) var(--sbb-shadow-elevation-level-11-shadow-2-spread) var(--sbb-shadow-elevation-level-11-soft-2-color), var(--sbb-shadow-elevation-level-11-shadow-1-offset-x) var(--sbb-shadow-elevation-level-11-shadow-1-offset-y) var(--sbb-shadow-elevation-level-11-shadow-1-blur) var(--sbb-shadow-elevation-level-11-shadow-1-spread) var(--sbb-shadow-elevation-level-11-soft-1-color);
109
- transition-duration: var(--sbb-sticky-bar-fade-in-animation-duration);
110
146
  }
111
147
  :host(:not([data-expanded])) .sbb-sticky-bar {
112
148
  padding-inline: var(--sbb-layout-base-offset-responsive);
@@ -131,13 +167,26 @@ const style = css`*,
131
167
  position: absolute;
132
168
  width: 100%;
133
169
  height: calc(var(--sbb-sticky-bar-bottom-overlapping-height, 0) + 1px);
134
- background-color: transparent;
170
+ background-color: var(--_sbb-sticky-bar-intersector-background-color);
135
171
  pointer-events: none;
136
- transition: background-color var(--sbb-sticky-bar-fade-out-animation-duration) var(--sbb-sticky-bar-animation-easing);
172
+ transition: background-color var(--_sbb-sticky-bar-background-animation-duration) var(--sbb-sticky-bar-animation-easing);
173
+ }
174
+
175
+ @keyframes slide-in {
176
+ from {
177
+ transform: translateY(100%);
178
+ }
179
+ to {
180
+ transform: translateY(0%);
181
+ }
137
182
  }
138
- :host([data-sticking]) .sbb-sticky-bar__intersector::after {
139
- transition-duration: var(--sbb-sticky-bar-fade-in-animation-duration);
140
- background-color: var(--sbb-sticky-bar-sticky-background-color);
183
+ @keyframes slide-out {
184
+ from {
185
+ transform: translateY(0%);
186
+ }
187
+ to {
188
+ transform: translateY(100%);
189
+ }
141
190
  }`;
142
191
  let SbbStickyBarElement = (() => {
143
192
  var _color_accessor_storage, _a;
@@ -147,21 +196,24 @@ let SbbStickyBarElement = (() => {
147
196
  let _classDescriptor;
148
197
  let _classExtraInitializers = [];
149
198
  let _classThis;
150
- let _classSuper = LitElement;
199
+ let _classSuper = SbbUpdateSchedulerMixin(LitElement);
151
200
  let _color_decorators;
152
201
  let _color_initializers = [];
153
202
  let _color_extraInitializers = [];
154
- _a = class extends _classSuper {
203
+ var SbbStickyBarElement2 = (_a = class extends _classSuper {
155
204
  constructor() {
156
205
  super(...arguments);
157
206
  __privateAdd(this, _color_accessor_storage);
158
207
  __privateSet(this, _color_accessor_storage, __runInitializers(this, _color_initializers, null));
159
- this._intersector = __runInitializers(this, _color_extraInitializers);
208
+ this._willStick = (__runInitializers(this, _color_extraInitializers), new EventEmitter(this, SbbStickyBarElement2.events.willStick));
209
+ this._didStick = new EventEmitter(this, SbbStickyBarElement2.events.didStick);
210
+ this._willUnstick = new EventEmitter(this, SbbStickyBarElement2.events.willUnstick);
211
+ this._didUnstick = new EventEmitter(this, SbbStickyBarElement2.events.didUnstick);
160
212
  this._observer = new IntersectionController(this, {
161
213
  // Although `this` is observed, we have to postpone observing
162
214
  // into firstUpdated() to achieve a correct initial state.
163
215
  target: null,
164
- callback: (entries) => this._toggleShadowVisibility(entries[0])
216
+ callback: (entries) => this._detectStickyState(entries[0])
165
217
  });
166
218
  }
167
219
  /** Color of the container, like transparent, white etc. */
@@ -171,8 +223,17 @@ let SbbStickyBarElement = (() => {
171
223
  set color(value) {
172
224
  __privateSet(this, _color_accessor_storage, value);
173
225
  }
226
+ /** The state of the component. */
227
+ set _state(state) {
228
+ this.setAttribute("data-state", state);
229
+ }
230
+ get _state() {
231
+ return this.getAttribute("data-state");
232
+ }
174
233
  connectedCallback() {
175
234
  super.connectedCallback();
235
+ this._state = "sticky";
236
+ this.startUpdate();
176
237
  const container = this.closest("sbb-container");
177
238
  if (container) {
178
239
  this.toggleAttribute("data-expanded", container.expanded);
@@ -181,6 +242,10 @@ let SbbStickyBarElement = (() => {
181
242
  this._observer.observe(this._intersector);
182
243
  }
183
244
  }
245
+ disconnectedCallback() {
246
+ super.disconnectedCallback();
247
+ this.toggleAttribute("data-initialized", false);
248
+ }
184
249
  firstUpdated(changedProperties) {
185
250
  super.firstUpdated(changedProperties);
186
251
  if (!this._intersector) {
@@ -189,12 +254,55 @@ let SbbStickyBarElement = (() => {
189
254
  }
190
255
  this._observer.observe(this);
191
256
  }
192
- _toggleShadowVisibility(entry) {
193
- this.toggleAttribute("data-sticking", !entry.isIntersecting && entry.boundingClientRect.top > 0);
257
+ _detectStickyState(entry) {
258
+ var _a2;
259
+ this.toggleAttribute("data-initialized", true);
260
+ const isSticky = !entry.isIntersecting && entry.boundingClientRect.top > 0;
261
+ const intersectorRect = (_a2 = this._intersector) == null ? void 0 : _a2.getBoundingClientRect();
262
+ const stickyBarRect = this.shadowRoot.querySelector(".sbb-sticky-bar__wrapper").getBoundingClientRect();
263
+ const HEIGHT_TOLERANCE = 30;
264
+ this.toggleAttribute("data-slide-vertically", isSticky && this._intersector && Math.abs(intersectorRect.bottom - stickyBarRect.bottom) > HEIGHT_TOLERANCE);
265
+ this.toggleAttribute("data-sticking", isSticky);
266
+ this.completeUpdate();
267
+ }
268
+ /** Animates from normal content flow position to `position: sticky`. */
269
+ stick() {
270
+ if (this._state !== "unsticky" || !this._willStick.emit()) {
271
+ return;
272
+ }
273
+ this._state = "sticking";
274
+ if (!this.hasAttribute("data-sticking")) {
275
+ this._stickyCallback();
276
+ }
277
+ }
278
+ /** Animates `position: sticky` to normal content flow position. */
279
+ unstick() {
280
+ if (this._state !== "sticky" || !this._willUnstick.emit()) {
281
+ return;
282
+ }
283
+ this._state = "unsticking";
284
+ if (!this.hasAttribute("data-sticking")) {
285
+ this._unstickyCallback();
286
+ }
287
+ }
288
+ _stickyCallback() {
289
+ this._state = "sticky";
290
+ this._didStick.emit();
291
+ }
292
+ _unstickyCallback() {
293
+ this._didUnstick.emit();
294
+ this._state = "unsticky";
295
+ }
296
+ _onAnimationEnd(event) {
297
+ if ((this._state === "sticking" || this._state === "sticky") && event.animationName === "slide-in") {
298
+ this._stickyCallback();
299
+ } else if (this._state === "unsticking" && event.animationName === "slide-out") {
300
+ this._unstickyCallback();
301
+ }
194
302
  }
195
303
  render() {
196
304
  return html`
197
- <div class="sbb-sticky-bar__wrapper">
305
+ <div class="sbb-sticky-bar__wrapper" @animationend=${this._onAnimationEnd}>
198
306
  <div class="sbb-sticky-bar">
199
307
  <slot></slot>
200
308
  </div>
@@ -209,12 +317,17 @@ let SbbStickyBarElement = (() => {
209
317
  obj.color = value;
210
318
  } }, metadata: _metadata }, _color_initializers, _color_extraInitializers);
211
319
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
212
- _classThis = _classDescriptor.value;
320
+ SbbStickyBarElement2 = _classThis = _classDescriptor.value;
213
321
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
214
- })(), _a.styles = style, __runInitializers(_classThis, _classExtraInitializers), _a;
215
- return _classThis;
322
+ })(), _a.styles = style, _a.events = {
323
+ willStick: "willStick",
324
+ didStick: "didStick",
325
+ willUnstick: "willUnstick",
326
+ didUnstick: "didUnstick"
327
+ }, __runInitializers(_classThis, _classExtraInitializers), _a);
328
+ return SbbStickyBarElement2 = _classThis;
216
329
  })();
217
330
  export {
218
331
  SbbStickyBarElement
219
332
  };
220
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpY2t5LWJhci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvbnRhaW5lci9zdGlja3ktYmFyL3N0aWNreS1iYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW50ZXJzZWN0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvaW50ZXJzZWN0aW9uLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3N0aWNreS1iYXIuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBBIGNvbnRhaW5lciB0aGF0IHN0aWNrcyB0byB0aGUgYm90dG9tIG9mIHRoZSBwYWdlIGlmIHNsb3R0ZWQgaW50byBgc2JiLWNvbnRhaW5lcmAuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgY29udGVudCB0byB0aGUgc3RpY2t5IGJhci5cbiAqIEBjc3Nwcm9wIFstLXNiYi1zdGlja3ktYmFyLXBhZGRpbmctYmxvY2s9dmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS14cyldIC0gQmxvY2sgcGFkZGluZyBvZiB0aGUgc3RpY2t5IGJhci5cbiAqIEBjc3Nwcm9wIFstLXNiYi1zdGlja3ktYmFyLWJvdHRvbS1vdmVybGFwcGluZy1oZWlnaHQ9MHB4XSAtIERlZmluZSBhbiBhZGRpdGlvbmFsIGFyZWEgd2hlcmVcbiAqIHRoZSBzdGlja3kgYmFyIG92ZXJsYXBzIHRoZSBmb2xsb3dpbmcgY29udGVudCBvbiB0aGUgYm90dG9tLlxuICogVGhpcyBhcmVhIGJlY29tZXMgdmlzaWJsZSB3aGVuIHRoZSBzdGlja3kgYmFyIHRyYW5zaXRpb25zIGZyb20gc3RpY2t5IHRvIHRoZSBub3JtYWwgZG9jdW1lbnQgZmxvdy5cbiAqIEBjc3Nwcm9wIFstLXNiYi1zdGlja3ktYmFyLXotaW5kZXhdIC0gVG8gc3BlY2lmeSBhIGN1c3RvbSBzdGFjayBvcmRlcixcbiAqIHRoZSBgei1pbmRleGAgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgdGhpcyBDU1MgdmFyaWFibGUuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1zdGlja3ktYmFyJylcbkBob3N0QXR0cmlidXRlcyh7XG4gIHNsb3Q6ICdzdGlja3ktYmFyJyxcbn0pXG5jbGFzcyBTYmJTdGlja3lCYXJFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBDb2xvciBvZiB0aGUgY29udGFpbmVyLCBsaWtlIHRyYW5zcGFyZW50LCB3aGl0ZSBldGMuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIGNvbG9yOiAnd2hpdGUnIHwgJ21pbGsnIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfaW50ZXJzZWN0b3I/OiBIVE1MU3BhbkVsZW1lbnQ7XG4gIHByaXZhdGUgX29ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbkNvbnRyb2xsZXIodGhpcywge1xuICAgIC8vIEFsdGhvdWdoIGB0aGlzYCBpcyBvYnNlcnZlZCwgd2UgaGF2ZSB0byBwb3N0cG9uZSBvYnNlcnZpbmdcbiAgICAvLyBpbnRvIGZpcnN0VXBkYXRlZCgpIHRvIGFjaGlldmUgYSBjb3JyZWN0IGluaXRpYWwgc3RhdGUuXG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIGNhbGxiYWNrOiAoZW50cmllcykgPT4gdGhpcy5fdG9nZ2xlU2hhZG93VmlzaWJpbGl0eShlbnRyaWVzWzBdKSxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNsb3Nlc3QoJ3NiYi1jb250YWluZXInKTtcbiAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1leHBhbmRlZCcsIGNvbnRhaW5lci5leHBhbmRlZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9pbnRlcnNlY3Rvcikge1xuICAgICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9pbnRlcnNlY3Rvcik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCF0aGlzLl9pbnRlcnNlY3Rvcikge1xuICAgICAgdGhpcy5faW50ZXJzZWN0b3IgPSB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJy5zYmItc3RpY2t5LWJhcl9faW50ZXJzZWN0b3InKSE7XG4gICAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuX2ludGVyc2VjdG9yKTtcbiAgICB9XG4gICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgX3RvZ2dsZVNoYWRvd1Zpc2liaWxpdHkoZW50cnk6IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLXN0aWNraW5nJyxcbiAgICAgICFlbnRyeS5pc0ludGVyc2VjdGluZyAmJiBlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3QudG9wID4gMCxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXN0aWNreS1iYXJfX3dyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGlja3ktYmFyXCI+XG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGlja3ktYmFyX19pbnRlcnNlY3RvclwiPjwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1zdGlja3ktYmFyJzogU2JiU3RpY2t5QmFyRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQThCTSx1QkFBbUIsTUFBQTs7QUFKeEIsTUFBQSxtQkFBQSxDQUFBLGNBQWMsZ0JBQWdCLEdBQzlCLGVBQWU7QUFBQSxJQUNkLE1BQU07QUFBQSxFQUFBLENBQ1AsQ0FBQzs7OztvQkFDZ0M7Ozs7QUFBUixFQUFBLG1CQUFRLFlBQVU7QUFBQTs7QUFJYjtBQUFnQix5QkFBQSx5QkFBQSxrQkFBQSxNQUFBLHFCQUFpQyxJQUFJO0FBRTFFLFdBQUEsZUFBK0Isa0JBQUEsTUFBQSx3QkFBQTtBQUMvQixXQUFBLFlBQVksSUFBSSx1QkFBdUIsTUFBTTtBQUFBO0FBQUE7QUFBQSxRQUduRCxRQUFRO0FBQUEsUUFDUixVQUFVLENBQUMsWUFBWSxLQUFLLHdCQUF3QixRQUFRLENBQUMsQ0FBQztBQUFBLE1BQUEsQ0FDL0Q7QUFBQSxJQUFBO0FBQUE7QUFBQSxJQVI0QixJQUFnQixRQUFzQztBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBdEQsSUFBZ0IsTUFBc0MsT0FBQTtBQUFBLHlCQUFBLHlCQUFBO0FBQUEsSUFBQTtBQUFBLElBVW5FLG9CQUFpQjtBQUMvQixZQUFNLGtCQUFpQjtBQUVqQixZQUFBLFlBQVksS0FBSyxRQUFRLGVBQWU7QUFDOUMsVUFBSSxXQUFXO0FBQ1IsYUFBQSxnQkFBZ0IsaUJBQWlCLFVBQVUsUUFBUTtBQUFBLE1BQUE7QUFFMUQsVUFBSSxLQUFLLGNBQWM7QUFDaEIsYUFBQSxVQUFVLFFBQVEsS0FBSyxZQUFZO0FBQUEsTUFBQTtBQUFBLElBQzFDO0FBQUEsSUFHaUIsYUFBYSxtQkFBdUM7QUFDckUsWUFBTSxhQUFhLGlCQUFpQjtBQUVoQyxVQUFBLENBQUMsS0FBSyxjQUFjO0FBQ3RCLGFBQUssZUFBZSxLQUFLLFdBQVksY0FBYyw4QkFBOEI7QUFDNUUsYUFBQSxVQUFVLFFBQVEsS0FBSyxZQUFZO0FBQUEsTUFBQTtBQUVyQyxXQUFBLFVBQVUsUUFBUSxJQUFJO0FBQUEsSUFBQTtBQUFBLElBR3JCLHdCQUF3QixPQUFnQztBQUN6RCxXQUFBLGdCQUNILGlCQUNBLENBQUMsTUFBTSxrQkFBa0IsTUFBTSxtQkFBbUIsTUFBTSxDQUFDO0FBQUEsSUFBQTtBQUFBLElBSTFDLFNBQU07QUFDaEIsYUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQTtBQUFBLEtBeENvQjs7QUFBNUIsd0JBQUEsQ0FBQSxTQUFTLEVBQUUsU0FBUyxLQUFNLENBQUEsQ0FBQztBQUFpQixpQkFBQSxJQUFBLE1BQUEsbUJBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxTQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLFdBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLE9BQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUEsUUFBc0M7QUFBQSxTQUFBLFVBQUEsYUFBQSxxQkFBQSx3QkFBQTtBQUpyRixpQkFxREMsTUFBQSxtQkFBQSxFQUFBLE9BQUEsV0FBQSxHQUFBLGtCQUFBLEVBQUEsTUFBQSxTQUFBLE1BQUEsV0FBQSxNQUFBLFVBQUEsVUFBQSxHQUFBLE1BQUEsdUJBQUE7OztRQXBEd0IsR0FBTSxTQUFtQixPQUQ1QyxrQkFBbUIsWUFBQSx1QkFBQSxHQUFDOzs7In0=
333
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpY2t5LWJhci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvbnRhaW5lci9zdGlja3ktYmFyL3N0aWNreS1iYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW50ZXJzZWN0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvaW50ZXJzZWN0aW9uLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IFNiYlVwZGF0ZVNjaGVkdWxlck1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zdGlja3ktYmFyLnNjc3M/bGl0JmlubGluZSc7XG5cbnR5cGUgU3RpY2t5U3RhdGUgPSAnc3RpY2tpbmcnIHwgJ3N0aWNreScgfCAndW5zdGlja2luZycgfCAndW5zdGlja3knO1xuXG4vKipcbiAqIEEgY29udGFpbmVyIHRoYXQgc3RpY2tzIHRvIHRoZSBib3R0b20gb2YgdGhlIHBhZ2UgaWYgc2xvdHRlZCBpbnRvIGBzYmItY29udGFpbmVyYC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSBzdGlja3kgYmFyLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gd2lsbFN0aWNrIC0gRW1pdHMgd2hlbiB0aGUgYW5pbWF0aW9uIGZyb20gbm9ybWFsIGNvbnRlbnQgZmxvdyB0byBgcG9zaXRpb246IHN0aWNreWAgc3RhcnRzLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkaWRTdGljayAtIEVtaXRzIHdoZW4gdGhlIGFuaW1hdGlvbiBmcm9tIG5vcm1hbCBjb250ZW50IGZsb3cgdG8gYHBvc2l0aW9uOiBzdGlja3lgIGVuZHMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsVW5zdGljayAtIEVtaXRzIHdoZW4gdGhlIGFuaW1hdGlvbiBmcm9tIGBwb3NpdGlvbjogc3RpY2t5YCB0byBub3JtYWwgY29udGVudCBmbG93IHN0YXJ0cy4gQ2FuIGJlIGNhbmNlbGVkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGlkVW5zdGljayAtIEVtaXRzIHdoZW4gdGhlIGFuaW1hdGlvbiBmcm9tIGBwb3NpdGlvbjogc3RpY2t5YCB0byBub3JtYWwgY29udGVudCBmbG93IGVuZHMuXG4gKiBAY3NzcHJvcCBbLS1zYmItc3RpY2t5LWJhci1wYWRkaW5nLWJsb2NrPXZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHMpXSAtIEJsb2NrIHBhZGRpbmcgb2YgdGhlIHN0aWNreSBiYXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItc3RpY2t5LWJhci1ib3R0b20tb3ZlcmxhcHBpbmctaGVpZ2h0PTBweF0gLSBEZWZpbmUgYW4gYWRkaXRpb25hbCBhcmVhIHdoZXJlXG4gKiB0aGUgc3RpY2t5IGJhciBvdmVybGFwcyB0aGUgZm9sbG93aW5nIGNvbnRlbnQgb24gdGhlIGJvdHRvbS5cbiAqIFRoaXMgYXJlYSBiZWNvbWVzIHZpc2libGUgd2hlbiB0aGUgc3RpY2t5IGJhciB0cmFuc2l0aW9ucyBmcm9tIHN0aWNreSB0byB0aGUgbm9ybWFsIGRvY3VtZW50IGZsb3cuXG4gKiBAY3NzcHJvcCBbLS1zYmItc3RpY2t5LWJhci16LWluZGV4XSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc3RpY2t5LWJhcicpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICBzbG90OiAnc3RpY2t5LWJhcicsXG59KVxuY2xhc3MgU2JiU3RpY2t5QmFyRWxlbWVudCBleHRlbmRzIFNiYlVwZGF0ZVNjaGVkdWxlck1peGluKExpdEVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgd2lsbFN0aWNrOiAnd2lsbFN0aWNrJyxcbiAgICBkaWRTdGljazogJ2RpZFN0aWNrJyxcbiAgICB3aWxsVW5zdGljazogJ3dpbGxVbnN0aWNrJyxcbiAgICBkaWRVbnN0aWNrOiAnZGlkVW5zdGljaycsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqIENvbG9yIG9mIHRoZSBjb250YWluZXIsIGxpa2UgdHJhbnNwYXJlbnQsIHdoaXRlIGV0Yy4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3IgY29sb3I6ICd3aGl0ZScgfCAnbWlsaycgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuICovXG4gIHByaXZhdGUgc2V0IF9zdGF0ZShzdGF0ZTogU3RpY2t5U3RhdGUpIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScsIHN0YXRlKTtcbiAgfVxuICBwcml2YXRlIGdldCBfc3RhdGUoKTogU3RpY2t5U3RhdGUge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScpIGFzIFN0aWNreVN0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfd2lsbFN0aWNrOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKHRoaXMsIFNiYlN0aWNreUJhckVsZW1lbnQuZXZlbnRzLndpbGxTdGljayk7XG4gIHByaXZhdGUgX2RpZFN0aWNrOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKHRoaXMsIFNiYlN0aWNreUJhckVsZW1lbnQuZXZlbnRzLmRpZFN0aWNrKTtcbiAgcHJpdmF0ZSBfd2lsbFVuc3RpY2s6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJTdGlja3lCYXJFbGVtZW50LmV2ZW50cy53aWxsVW5zdGljayxcbiAgKTtcbiAgcHJpdmF0ZSBfZGlkVW5zdGljazogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcih0aGlzLCBTYmJTdGlja3lCYXJFbGVtZW50LmV2ZW50cy5kaWRVbnN0aWNrKTtcblxuICBwcml2YXRlIF9pbnRlcnNlY3Rvcj86IEhUTUxTcGFuRWxlbWVudDtcbiAgcHJpdmF0ZSBfb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uQ29udHJvbGxlcih0aGlzLCB7XG4gICAgLy8gQWx0aG91Z2ggYHRoaXNgIGlzIG9ic2VydmVkLCB3ZSBoYXZlIHRvIHBvc3Rwb25lIG9ic2VydmluZ1xuICAgIC8vIGludG8gZmlyc3RVcGRhdGVkKCkgdG8gYWNoaWV2ZSBhIGNvcnJlY3QgaW5pdGlhbCBzdGF0ZS5cbiAgICB0YXJnZXQ6IG51bGwsXG4gICAgY2FsbGJhY2s6IChlbnRyaWVzKSA9PiB0aGlzLl9kZXRlY3RTdGlja3lTdGF0ZShlbnRyaWVzWzBdKSxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fc3RhdGUgPSAnc3RpY2t5JztcblxuICAgIC8vIFN0aWNreSBiYXIgbmVlZHMgdG8gYmUgaGlkZGVuIHVudGlsIGZpcnN0IG9ic2VydmVyIGNhbGxiYWNrXG4gICAgdGhpcy5zdGFydFVwZGF0ZSgpO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jbG9zZXN0KCdzYmItY29udGFpbmVyJyk7XG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnLCBjb250YWluZXIuZXhwYW5kZWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5faW50ZXJzZWN0b3IpIHtcbiAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5faW50ZXJzZWN0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaW5pdGlhbGl6ZWQnLCBmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIXRoaXMuX2ludGVyc2VjdG9yKSB7XG4gICAgICB0aGlzLl9pbnRlcnNlY3RvciA9IHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignLnNiYi1zdGlja3ktYmFyX19pbnRlcnNlY3RvcicpITtcbiAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5faW50ZXJzZWN0b3IpO1xuICAgIH1cbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGV0ZWN0U3RpY2t5U3RhdGUoZW50cnk6IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1pbml0aWFsaXplZCcsIHRydWUpO1xuXG4gICAgY29uc3QgaXNTdGlja3kgPSAhZW50cnkuaXNJbnRlcnNlY3RpbmcgJiYgZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LnRvcCA+IDA7XG5cbiAgICAvLyBUbyBvcHRpbWl6ZSB0aGUgdmlzdWFsIHBlcmNlcHRpb24gb2YgdGhlIHN0aWNreSBiYXIsIHdlIGhhdmUgY2VydGFpbiBjYXNlcyAoZS5nLiBvbiBwYWdlIGxvYWQpXG4gICAgLy8gd2hlcmUgd2Ugd2FudCB0aGUgc3RpY2t5IGJhciB0byBzbGlkZSBpbiBmcm9tIHRoZSBib3R0b20uXG4gICAgLy8gVG8gZGVjaWRlIHdoZXRoZXIgdG8gc2xpZGUgaW4gZnJvbSB0aGUgYm90dG9tIHVwLFxuICAgIC8vIHdlIGNoZWNrIGhvdyBmYXIgYXdheSB0aGUgc3RpY2t5IGJhciBpcyBmcm9tIHRoZSBpbnRlcnNlY3RvciBlbGVtZW50LiBXaGVuIHNjcm9sbGluZyBmYXN0LCB0aGVcbiAgICAvLyBkaWZmZXJlbmNlIGNhbiB2YXJ5IHNsaWdodGx5LiBUbyBhY2NvdW50IGZvciB0aGlzIHdlIGFkZCBhIGhlaWdodCB0b2xlcmFuY2UuXG4gICAgLy8gVGhpcyB2YWx1ZSB3YXMgZm91bmQgYnkgdHJpYWwgYW5kIGVycm9yLlxuICAgIGNvbnN0IGludGVyc2VjdG9yUmVjdCA9IHRoaXMuX2ludGVyc2VjdG9yPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBzdGlja3lCYXJSZWN0ID0gdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKFxuICAgICAgJy5zYmItc3RpY2t5LWJhcl9fd3JhcHBlcicsXG4gICAgKSEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgSEVJR0hUX1RPTEVSQU5DRSA9IDMwO1xuXG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1zbGlkZS12ZXJ0aWNhbGx5JyxcbiAgICAgIGlzU3RpY2t5ICYmXG4gICAgICAgIHRoaXMuX2ludGVyc2VjdG9yICYmXG4gICAgICAgIE1hdGguYWJzKGludGVyc2VjdG9yUmVjdCEuYm90dG9tIC0gc3RpY2t5QmFyUmVjdC5ib3R0b20pID4gSEVJR0hUX1RPTEVSQU5DRSxcbiAgICApO1xuXG4gICAgLy8gVG9nZ2xpbmcgZGF0YS1zdGlja2luZyBoYXMgdG8gYmUgYWZ0ZXIgZGF0YS1zbGlkZS12ZXJ0aWNhbGx5IChwcmV2ZW50cyBiYWNrZ3JvdW5kIGNvbG9yIHRyYW5zaXRpb24pXG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc3RpY2tpbmcnLCBpc1N0aWNreSk7XG5cbiAgICAvLyBTdGlja3kgYmFyIG5lZWRzIHRvIGJlIGhpZGRlbiB1bnRpbCBmaXJzdCBvYnNlcnZlciBjYWxsYmFja1xuICAgIHRoaXMuY29tcGxldGVVcGRhdGUoKTtcbiAgfVxuXG4gIC8qKiBBbmltYXRlcyBmcm9tIG5vcm1hbCBjb250ZW50IGZsb3cgcG9zaXRpb24gdG8gYHBvc2l0aW9uOiBzdGlja3lgLiAqL1xuICBwdWJsaWMgc3RpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3N0YXRlICE9PSAndW5zdGlja3knIHx8ICF0aGlzLl93aWxsU3RpY2suZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGUgPSAnc3RpY2tpbmcnO1xuICAgIGlmICghdGhpcy5oYXNBdHRyaWJ1dGUoJ2RhdGEtc3RpY2tpbmcnKSkge1xuICAgICAgdGhpcy5fc3RpY2t5Q2FsbGJhY2soKTtcbiAgICB9XG4gIH1cblxuICAvKiogQW5pbWF0ZXMgYHBvc2l0aW9uOiBzdGlja3lgIHRvIG5vcm1hbCBjb250ZW50IGZsb3cgcG9zaXRpb24uICovXG4gIHB1YmxpYyB1bnN0aWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zdGF0ZSAhPT0gJ3N0aWNreScgfHwgIXRoaXMuX3dpbGxVbnN0aWNrLmVtaXQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlID0gJ3Vuc3RpY2tpbmcnO1xuXG4gICAgaWYgKCF0aGlzLmhhc0F0dHJpYnV0ZSgnZGF0YS1zdGlja2luZycpKSB7XG4gICAgICB0aGlzLl91bnN0aWNreUNhbGxiYWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc3RpY2t5Q2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUgPSAnc3RpY2t5JztcbiAgICB0aGlzLl9kaWRTdGljay5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIF91bnN0aWNreUNhbGxiYWNrKCk6IHZvaWQge1xuICAgIHRoaXMuX2RpZFVuc3RpY2suZW1pdCgpO1xuICAgIHRoaXMuX3N0YXRlID0gJ3Vuc3RpY2t5JztcbiAgfVxuXG4gIHByaXZhdGUgX29uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgICh0aGlzLl9zdGF0ZSA9PT0gJ3N0aWNraW5nJyB8fCB0aGlzLl9zdGF0ZSA9PT0gJ3N0aWNreScpICYmXG4gICAgICBldmVudC5hbmltYXRpb25OYW1lID09PSAnc2xpZGUtaW4nXG4gICAgKSB7XG4gICAgICB0aGlzLl9zdGlja3lDYWxsYmFjaygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fc3RhdGUgPT09ICd1bnN0aWNraW5nJyAmJiBldmVudC5hbmltYXRpb25OYW1lID09PSAnc2xpZGUtb3V0Jykge1xuICAgICAgdGhpcy5fdW5zdGlja3lDYWxsYmFjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGlja3ktYmFyX193cmFwcGVyXCIgQGFuaW1hdGlvbmVuZD0ke3RoaXMuX29uQW5pbWF0aW9uRW5kfT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGlja3ktYmFyXCI+XG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGlja3ktYmFyX19pbnRlcnNlY3RvclwiPjwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1zdGlja3ktYmFyJzogU2JiU3RpY2t5QmFyRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlNiYlN0aWNreUJhckVsZW1lbnQiLCJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXNDTSx1QkFBbUIsTUFBQTs7QUFKeEIsTUFBQSxtQkFBQSxDQUFBLGNBQWMsZ0JBQWdCLEdBQzlCLGVBQWU7QUFBQSxJQUNkLE1BQU07QUFBQSxFQUFBLENBQ1AsQ0FBQzs7OztvQkFDZ0Msd0JBQXdCLFVBQVU7Ozs7QUFBMUNBLE1BQUFBLHdCQUFBLG1CQUFRLFlBQW1DO0FBQUE7O0FBV3RDO0FBQWdCLHlCQUFBLHlCQUFBLGtCQUFBLE1BQUEscUJBQWlDLElBQUk7QUFVMUUsV0FBQSxjQUEyQixrQkFBQSxNQUFBLHdCQUFBLEdBQUEsSUFBSSxhQUFhLE1BQU1BLHFCQUFvQixPQUFPLFNBQVM7QUFDdEYsV0FBQSxZQUEwQixJQUFJLGFBQWEsTUFBTUEscUJBQW9CLE9BQU8sUUFBUTtBQUNwRixXQUFBLGVBQTZCLElBQUksYUFDdkMsTUFDQUEscUJBQW9CLE9BQU8sV0FBVztBQUVoQyxXQUFBLGNBQTRCLElBQUksYUFBYSxNQUFNQSxxQkFBb0IsT0FBTyxVQUFVO0FBR3hGLFdBQUEsWUFBWSxJQUFJLHVCQUF1QixNQUFNO0FBQUE7QUFBQTtBQUFBLFFBR25ELFFBQVE7QUFBQSxRQUNSLFVBQVUsQ0FBQyxZQUFZLEtBQUssbUJBQW1CLFFBQVEsQ0FBQyxDQUFDO0FBQUEsTUFBQSxDQUMxRDtBQUFBLElBQUE7QUFBQTtBQUFBLElBeEI0QixJQUFnQixRQUFzQztBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBdEQsSUFBZ0IsTUFBc0MsT0FBQTtBQUFBLHlCQUFBLHlCQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFHbkYsSUFBWSxPQUFPLE9BQWtCO0FBQzlCLFdBQUEsYUFBYSxjQUFjLEtBQUs7QUFBQSxJQUFBO0FBQUEsSUFFdkMsSUFBWSxTQUFNO0FBQ1QsYUFBQSxLQUFLLGFBQWEsWUFBWTtBQUFBLElBQUE7QUFBQSxJQW1CdkIsb0JBQWlCO0FBQy9CLFlBQU0sa0JBQWlCO0FBQ3ZCLFdBQUssU0FBUztBQUdkLFdBQUssWUFBVztBQUVWLFlBQUEsWUFBWSxLQUFLLFFBQVEsZUFBZTtBQUM5QyxVQUFJLFdBQVc7QUFDUixhQUFBLGdCQUFnQixpQkFBaUIsVUFBVSxRQUFRO0FBQUEsTUFBQTtBQUUxRCxVQUFJLEtBQUssY0FBYztBQUNoQixhQUFBLFVBQVUsUUFBUSxLQUFLLFlBQVk7QUFBQSxNQUFBO0FBQUEsSUFDMUM7QUFBQSxJQUdjLHVCQUFvQjtBQUNsQyxZQUFNLHFCQUFvQjtBQUVyQixXQUFBLGdCQUFnQixvQkFBb0IsS0FBSztBQUFBLElBQUE7QUFBQSxJQUc3QixhQUFhLG1CQUF1QztBQUNyRSxZQUFNLGFBQWEsaUJBQWlCO0FBRWhDLFVBQUEsQ0FBQyxLQUFLLGNBQWM7QUFDdEIsYUFBSyxlQUFlLEtBQUssV0FBWSxjQUFjLDhCQUE4QjtBQUM1RSxhQUFBLFVBQVUsUUFBUSxLQUFLLFlBQVk7QUFBQSxNQUFBO0FBRXJDLFdBQUEsVUFBVSxRQUFRLElBQUk7QUFBQSxJQUFBO0FBQUEsSUFHckIsbUJBQW1CLE9BQWdDOztBQUNwRCxXQUFBLGdCQUFnQixvQkFBb0IsSUFBSTtBQUU3QyxZQUFNLFdBQVcsQ0FBQyxNQUFNLGtCQUFrQixNQUFNLG1CQUFtQixNQUFNO0FBUW5FLFlBQUEsbUJBQWtCQyxNQUFBLEtBQUssaUJBQUwsZ0JBQUFBLElBQW1CO0FBQzNDLFlBQU0sZ0JBQWdCLEtBQUssV0FBWSxjQUNyQywwQkFBMEIsRUFDekI7QUFDSCxZQUFNLG1CQUFtQjtBQUV6QixXQUFLLGdCQUNILHlCQUNBLFlBQ0UsS0FBSyxnQkFDTCxLQUFLLElBQUksZ0JBQWlCLFNBQVMsY0FBYyxNQUFNLElBQUksZ0JBQWdCO0FBSTFFLFdBQUEsZ0JBQWdCLGlCQUFpQixRQUFRO0FBRzlDLFdBQUssZUFBYztBQUFBLElBQUE7QUFBQTtBQUFBLElBSWQsUUFBSztBQUNWLFVBQUksS0FBSyxXQUFXLGNBQWMsQ0FBQyxLQUFLLFdBQVcsUUFBUTtBQUN6RDtBQUFBLE1BQUE7QUFHRixXQUFLLFNBQVM7QUFDZCxVQUFJLENBQUMsS0FBSyxhQUFhLGVBQWUsR0FBRztBQUN2QyxhQUFLLGdCQUFlO0FBQUEsTUFBQTtBQUFBLElBQ3RCO0FBQUE7QUFBQSxJQUlLLFVBQU87QUFDWixVQUFJLEtBQUssV0FBVyxZQUFZLENBQUMsS0FBSyxhQUFhLFFBQVE7QUFDekQ7QUFBQSxNQUFBO0FBR0YsV0FBSyxTQUFTO0FBRWQsVUFBSSxDQUFDLEtBQUssYUFBYSxlQUFlLEdBQUc7QUFDdkMsYUFBSyxrQkFBaUI7QUFBQSxNQUFBO0FBQUEsSUFDeEI7QUFBQSxJQUdNLGtCQUFlO0FBQ3JCLFdBQUssU0FBUztBQUNkLFdBQUssVUFBVTs7SUFHVCxvQkFBaUI7QUFDdkIsV0FBSyxZQUFZO0FBQ2pCLFdBQUssU0FBUztBQUFBLElBQUE7QUFBQSxJQUdSLGdCQUFnQixPQUFxQjtBQUV4QyxXQUFBLEtBQUssV0FBVyxjQUFjLEtBQUssV0FBVyxhQUMvQyxNQUFNLGtCQUFrQixZQUN4QjtBQUNBLGFBQUssZ0JBQWU7QUFBQSxNQUFBLFdBQ1gsS0FBSyxXQUFXLGdCQUFnQixNQUFNLGtCQUFrQixhQUFhO0FBQzlFLGFBQUssa0JBQWlCO0FBQUEsTUFBQTtBQUFBLElBQ3hCO0FBQUEsSUFHaUIsU0FBTTtBQUNoQixhQUFBO0FBQUEsMkRBQ2dELEtBQUssZUFBZTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUE7QUFBQSxLQXpJaEQ7O0FBQTVCLHdCQUFBLENBQUEsU0FBUyxFQUFFLFNBQVMsS0FBTSxDQUFBLENBQUM7QUFBaUIsaUJBQUEsSUFBQSxNQUFBLG1CQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsU0FBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxXQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxPQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLFFBQXNDO0FBQUEsU0FBQSxVQUFBLGFBQUEscUJBQUEsd0JBQUE7QUFYckYsaUJBNEpDLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7UUEzSndCLEdBQU0sU0FBbUIsT0FFekIsR0FBQSxTQUFTO0FBQUEsSUFDOUIsV0FBVztBQUFBLElBQ1gsVUFBVTtBQUFBLElBQ1YsYUFBYTtBQUFBLElBQ2IsWUFBWTtBQUFBLEVBQ0osR0FSTixrQkFBbUIsWUFBQSx1QkFBQSxHQUFDOzs7In0=